美文网首页
python发送邮件(给多人)及注意事项

python发送邮件(给多人)及注意事项

作者: 我只是一只小QA | 来源:发表于2020-06-09 21:09 被阅读0次

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-->授权密码管理-->添加授权码即可

image.png
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())

相关文章

网友评论

      本文标题:python发送邮件(给多人)及注意事项

      本文链接:https://www.haomeiwen.com/subject/jtgetktx.html