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

python脚本发送邮件

2017-11-02 15:10 375 查看
def SendMail(fromAddress, toAddress, usepassword,subject=None, content=None, attfile=None, \
subtype='plain', charset='utf-8'):

username = fromAddress

#创建一个带附件的实例
msg = MIMEMultipart()
msg['From'] = fromAddress
msg['To'] = toAddress

if subject:
#标题
msg['Subject'] = subject
msg['Date'] = Utils.formatdate(localtime=1)

if content:
#添加邮件内容
txt = MIMEText(content, subtype, charset)
msg.attach(txt)

if attfile:
#构造附件
#注意:传入的参数attfile为unicode,否则带中文的目录或名称的文件读不出来
#      basename 为文件名称,由于传入的参数attfile为unicode编码,此处的basename也为unicode编码
basename = os.path.basename(attfile)
print basename
#注意:指定att的编码方式为gb2312
att = MIMEText(open(attfile, 'rb').read(), 'base64', 'gb2312')
att["Content-Type"] = 'application/octet-stream'

#注意:此处basename要转换为gb2312编码,否则中文会有乱码。
#      特别,此处的basename为unicode编码,所以可以用basename.encode('gb2312')
#            如果basename为utf-8编码,要用basename.decode('utf-8').encode('gb2312')
att["Content-Disposition"] = 'attachment; filename=%s' % basename.encode('gb2312')
msg.attach(att)

try:
#smtp = smtplib
smtp = smtplib.SMTP()

#连接服务器
smtp.connect('smtp.163.com', '25')

#登录
smtp.login(username, usepassword)

#发送邮件
smtp.sendmail(fromAddress, toAddress, msg.as_string())
#退出
smtp.quit()
print('邮件发送成功email has send out !')

#调用
if __name__ == "__main__":

#注意:附件的路径字符串应为unicode编码
SendMail('xxxxxxx', 'xxxxxxxx', 'xxxxxxx','编译结果','编译log文件已发送,请查看!',u'编译结果.h')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: