首先你要用两个邮箱, 一个测试发送邮件, 一个用来接收测试.
这里我用的是 网易 邮箱 发送和 QQ 邮箱接收测试.
1.用来发送邮件的邮箱必须确认打开 SMTP 服务.
2. 点击 POP3/SMTP/IMAP
默认是关闭的, 确认打开服务, 会让你设置一个授权码,记住这个后面会用到.
3. SMTP 是发送邮件的协议, Python 对 SMTP 支持有 smtplib 和 email 两个模块, email 负责构造邮件, smtplib 负责发送邮件.
首先, 我们构造一个最简单的纯文本邮件:
from email.mime.text import MIMEText
msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
构造 MIMEText 对象时, 第一个参数就是邮件正文, 第二个参数是 MIME 的 subtype(类型), 传入 'plain' 表示纯文本, 最后一定要用 'utf-8' 编码保证多语言兼容性.
from email.mime.text import MIMEText
import smtplib
msg = MIMEText('Hello, send by Python ...?', 'plain', 'utf-8')
msg['from'] = '13639330534@163.com'
msg['to'] = '399704129@qq.com'
from_addr = input('From: ')
# 这里密码填写的是前面设置的授权码, 不是你邮箱密码.
password = input('Password: ')
# 接收邮箱的地址
to_addr = input('To: ')
# smtp 服务器地址
#smtp_server = input('SMTP server: ')
smtp_server = 'smtp.163.com'
server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
我们用 set_debuglevel(1) 就可以打印出和 SMTP 服务器交互的所有信息. login() 方法用来登录 SMTP 服务器, sendmail() 方法就是发邮件, 由于可以一次发给多个人, 所以传入一个 list, 邮件正文是一个 str, as_string() 把 MIMEText 对象变成 str.
msg['from'] 与 msg['to'] 是必须加的否则会被网页服务器标记成垃圾邮件导致发送失败. 注意: msg['to'] 的邮件地址, 必须与 to_addr(要接收邮件的邮箱)地址保持一致, 否则报错.
__________________________________________
具体的其他操作, 请参考::
> https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432005226355aadb8d4b2f3f42f6b1d6f2c5bd8d5263000