标签:base64编码 示例 内容 format turn str plain 简单 enc
from email import encoders from email.header import Header from email.mime.base import MIMEBase from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.utils import parseaddr, formataddr import smtplib #格式化一个邮件地址。注意:不能简单地传入name <addr@example.com>,因为如果包含中文,需要通过Header对象进行编码。 def _format_addr(s): name, addr = parseaddr(s) return formataddr((Header(name, ‘utf-8‘).encode(), addr)) if __name__ == ‘__main__‘: # 输入Email地址和口令: from_addr = ‘mufeng110119@163.com‘ password = ‘LEI547120180‘ # 输入收件人地址: to_addr = ‘renlei_it@163.com‘ # 输入SMTP服务器地址: smtp_server = ‘smtp.163.com‘ # 邮件对象: msg = MIMEMultipart() # 发件人 显示有好的名称 msg[‘From‘] = _format_addr(‘发送者 <%s>‘ % from_addr) # 收件人 显示有好的名称 msg[‘To‘]接收的是字符串而不是list,如果有多个邮件地址,用,分隔即可。 msg[‘To‘] = _format_addr(‘接收者 <%s>‘ % to_addr) # 邮件标题 msg[‘Subject‘] = Header(‘来自SMTP的问候……‘, ‘utf-8‘).encode() # 邮件正文是MIMEText,第一个参数:邮件正文; 第二个参数:‘plain‘表示纯文本||‘html‘表示HTML邮件 第三个参数:utf-8编码保证多语言兼容性 text = MIMEText(‘hello, send by Python...‘, ‘plain‘, ‘utf-8‘) #将邮件正文添加到邮件对象中 msg.attach(text) # 添加附件就是加上一个MIMEBase,从本地读取一个图片: with open(‘C:\\Users\\msi\\Desktop\\微信图片_20180822095116.jpg‘, ‘rb‘) as f: # 设置附件的MIME和文件名,这里是png类型: mime = MIMEBase(‘jpg‘, ‘png‘, filename=‘test.jpg‘) # 加上必要的头信息: mime.add_header(‘Content-Disposition‘, ‘attachment‘, filename=‘test.jpg‘) mime.add_header(‘Content-ID‘, ‘<0>‘) mime.add_header(‘X-Attachment-Id‘, ‘0‘) # 把附件的内容读进来: mime.set_payload(f.read()) # 用Base64编码: encoders.encode_base64(mime) # 添加到MIMEMultipart: msg.attach(mime) # SMTP协议默认端口是25 server = smtplib.SMTP(smtp_server, 25) #打印出和SMTP服务器交互的所有信息 server.set_debuglevel(1) # 登录SMTP服务器 server.login(from_addr, password) # 发邮件,由于可以一次发给多个人,所以传入一个list,邮件正文是一个str,as_string() 把MIMEText对象变成str。 server.sendmail(from_addr, [to_addr], msg.as_string()) #退出 server.quit()
成功发送示例如下图:
如遇到权限或者授权码问题,请参考:java发送邮件
附:java发送邮件
标签:base64编码 示例 内容 format turn str plain 简单 enc
原文地址:https://www.cnblogs.com/mufengforward/p/10215683.html