Python SMTP发送邮件

首先你要用两个邮箱, 一个测试发送邮件, 一个用来接收测试.

这里我用的是 网易 邮箱 发送和 QQ 邮箱接收测试.

1.用来发送邮件的邮箱必须确认打开 SMTP 服务.


Python SMTP发送邮件_第1张图片

2. 点击 POP3/SMTP/IMAP


Python SMTP发送邮件_第2张图片

默认是关闭的, 确认打开服务, 会让你设置一个授权码,记住这个后面会用到.

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'] = '[email protected]'

msg['to'] = '[email protected]'

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(要接收邮件的邮箱)地址保持一致, 否则报错.


Python SMTP发送邮件_第3张图片

__________________________________________

具体的其他操作, 请参考:: 

> https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432005226355aadb8d4b2f3f42f6b1d6f2c5bd8d5263000

你可能感兴趣的:(Python SMTP发送邮件)