python 发送邮件

SMTP发送邮件

简单的,参见http://blog.csdn.net/handsomekang/article/details/9785411

import smtplib
from email.mime.text import MIMEText
_user = "" #填写发件人用户名
_pwd  = "" #密码
_to   = "" #收件人地址

#使用MIMEText构造符合smtp协议的header及body
msg = MIMEText("hello,world")
msg["Subject"] = "Test"
msg["From"]    = _user
msg["To"]      = _to

s = smtplib.SMTP("smtp.qq.com", timeout=30)#连接smtp邮件服务器,端口默认是25
s.login(_user, _pwd)#登陆服务器
s.sendmail(_user, _to, msg.as_string())#发送邮件
s.close()

需要注意的是,各个邮箱的smtp服务器是不一样的。主要依据发件人所在的邮箱而定
#qq
smtp.qq.com
#163
smtp.163.com
#gmail
smtp.gmail.com
#126
smtp.126.com

 

Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

下面一个例子可以打印出,且规范发送的内容

# -*- coding: utf-8 -*-
import sys

reload(sys)
sys.setdefaultencoding('utf-8')
"""
__author__="tina"
__mtime__ = '2015/12/17  10:22'
"""
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
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))
#自己填写对应地址
from_addr = "" 
password = ""
to_addr = ""
smtp_server = "smtp.163.com"

msg = MIMEText('hello,world','plain','utf-8')
msg['From'] = _format_addr(u'Python爱好者 <%s>' % from_addr)
msg['To'] = _format_addr(u'管理员 <%s>' % to_addr)
msg['Subject'] = Header(u'来自SMTP的问候……', 'utf-8').encode()
server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(1)  #打印和SMTP服务器交互的所有信息
server.login(from_addr, password)  #登录
server.sendmail(from_addr, [to_addr], msg.as_string())  #SMTP可以一次发给多人,所以传入一个list
server.quit()

 

posted @ 2015-12-17 10:37  smile_tina  阅读(669)  评论(0编辑  收藏  举报