1.使用smtplib模块发送邮件
Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
范例如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 第三方 SMTP 服务
mail_host="smtp.sina.com" #设置服务器
mail_user="XXXX" #用户名
mail_pass="XXXXXX" #口令
sender = 'xxxxx@sina.com'
receivers = ['yyyyy@qq.com'] #邮件接收者
message = MIMEText('Python邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("zzzzz@sina.com", 'utf-8')
message['To'] = Header("aaaaa@sina.com", 'utf-8')
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print "邮件发送成功"
except smtplib.SMTPException:
print "Error: 无法发送邮件"
备注:
(1)smtpObj.sendmail(from_addr, [to_addr], msg.as_string())里面的from_addr和from_addr是实际的发件人和接收人
(2)message中的From,To以及Subject是在接收到邮件时候显示的发件人和接收人,即邮件头header中的信息
(3)email模块中的Message类型结构是:
Message
+- MIMEBase
+- MIMEMultipart
+- MIMENonMultipart
+- MIMEMessage
+- MIMEText
+- MIMEImage
构造一个邮件对象就是一个Messag对象,如果构造一个MIMEText对象,就表示一个文本邮件对象,如果构造一个MIMEImage对象,就表示一个作为附件的图片,要把多个对象组合起来,就用MIMEMultipart对象,而MIMEBase可以表示任何对象。学习资料参考于:
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832745198026a685614e7462fb57dbf733cc9f3ad000
http://www.runoob.com/python/python-email.html