美文网首页
python程序发送email的源码

python程序发送email的源码

作者: we1212 | 来源:发表于2021-10-19 14:27 被阅读0次

    把开发过程经常用的代码段收藏起来,下边代码段是关于python程序发送email的的代码,应该是对码农们有一些好处。

    server = 'smtp.gmail.com:587';

    #imports

    from time import sleep;

    import smtplib;

    from email.mime.application import MIMEApplication

    from email.mime.text import MIMEText;

    from email.mime.multipart import MIMEMultipart;

    # takes addresses to, from cc and a subject

    def create_msg(to_address,

                  from_address='',

                  cc_address='',

                  bcc_address='',

                  subject=''):

       

        msg = MIMEMultipart();

        msg['Subject'] = subject;

        msg['To'] = to_address;

        msg['Cc'] = cc_address;

        msg['From'] = from_address;

        return msg;

    # if mode = 0 sends to and cc

    # if mode = 1 sends to bcc

    def send_email(smtp_address, usr, password, msg, mode):

        server = smtplib.SMTP(smtp_address);

        server.ehlo();

        server.starttls();

        server.ehlo();

        server.login(username,password);

        if (mode == 0 and msg['To'] != ''):

            server.sendmail(msg['From'],(msg['To']+msg['Cc']).split(","), msg.as_string());

        elif (mode == 1 and msg['Bcc'] != ''):

            server.sendmail(msg['From'],msg['Bcc'].split(","),msg.as_string());

        elif (mode != 0 and mode != 1):

            print 'error in send mail bcc'; print 'email cancled'; exit();

        server.quit();

    # compose email

    # takes all the details for an email and sends it

    # address format: list, [0] - to

    #                      [1] - cc

    #                      [2] - bcc

    # subject format: string

    # body format: list of pairs [0] - text

    #                            [1] - type:

    #    0 - plain

    #    1 - html

    # files is list of strings

    def compose_email(addresses, subject, body, files):

        # addresses

        to_address = addresses[0];

        cc_address = addresses[1];

        bcc_address = addresses[2];

        # create a message

        msg = create_msg(to_address, cc_address=cc_address , subject=subject);

        # add text

        for text in body:

            attach_text(msg, text[0], text[1]);

        # add files

        if (files != ''):

            file_list = files.split(',');

            for afile in file_list:

                attach_file(msg, afile);

        # send message

        send_email(server, username, password, msg, 0);

        # check for bcc

        if (bcc_address != ''):

            msg['Bcc'] = bcc_address;

            send_email(server, username, password, msg, 1);

           

        print 'email sent'

    # attach text

    # attaches a plain text or html text to a message

    def attach_text(msg, atext, mode):

        part = MIMEText(atext, get_mode(mode));

        msg.attach(part);

    # util function to get mode type

    def get_mode(mode):

        if (mode == 0):

            mode = 'plain';

        elif (mode == 1):

            mode = 'html';

        else:

            print 'error in text kind'; print 'email cancled'; exit();

        return mode;

    # attach file

    # takes the message and a file name and attaches the file to the message

    def attach_file(msg, afile):

        part = MIMEApplication(open(afile, "rb").read());

        part.add_header('Content-Disposition', 'attachment', filename=afile);

        msg.attach(part);

    #to be tested...

    compose_email(['cpt@thelivingpearl.com','',''],

                  'test v.5.0',

                  [['some text goes here...n',0]],

                  '');

                 

    #compose_email can take the following arguments:

    # 1. to recipients (separated by a comma)

    # 2. cc recipients (separated by a comma)

    # 3. bcc recipients (separated by a comma)

    # 4. subject

    # 5. a list with message and mode (plain txt or html)

    # 6. files to be attached

                                   

                           

                   

                   

               

               

                   

    相关文章

      网友评论

          本文标题:python程序发送email的源码

          本文链接:https://www.haomeiwen.com/subject/fljaoltx.html