目录
1. 电子邮件的工作原理
-
发件人将邮件发送到自己使用的邮件服务器
-
发件人的邮件服务器将受到的邮件按其目的地址转发到收件人邮件服务器中的收件人邮箱
-
收件人在方便的时候访问收件人邮件服务器中自己的邮箱,获取受到的电子邮件
2. SMTP协议
-
SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或者其他的二进制对象
-
SMTP不能满足传送多媒体邮件(例如带有图片,音频或视频数据)的需要。并且许多其他非英语国家的文字(例如中文,俄文,甚至带有重音符号的发文或德文)也无法用SMTP传送。
-
为解决SMTP传输非ASCII码文本的问题,提出来多用途因特网邮件扩展MIME(Multipurpose Internet Mail Extensions)
发送发中如果包含非ASCII码文本数据,先用MIME协议将其转换成ASCII码,然后再使用SMTP协议进行发送
-
实际上,MIME不仅仅使用与SMTP,也用于后来的同样面向ASCII字符的HTTP。
3. 准备
(1)安装需要的模块
pip install email
pip install smtplib
(2)开通邮箱的smtp协议,获取授权码(qq邮箱为例)
进入邮箱后点击"设置"–>选择"账户"–>下拉找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,点击开启以后会自动弹出生成授权码.按要求发送短信后,复制授权码,备用.
4. 具体代码实现
import smtplib
from email.mime.text import MIMEText
# 配置第三方服务
mail_host = "smtp.qq.com" # 设置服务器
mail_user = "xx@qq.com" # 用户名
mail_pass = "" # 授权码
receivers = "xx@qq.com" # 接受邮箱
# 构建邮箱内容
# plain 文本类型
message = MIMEText("hello world", 'plain', 'utf-8')
message["From"] = mail_user
message["To"] = receivers
message["Subject"] = "xxx 邮件测试"
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host)
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(mail_user, receivers, message.as_string())
smtpObj.quit()