python发送邮件(给多人)及注意事项
2020-06-09 本文已影响0人
我只是一只小QA
python发送邮件(给多人)及注意事项
import smtplib
from email.mime.text import MIMEText
recv_list=['xxx@qq.com','xxx@163.com']#以列表形式配置
email_content='测试发送邮件123456'
#发送邮件 参数:邮件内容,收件人列表
def send_email(email_content,recv_list):
#发件人信息
username_send = 'xxx@163.com' #邮箱用户名
password_send = 'xxxxxxxx' #邮箱授权码(*这里需要使用授权码,区分开邮箱密码)
#收件人
username_recv=','.join(recv_list)#返回,相隔的字符串
#邮件信息
mail['Subject'] = 'xxxxx报告'#邮件标题
#email_content=email_content.encode('gbk')#邮件内容看需要是否要转编码
mail = MIMEText(email_content)#邮件内容
mail['From'] = username_send #发件人
mail['To'] = username_recv #收件人;一定要是一个str,不然会报错“AttributeError: 'list' object has no attribute 'lstrip'”
smtp = smtplib.SMTP("smtp.163.com",port=25) # 连接163邮箱服务器,smtp的端口号是25
#smtp=smtplib.SMTP_SSL('smtp.qq.com',port=465) #QQ邮箱的服务器和端口号
smtp.login(username_send,password_send) #登录邮箱
smtp.sendmail(username_send,username_recv.split(','),mail.as_string())# 参数分别是发送者,接收者,第三个参数是将发送邮件的内容变成字符串
smtp.quit()#手动登出smtp
print (u'邮件发送成功!')
send_email(email_content,recv_list)
注意点:
1.发送的邮箱,需要的是授权码而不是邮箱密码(授权码是用于登录第三方邮件客户端的专用密码)
如何获得授权码?以163邮箱为例
1)登录邮箱,找到左上角设置-->POP3/SMTP/IMAP-->授权密码管理-->添加授权码即可
2)成功添加后的界面
image.png
2.msg['To'] 字段一定要是str类型,否则会报错
收件人需要注意的点:
1)一定要是str类型,','.join会返回以 ,相隔的字符串类型
username_recv=','.join(recv_list)
mail['To'] = username_recv
2)传参时,需要以,(英文的逗号)分割字符串,否则只会发第一个邮箱
smtp.sendmail(username_send,username_recv.split(','),mail.as_string())