内容:python3发送邮件
笔记:
1. 错误smtplib.SMTPDataError: (554, b'DT:SPM
只赋值了msg['Subject'], 没有赋值msg['From'], msg['To'],导致出现554情况,即添加:
msg['From'] = sender
msg['To'] = receiver
2. Error:无法发送邮件.Case:(550, b'User hasno permission')
我们使用python发送邮件时相当于自定义客户端根据用户名和密码登录,然后使用SMTP服务发送邮件,新注册的163邮箱是默认不开启客户端授权的,因此登录总是被拒绝
解决办法:进入163邮箱-设置-客户端授权密码-开启(授权码是用于登录第三方邮件客户端的专用密码),与登录密码不同。开启后在程序中将
3. 邮件主题的设置
msg['Subject'] =Header(
'Python3测试邮件',’utf-8’)
(需导入from email.header import Header)
msg['Subject'] = 'Python3测试邮件'
msg['Subject'] = 'Python3 test email'
4. 邮件发送
a) 发送多人
错误:ModuleNotFoundError: No module named 'email.mime'; 'email' is not apackage
解决:将原email.py更名为email_conten.py
receiver =
'1755897460@qq.com,294685704@qq.com' #多人邮箱
stmp.sendmail(sender,receiver.split(','),msg.as_string())
#发送给多人
b) 抄送
acc = '294685704@qq.com' #抄送邮箱
msg['Cc'] = acc
stmp.sendmail(sender,receiver+acc,msg.as_string()) #发送邮件+抄送邮件
备注:抄送多人可参考发送多人的方法
c) 发送图片(将图片作为附件+插入图片)
msgimage = MIMEImage(fp.read())
(导入from email.mime.image import MIMEImage)
d) 发送文件
msg = MIMEMultipart() #创建一个带附件的实例
(导入from email.mime.multipart importMIMEMultipart)
5. Python3发送email的方式
1) 登录第三方smtp邮箱发送邮件,支持25和465端口
stmp = smtplib.SMTP(smtpserver,25) #smtp port 25
stmp = smtplib.SMTP_SSL(smtpserver,465) #SMTP_SSL
2) 登录smtp服务器
stmp = smtplib.SMTP()
stmp.connect(smtpserver)
备注:smtpserver为发送邮箱的服务器,比如smtp.163.com
网友评论