您的位置:首页 > 编程语言 > Python开发

使用python发邮件

2015-01-14 16:40 288 查看

使用python发邮件

网上有很多发邮件的例子,本人在网上找了一份,稍加修改后使用

上源码

# encoding=utf-8

from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
import smtplib

class SendEmail:
def __init__(self, host, user, passwd):
lInfo = user.split("@")
self._user = user
self._account = lInfo[0]
self._me = self._account + "<" + self._user + ">"

server = smtplib.SMTP()
server.connect(host)
server.login(self._account, passwd)
self._server = server

def sendTxtMail(self, to_list, sub, content, subtype='html', displayName=''):
msg = MIMEText(content, _subtype=subtype, _charset='utf-8')
msg['Subject'] = Header(sub, 'utf-8')
if displayName == '':
msg['From'] = self._me
else:
msg['From'] = Header(displayName, 'utf-8').__str__() + " <" + self._user + ">"
msg['To'] = ";".join(to_list)
try:
self._server.sendmail(self._me, to_list, msg.as_string())
return True
except Exception, e:
print str(e)
return False

主要说下我改动的地方,我这想在发送邮件中带有自己定义的名称,所以在发送函数中最后加了一个参数,使用传入的名称与原邮箱地址拼在一起,放入
From
字段中,就可以使收件人看到我定义的名称了

需注意的地方是,给
From
字段赋值时,最好按邮件标准格式进行编码,即使用
email.Header
进行编码,然后使用
__str__()
方法取得编码后的字符串,最后再拼上邮箱地址

另外,给
Subject
字段赋值时直接使用了
Header
对象,是因为我在赋值时并未处理字符串,可直接传给
Subject
使用。最后再啰嗦一句,我直接给
Subject
赋普通字符串,邮件发过去后一查邮件源文件,竟也是编码后的,。。。,无语
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: