python smtplib发送带附件的邮件
时间:2018-11-06 11:34:45 +0800 CST 浏览:1668

python发送带附件的邮件,代码带详细的注释说明,简单易懂。

python_SyHIjJkam.jpg

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Author: 张文兵
@Date: 2018-11-06 17:32:02
@LastEditors: 张文兵
@LastEditTime: 2018-11-06 18:14:56
@Blog: http://zhangwenbing.com/
@Description:
'''

import smtplib
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import base64
# 捕获异常
import traceback
import os.path as path


def sedmail(title, message, files):
    try:
        # 设置发件服务器地址
        host = 'smtp.partner.outlook.cn'
        # 设置发件服务器端口号。注意,这里有SSL和非SSL两种形式
        port = 587
        # 设置发件邮箱,一定要自己注册的邮箱
        sender = 'xxx@xxx.com'
        # 设置发件邮箱的密码,等会登陆会用到
        pwd = 'xxxxxxxx'
        # # 设置邮件接收人
        receiver = 'xxx@xxx.com'

        # 设置正文为符合邮件格式的HTML内容
        # msg = MIMEText(body, 'html', 'UTF-8')
        msg = MIMEMultipart()

        # 设置邮件标题 解决邮件标题乱码问题
        msg['subject'] = '=?UTF-8?B?' + base64.encodestring(title).strip(
            '\n') + '?='
        # 设置发送人
        msg['from'] = sender
        # 设置接收人
        msg['to'] = receiver
        # 解决邮件内容乱码问题
        msg["Accept-Language"] = 'zh-CN'
        msg["Accept-Charset"] = 'ISO-8859-1,UTF-8'

        # ---这是文字部分---
        part = MIMEText(message)
        msg.attach(part)

        # ---这是附件部分---
        for file in files:
            att = MIMEApplication(open(file, 'rb').read())
            att['Content-Type'] = 'application/octet-stream'
            att['Content-Disposition'] = 'attachment; filename= "' + path.basename(
                file) + '"'
            msg.attach(att)

        # 注意!如果是使用SSL端口,这里就要改为SMTP_SSL
        s = smtplib.SMTP(host, port)
        s.ehlo()
        s.starttls()
        # 登陆邮箱
        s.login(sender, pwd)
        # 发送邮件!
        s.sendmail(sender, receiver, msg.as_string())
        s.quit()
    except ():
        exc_info = traceback.format_exc()
        print exc_info


if __name__ == '__main__':
    # pass
    sedmail('测试邮件', '测试邮件', ['/test/test.zip'])


如果这篇文章对你有所帮助,可以通过下边的“打赏”功能进行小额的打赏。

本网站部分内容来源于互联网,如有侵犯版权请来信告知,我们将立即处理。


来说两句吧