一、发送邮件收件人乱码
1.要解决发件人名称乱码问题,必须使用Header
from email.header import Header
from = ("%s") % (Header('OutOfMemory.CN管理员','utf-8'),)
2. 邮件主题乱码问题
if not isinstance(subject,unicode):
subject = unicode(subject)
msg['Subject'] = subject
3.邮件正文乱码问题
msg = MIMEText(body,format,'utf-8')
msg["Accept-Language"]="zh-CN"
msg["Accept-Charset"]="ISO-8859-1,utf-8"
4.完整代码
import smtplib
from email.mime.text import MIMEText
from email.header import Header
#下面一行要设置成你自己的邮件服务器的地址以及用户名密码发件人信息
host,user,password,fromMail = smtpInfo
def sendMail(mailto,subject,body,format='plain'):
if isinstance(body,unicode):
body = str(body)
me= ("%s<"+fromMail+">") % (Header(_mailFrom,'utf-8'),)
msg = MIMEText(body,format,'utf-8')
if not isinstance(subject,unicode):
subject = unicode(subject)
msg['Subject'] = subject
msg['From'] = me
msg['To'] = mailto
msg["Accept-Language"]="zh-CN"
msg["Accept-Charset"]="ISO-8859-1,utf-8"
try:
s = smtplib.SMTP()
s.connect(host)
s.login(user,password)
s.sendmail(me, mailto, msg.as_string())
s.close()
return True
except Exception, e:
print str(e)
return False
二、发送邮件给多个人的关键点:
- 关键点1:收件人邮箱msg_to=[‘abc@163.com’,‘dhsjkbsh@qq.com’,‘123463255@qq.com’],以列表的方式给出。
- 关键点2:msg[‘To’] =’,’.join(msg_to)。
- 关键点3:s.sendmail(msg_from, msg[‘To’].split(’,’), msg.as_string())
def sendMail(mailto,subject,body,format='plain'):
if isinstance(body,unicode):
body = str(body)
me = ("%s<"+fromMail+">") % (Header(_mailFrom,'utf-8'),)
msg = MIMEText(body,format,'utf-8')
if not isinstance(subject,unicode):
subject = unicode(subject)
msg['Subject'] = subject
msg['From'] = me
msg['To'] = ','.join(mailto) # 如果发给单个人,就不用写join
msg["Accept-Language"]="zh-CN"
msg["Accept-Charset"]="ISO-8859-1,utf-8"
try:
s = smtplib.SMTP()
s.connect(host)
s.login(user,password)
s.sendmail(me, msg['To'].split(','), msg.as_string())
s.close()
return True
except Exception, e:
print str(e)
return False
参考连接:http://outofmemory.cn/code-snippet/1464/python-send-youjian-resolve-suoyou-luanma-question