SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。
在我们上代码之前,先做好准备工作
安装smtplib和email库的时候,检查下自己的pip 是不是最高版本的,如果不是,建议升级到最高版本
python 邮件脚本的名字千万不能命名为email.py
如果命令为email.py ,在安装email库的时候,会因为冲突,一直报这样的错
ModuleNotFoundError: No module named 'cStringIO'
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
右下角的编码格式必须是UTF-8,不然执行的时候会一直报这个错
D:\PycharmProjects\untitled\python\Scripts\python.exe D:/PycharmProjects/python/youjian.py File "D:/PycharmProjects/python/youjian.py", line 2 SyntaxError: Non-UTF-8 code starting with '\xd3' in file D:/PycharmProjects/python/youjian.py on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details Process finished with exit code 1
解决方法
在创建.py文件中的底面右下角找到GBK,将GBK换成UTF-8即可
登录自己的163邮箱和qq邮箱,开启SMTP协议,如下图
我们需要记住发送邮箱的授权码,如下图这样的
import smtplib
from email.header import Header # 用来设置邮件头和邮件主题
from email.mime.text import MIMEText # 发送正文只包含简单文本的邮件,引入MIMEText即可
sender = 'XXXXXXXXXXXXXXXX@163.com'
receiver = 'XXXXXXXXXXXXX@qq.com'
# 所使用的用来发送邮件的SMTP服务器
smtpServer = 'smtp.163.com'
# 发送邮箱的用户名和授权码(不是登录邮箱的密码)
username = 'XXXXXXXXXXXXXXX'
password = 'XXXXXXXXXXXXXXX'
mail_title = '测试发送邮件'
mail_body = '邮件发送123'
message = MIMEText(mail_body, 'plain', 'utf-8') # 邮件正文
message['From'] = sender # 邮件上显示的发件人
message['To'] = receiver # 邮件上显示的收件人
message['Subject'] = Header(mail_title, 'utf-8') # 邮件主题
try:
smtp = smtplib.SMTP() # 创建一个连接
smtp.connect(smtpServer) # 连接发送邮件的服务器
smtp.login(username, password) # 登录服务器
smtp.sendmail(sender, receiver, message.as_string()) # 填入邮件的相关信息并发送
print("邮件发送成功!!!")
smtp.quit()
except smtplib.SMTPException:
print("邮件发送失败!!!")
完整代码:
import smtplib
from email.header import Header # 用来设置邮件头和邮件主题
from email.mime.text import MIMEText # 发送正文只包含简单文本的邮件,引入MIMEText即可
# 发件人和收件人
sender = 'XXXXXXXXXXXXX@163.com'
receiver = 'XXXXXXXXXXX@qq.com'
# 所使用的用来发送邮件的SMTP服务器
smtpServer = 'smtp.163.com'
# 发送邮箱的用户名和授权码(不是登录邮箱的密码)
username = 'XXXXXXXXXXXXXXX'
password = 'XXXXXXXXXXXXXXX'
mail_title = '测试发送邮件'
mail_body = '邮件发送123'
# 创建一个实例
message = MIMEText(mail_body, 'plain', 'utf-8') # 邮件正文
message['From'] = sender # 邮件上显示的发件人
message['To'] = receiver # 邮件上显示的收件人
message['Subject'] = Header(mail_title, 'utf-8') # 邮件主题
try:
smtp = smtplib.SMTP() # 创建一个连接
smtp.connect(smtpServer) # 连接发送邮件的服务器
smtp.login(username, password) # 登录服务器
smtp.sendmail(sender, receiver, message.as_string()) # 填入邮件的相关信息并发送
print("邮件发送成功!!!")
smtp.quit()
except smtplib.SMTPException:
print("邮件发送失败!!!")
执行效果:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有