不为别的,只为做一个连自己都羡慕的人

python实现邮件发送

邮件实现代码如下:

import smtplib
from
email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.application import MIMEApplication def toEmail(path):
path_arr
= path.split("/") filename = path_arr[-1] # 登陆邮箱 sent = smtplib.SMTP() sent.connect('smtp.qq.com', 25) mail_name = "xxx@qq.com" # 发送人邮箱地址 mail_password = "****" # 注意:这里不是密码,而应该填写授权码!! sent.login(mail_name, mail_password) # 登陆 # 编辑邮件内容 to = ["xxx@163.com"] # receiver 可以是一个list '1379091501@qq.com', '985971754@qq.com' , # content = MIMEText('你好,我是圣洁不吃冰淇淋🍦') # 正文内容 # content = MIMEText('你好,我是圣洁不吃冰淇淋🍦', 'docx', 'utf-8') # 正文内容 content = MIMEMultipart('related') # content['Subject'] = "最新消息" content['Subject'] = filename.replace(".docx", "") # 邮件标题 content['From'] = mail_name # 发件人 content['To'] = ','.join(to) # 收件人,用逗号连接多个邮件,实现群发 # attach_table = MIMEApplication(open("D:\\programming\\Replay\\updater\\report\\海洋新闻.docx", 'rb').read()) # attach_table.add_header('content-disposition', 'attachment', filename="海洋新闻.docx") attach_table = MIMEApplication(open(path, 'rb').read()) attach_table.add_header('content-disposition', 'attachment', filename=filename) attach_table.set_charset('utf-8') content.attach(attach_table) # 发送邮件 try: sent.sendmail(mail_name, to, content.as_string()) # 3个参数 发送人,收件人,邮件内容 print('Success') sent.close() except smtplib.SMTPException: print("Error:Fail") if __name__ == '__main__': path = r'D:\programming\Replay\emailTest/report/news2021-06-20日14时推送.docx' toEmail(path)

 然后你就会收到这样得报错信息:

 

 

 报错得原因是在于:

报错是出在sent.login(mail_name, mail_password)这个语句。

原因在于登陆时候,需要使用授权码替代密码。QQ邮箱推出了授权码,授权码用于第三方客户端登录,代替了第三方登录时使用的个人邮箱密码。

如何获取授权码:

获取授权码一点都不复杂,

1. 登陆qq邮箱,点击“设置” — “账户”。

2.找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务” ,点击“开启” SMTP服务。

 

3.根据提示要求,发送指定短信,即可获取授权码。

 

总结:

1.python作为第三方客户端登录,应当使用“授权码”替代密码用作登陆。

2.获取授权码:qq邮箱 — “设置” — “账户— “POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”

 

在代码中,写入自己获取到得授权码,就可以发送邮件了。

 

posted @ 2021-07-02 09:53  升级打怪  阅读(205)  评论(0编辑  收藏  举报