美文网首页
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