python邮件发送

最基本的邮件发送程序

#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 = '[email protected]'
password = 'xxxxxxxx'
# 输入SMTP服务器地址:
smtp_server = 'smtp.sina.com'
# 输入收件人地址:
to_addr = ['[email protected]']
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('

Hello

' + '

send by Python...

' + '', 'html', 'utf-8') # Email地址和口令: user = '[email protected]' password = 'xxx' # 输入SMTP服务器地址: smtp_server = 'smtp.sina.com' # 输入收件人地址: to_addr = ['[email protected]'] 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()

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