python完整实现发送邮件流程

最近需要写个监控程序,需要用将结果以邮件的形式将结果进行通知. 这里把完整的实施过程给整理一下.
第一步,自然是先准备个用于发送邮件的邮箱了
这里,我去163邮箱注册了一个邮箱地址.这里为了在客户端发送邮件,需要对注册好后的邮箱进行设置一下.163邮箱很容易设置. 网页端登进邮箱主页后,点击设置选项后,在下拉菜单里面点击POP3/SMTP/IMAP.这时,左侧页面会有客户端授权密码一栏,点击这一栏, 网页右侧出现设置客户端授权密码,默认是关闭的,因为我们需要用程序发送邮件,程序本身就被当成客户端,所以这里需要点击开启,开启后会自从弹出界面,让你设置授权码(这个授权码是用在程序里面使用的).按照其说明,设置完毕后,就可以了. 这样这个邮箱就可以用在程序里面进行操作了
第二步,程序化执行
这里我们利用python进行实现,当然也可以用其它语言进行操作,只要按照需要输入相应的内容就可以了

# coding: utf-8
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
sender = '[email protected]'
receiver = list()#接收者列表
receiver.append('[email protected]')
copyReceive = list()#抄送者列表
copyReceive.append(sender)#将发件人添加到抄送列表
username = '[email protected]'#发件人邮箱账号
password = '****'#授权密码
mailall=MIMEMultipart()
mailall['Subject'] = "测试邮件主题" #记住一定要设置,并且要稍微正式点
mailall['From'] = sender #发件人邮箱
mailall['To'] = ';'.join(receiver) #收件人邮箱,不同收件人邮箱之间用;分割
mailall['CC'] = ';'.join(copyReceive)  #抄送邮箱
mailcontent = '测试邮件正文'
mailall.attach(MIMEText(mailcontent, 'plain', 'utf-8'))
mailAttach = '测试邮件附件内容'
contype = 'application/octet-stream'
maintype, subtype = contype.split('/', 1)
filename = '附加文件.txt'#附件文件所在路径
attfile = MIMEBase(maintype, subtype)
attfile.set_payload(open(filename, 'rb').read())
attfile.add_header('Content-Disposition', 'attachment',filename=('utf-8', '', filename))#必须加上第三个参数,用于格式化输出
mailall.attach(attfile)
fullmailtext = mailall.as_string()
smtp = smtplib.SMTP()
smtp.connect('smtp.163.com')
smtp.login(username, password)
smtp.sendmail(sender, receiver+copyReceive, fullmailtext)#发送的时候需要将收件人和抄送者全部添加到函数第二个参数里
smtp.quit()

猜你喜欢

转载自blog.csdn.net/jxhaha/article/details/78590621