邮件编程
SMTP概述
- SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,使用TCP协议25端口
- 它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式
- python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装
SMTP对象
Python发送邮件,第一步是创建SMTP对象
import smtplib
smtp_obj = smtplib.SMTP([host],[port],[local_hostname])
- 创建SMTP对象也可以不给定参数,之后再通过对象的其他方法进行绑定
设置邮件
标准邮件需要三个头部信息
- From:发件人
- To:收件人
- Subject:主题
from email.mime.text import MIMEText
from email.header import Header
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("zzg", 'utf-8') #发送者
message['To'] = Header("root", 'utf-8') #接收者
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')
import smtplib
from email.mime.text import MIMEText
from email.header import Header
#邮件正文
message = MIMEText('python email test','plain','utf8')
#邮件头部信息:发件人,收件人,主题
message['From'] = Header('root','utf8')
message['To'] = Header('bob','utf8')
message['Subject'] = Header('py test','utf8')
#发邮件:邮件服务器,发件人,收件人
smtp = smtplib.SMTP('localhost') #使用本机作为服务器
sender = 'root'
receivers = ['root','bob']
smtp.sendmail('root',receivers,message.as_bytes())
SMTP认证
如果本机没有SMTP功能,也可以使用第三方的邮件服务器
- 第三方邮件服务器往往需要认证
mail_host="mail.sina.cn"
mail_user="zzg"
mail_pass="zzg_pass"
smtp_obj = smtplib.SMTP()
smtp_obj.connect(mail_host, 25) # 25 为 SMTP端口号
smtp.starttls() #如果使用证书,打开此注释
smtp_obj.login(mail_user,mail_pass)
smtp_obj.sendmail(sender,receivers, message.as_string())
发邮件
- 邮件服务器
- 需要认证的服务器需要填用户名和密码
- 服务器的地址在邮箱的“设置”中查询
- 需要在邮件服务器的“设置”中允许客户端使用smtp
- 客户端发邮件时,填写的是授权码
- 发件人
- 收件人
import getpass
from email.header import Header
from email.mime.text import MIMEText
import smtplib