最基本的邮件发送程序
#coding=utf8
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
import smtplib
content01 = MIMEText('hello, send by Python...', 'plain', 'utf-8')
# Email地址和口令:
user = 'zhxxxxxxxx@sina.com'
password = 'xxxxxxxx'
# 输入SMTP服务器地址:
smtp_server = 'smtp.sina.com'
# 输入收件人地址:
to_addr = ['xxxxx@sina.net']
msg = MIMEMultipart()
msg['Subject'] = Header('我的主题...', 'utf-8')
msg['From'] = Header(user)
msg.attach(content01)
# SMTP协议默认端口是25
server = smtplib.SMTP(smtp_server)
server.set_debuglevel(1)
server.starttls()
server.login(user, password)
server.sendmail(user, to_addr, msg.as_string())
server.quit()
注意
新浪邮件服务器有个验证要求:http://blog.sina.com.cn/s/blog_4bea75720102x29a.html
所以msg[‘From’]的内容要与发件人保持一致,可能新浪在检查一致性时,判断过于简单,msg[‘From’]的Header不能添加第2个参数”utf-8”,否则检查不能通过。
发送HTML邮件
# coding=utf8
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.utils import parseaddr, formataddr
import smtplib
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(),
addr.encode('utf-8') if isinstance(addr, unicode) else addr))
# content01 = MIMEText('hello, send by Python...', 'plain', 'utf-8')
content01 = MIMEText('<html><body><h1>Hello</h1>' +
'<p>send by <a href="http://www.python.org">Python</a>...</p>' +
'</body></html>', 'html', 'utf-8')
# Email地址和口令:
user = 'xxxxxx@sina.com'
password = 'xxx'
# 输入SMTP服务器地址:
smtp_server = 'smtp.sina.com'
# 输入收件人地址:
to_addr = ['xxx@csdn.net']
msg = MIMEMultipart()
msg['Subject'] = Header('搜索引擎评估日报', 'utf-8').encode()
msg['From'] = _format_addr(u'zenjoy搜索日报<%s>' % user)
msg['To'] = _format_addr(u'管理员 <%s>' % to_addr)
msg.attach(content01)
# SMTP协议默认端口是25
server = smtplib.SMTP(smtp_server)
server.set_debuglevel(1)
server.starttls()
server.login(user, password)
server.sendmail(user, [to_addr], msg.as_string())
server.quit()