python发送邮件
young / / python / 阅读量

代码内容如下:

#!/usr/local/python3/bin/python3
# -*- coding: UTF-8 -*-

from email.header import Header
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.utils import parseaddr, formataddr
import smtplib
import os
import pathlib
import sys
import time


def send_email(smtp_info, to_list, cc_list=None, theme=None, content=None, file_list=None):
    def _format_addr(address):
        name, addr = parseaddr(address)
        return formataddr((Header(name, 'utf-8').encode(), addr))

    try:
        msg = MIMEMultipart()
        # 构建正文
        part_text = MIMEText(content)
        msg.attach(part_text)  # 把正文加到邮件体里面去
        msg['From'] = _format_addr('%s<%s>' % (smtp_info.get('username'), smtp_info.get('address')))
        msg['To'] = ','.join(to_list)
        if cc_list:
            to_list += cc_list
            msg['Cc'] = ','.join(cc_list)
        msg['Subject'] = Header(theme, 'utf-8').encode()
    
        for file_path in file_list:
            print(file_path)
            if os.path.isfile(file_path):
                # 构建邮件附件
                part_attach1 = MIMEApplication(open(file_path, 'rb').read())  # 打开附件
                part_attach1.add_header('Content-Disposition', 'attachment', filename=pathlib.Path(file_path).name)  # 为附件命名
                msg.attach(part_attach1)  # 添加附件
    
        s = smtplib.SMTP(smtp_info.get('server'), smtp_info.get('port'))
        s.ehlo()
        s.starttls()
        s.login(smtp_info.get('address'), smtp_info.get('password'))
        s.sendmail(smtp_info.get('address'), to_list, msg.as_string())
        s.quit()
    except Exception as error:
        print("发送失败, 请检查! 错误: {}".format(error))


if __name__ == "__main__":
    mail_theme = "测试邮件"
    mail_content = "测试邮件"

    smtp = {
        'server': "smtphm.qiye.163.com",
        'port': 25,
        'username': 'Zabbix Monitor Email',
        'address': 'zabbix@xxx.cn',
        'password': 'xxx',
    }
    to = [
        "xxx@xxx.cn"
    ]
    cc = [
        "xxx@xxx.cn"
    ]
    file = [
        './20210425.xls',
    ]
    send_email(
        smtp_info=smtp, to_list=to, cc_list=cc,
        theme=mail_theme, content=mail_content, file_list=file
    )
支付宝捐赠
请使用支付宝扫一扫进行捐赠
微信捐赠
请使用微信扫一扫进行赞赏
有 0 篇文章