近日在用Python编写邮件发送脚本时遇到的一些问题,解决问题后总结出如下的脚本,以供大家参考。
#coding=utf-8 from smtplib import SMTP from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.header import Header #邮件正文模板 SendHtml = """ <html> <h1>验证性测试:</h1> <p>看到此段文字说明测试通过。</p> <a href="https://www.hao123.com/">hao123</a> <br> <a href="https://www.baidu.com/?tn=sitehao123">baidu</a> <br> <a href="http://www.runoob.com/">菜鸟教程</a> <br> <p><img src="cid:image" alt="兔子" width="100" height="100"></a></p> <br> <a href="https://baike.baidu.com/item/蝴蝶效应/9283471">Dear 兔子:<br>如果此生只能遇见你一次,愿我带给你的,是最圆满的结局。</a> </html> """ print "输入发送邮箱服务器" smtpserver = "smtp.sina.com" print "输入发送人邮箱用户/密码" user = "[email protected]" password = "xxx" print "输入发送人邮箱" sender = "[email protected]" print "输入接收人邮箱" receiver = ["[email protected]","[email protected]"] print "输入接收人(抄送)邮箱" C_receiver = ["[email protected]"] print "输入发送邮件主题" subject = "Mail Python Test <验证>" print "编写Html类型邮件正文" msg = MIMEMultipart("related") msg["Subject"]=Header(subject,"utf-8") msg['From'] = Header(user) #发件人 msg['to'] = Header(",".join(receiver)) #收件人(主送) msg['Cc'] = Header(",".join(C_receiver)) #收件人(抄送) msgText = MIMEText(SendHtml,"html","utf-8") msg.attach(msgText) #添加邮件正文到邮件中 print "输入发送附件" FilePath = "C:\Users\TZ.png".decode("utf-8") sendfile = open(FilePath,"rb").read() addfile = MIMEText(sendfile,"base64","utf-8") addfile["Content-Type"] = "application/octet-stream" addfile["Content-Disposition"] = "attachment; filename={}".format(FilePath.split("\\")[-1]) msg.attach(addfile) #添加附件到邮件中 print "邮件正文中添加图片" fp = open(FilePath, 'rb') msgImage = MIMEImage(fp.read()) fp.close() # 定义图片 ID,在 HTML 文本中引用 msgImage.add_header('Content-ID', '<image>') msg.attach(msgImage) print "连接发送邮件" smtp = SMTP() smtp.connect(smtpserver) smtp.login(user, password) smtp.sendmail(from_addr=sender, to_addrs=receiver+C_receiver, msg=msg.as_string()) smtp.quit() print "发送完毕"