加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python程序发送email的源码

发布时间:2020-12-20 10:56:57 所属栏目:Python 来源:网络整理
导读:把开发过程经常用的代码段收藏起来,下边代码段是关于python程序发送email的的代码,应该是对码农们有一些好处。 server = ‘smtp.gmail.com:587‘;#importsfrom time import sleep;import smtplib;from email.mime.application import MIMEApplicationfrom
把开发过程经常用的代码段收藏起来,下边代码段是关于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,0);

    # check for bcc
    if (bcc_address != ‘‘):
        msg[‘Bcc‘] = bcc_address;
        send_email(server,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([‘[email?protected]‘,‘‘,‘‘],‘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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读