python自动发送邮件
python自动发送邮件
学习完本篇,你将会
- 了解邮件协议
- 编写一个邮件系统
了解邮件SMTP协议
- SMTP:即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。
- 发送邮件一般有两种形式,一种是通过邮箱web,另一种是下载邮箱客户端,配置邮箱账号密码,邮箱服务器,就可以发送,python类似第二种方式。
- SMTP协议比较复杂,使用过程中,只需要知道一下几点:
1.host:指定连接的邮箱服务器
2.port:指定连接服务器的端口号
3.user:登陆邮箱用户名
4.password:登陆邮箱密码
5.from_addr:邮箱发送者地址
6.to_addrs:字符串列表,邮件发送地址
7.msg:发送消息
简单发送HTML格式邮件
实例:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
#发送邮件服务器
smtpserver = ‘’ smtp.163.com”
#发送用户名密码:
user = ‘username@163.com’
password = ‘123456’
#发送邮箱
sender = ‘username@163.com’
#接受邮箱
receiver = ‘receive@qq.com’
subject = “python email test”
#发送主体
msg = MIMEText('<html><h1>你好!</h1></html>','html','utf-8')
msg["Subject"] = Header(subject,'utf-8')
#邮箱发送者地址以及收件人地址
msg['From'] = sender
msg['To'] = receiver
#连接邮件
smtp = smtplib.SMTP()
smtp.connect(smtpsever)
smtp.login(user,password)
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()
例子中除用到smtplib模块外,还用到email模块,通过email模块来定义邮件的标题和正文,Header()函数用来定义邮件标题,MIMEText()用于定义邮件正文,参数html格式的文本。
带附件发送HTML格式邮件
实例:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
#发送邮件服务器
smtpserver = ‘’ smtp.163.com”
#发送用户名密码:
user = ‘username@163.com’
password = ‘123456’
#发送邮箱
sender = ‘username@163.com’
#接受邮箱
receiver = ‘receive@qq.com’
#主题
subject = “python email test”
#附件内容
sendfile = open(‘D:\\report\\log.txt’,’rb’).read()
#发送附件
att = MIMEText(sendfile,’base64’,’utf-8’)
att[“Content-Type”] = ‘application/octet-stream’
msgRoot=MIMEMultipart(‘related’)
msgRoot['From'] = sender
msgRoot['To'] = receiver
msgRoot['Subject'] = Header(subject,'utf-8')
msgRoot.attach(msg)
#连接邮件
smtp = smtplib.SMTP()
smtp.connect(smtpsever)
smtp.login(user,password)
smtp.sendmail(sender,receiver, msgRoot.as_string())
smtp.quit()
左侧通过读文件内容,把文件内容添加MIMEText参数中,修改文件形式,从而更改方邮件功能
其它的内容发送可参考:
http://www.jb51.net/article/49216.htm
测试