#! C:\Python36\python.exe
'''
about what
'''
import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

mail_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.baidu.com">百度一下你就知道</a></p>
<p>图片演示:</p>
<p><img src="cid:image1"></p>
<p><img src="cid:image2"></p>
"""


class SmtpUtil:
    def send(self, sender, password, receiverList, title, message, isHtml=False, annexDictList=None, imgDictList=None):

        # 构建根对象MIMEMultipart
        msgRoot = MIMEMultipart()
        msgRoot['Subject'] = title
        msgRoot['From'] = sender
        msgRoot['To'] = ";".join(receiverList)

        # 添加正文
        msgRoot.attach(MIMEText(mail_msg, 'plain' if not isHtml else 'html', 'utf-8'))

        # 添加附件
        if annexDictList:
            for annexDict in annexDictList:
                if annexDict["isImage"]:
                    # 构建【图片对象】MIMEImage
                    annex = MIMEImage(open(annexDict["path"], 'rb').read())
                else:
                    annex = MIMEText(open(annexDict["path"], 'rb').read(), 'base64', 'utf-8')

                annex["Content-Type"] = 'application/octet-stream'
                annex["Content-Disposition"] = 'attachment; filename="' + annexDict["name"] + '"'
                msgRoot.attach(annex)



        # 添加配图
        if imgDictList:
            for imgDict in imgDictList:
                msgImage = MIMEImage(open(imgDict["path"], 'rb').read())
                msgImage.add_header('Content-ID', '<'+imgDict["name"]+'>')  # 定义图片 ID,在 HTML 文本中引用
                msgRoot.attach(msgImage)

        try:
            # 登录邮件服务器
            if sender.endswith("qq.com"):
                smtpObj = smtplib.SMTP_SSL()
                smtpObj.connect('smtp.qq.com', 465)
            else:
                smtpObj = smtplib.SMTP('smtp.163.com', 25)
            smtpObj.login(sender, password)

            # 发送并退出
            smtpObj.sendmail(sender, receiverList, msgRoot.as_string())
            smtpObj.quit()
            print("邮件发送成功")

        # 处理异常
        except smtplib.SMTPException as e:
            print("Error: 无法发送邮件", e)


if __name__ == "__main__":

    SmtpUtil().send(
        # 发件人信息
        "[email protected]","uaimpajcklvecahc",

        # 收件人信息
        ["[email protected]", "[email protected]", "[email protected]"],

        # 标题及正文
        "你妈逼你结婚了吗",mail_msg,

        # 正文格式
        isHtml=True,

        # 附件
        annexDictList= [
            {"path": "./res/1.txt", "name": "fuck.txt","isImage":False},
            {"path": "./res/meinvb.jpg", "name": "dameinv.jpg","isImage":True}
        ],

        # html格式的正文的附图
        imgDictList=[
            {"path":"./res/meinvb.jpg","name":"image1"},
            {"path":"./res/monster.jpg","name":"image2"}
        ]
    )

    print("main over")

results matching ""

    No results matching ""