代码实现了发邮件:
#Header包是用来处理邮件基本信息(发送者、接收者、邮件的标题)
from email.header import Header
#MIMEText邮件文本内容
from email.mime.text import MIMEText
#发邮件所要用的工具包
from email.utils import parseaddr,formataddr
import smtplib
def title(s):
print(s)
name,addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
#发送者
fromAddr = '发送邮箱'
#授权码
password = '授权码'
#接收者
toAddr = '接受邮箱'
#协议服务器
server = 'smtp.163.com'
port = 25
#邮件正文
msg = MIMEText('发红包啦~~~', 'plain', 'utf-8')
# msg = MIMEText('消息', 'plain', 'utf-8')
#邮件标题
msg['Subject'] = Header('粉少女战士', 'utf-8').encode()
#邮件发送者昵称
msg['From'] = title('啦啦啦<%s>' % fromAddr)
#邮件接受者昵称
msg['To'] = title('<%s>' % toAddr)
server = smtplib.SMTP(server, port)
server.login(fromAddr, password)
server.sendmail(fromAddr, [toAddr], msg.as_string())
server.quit() #记得关闭
报错方式为:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb9 in position 0: invalid start byte
原因:Unicode编码格式不统一。
解决方式为:
电脑名不能是中文名,将自己的电脑名称改为英文,重启电脑即可。