• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python37-发送邮件完整版和简单版

指标:126/163邮箱

import smtplib
import time

from email.header import Header
from email import encoders
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr

def SendMailSimple(sender, receivers, mail_pass, content, file, image):
    mail_host = "smtp.126.com"  # 设置服务器
    # message = MIMEText(content, 'plain', 'utf-8')#注释内容   plain代表纯文本
    message = MIMEMultipart()
    message.attach(MIMEText(content)) # <a href="https://www.gaodaima.com/tag/%e9%82%ae%e4%bb%b6" title="查看更多关于邮件的文章" target="_blank">邮件</a>注释
    message['From'] = sender
    message['To'] = ','.join(receivers) 
    subject = 'Python主动简略邮件-%s' % time.ctime()
    message['Subject'] = subject  # 邮件题目

    try:
        # 增加文件到附件
        with open(file, 'rb') as f:
            # MIMEBase示意附件的对象
            mime = MIMEBase('text', 'txt', filename=file)
            # filename是显示附件名字
            mime.add_header('Content-Disposition', 'attachment', filename=file)
            # 获取附件内容
            mime.set_payload(f.read())
            encoders.encode_base64(mime)
            # 作为附件增加到邮件
            message.attach(mime)
    except FileNotFoundError as e:
        print(e)

    try:
        with open(image, 'rb') as f:
            # 图片增加到附件
            mime = MIMEBase('image', 'image', filename=image)
            mime.add_header('Content-Disposition', 'attachment', filename=image)
            mime.set_payload(f.read())
            encoders.encode_base64(mime)
            message.attach(mime)
    except FileNotFoundError as e:
        print(e)

    try:
        smtpObj = smtplib.SMTP_SSL(mail_host, 465)
        smtpObj.login(sender, mail_pass)
        smtpObj.sendmail(sender, receivers , str(message))  # message.as_string()
        smtpObj.quit()
        print("邮件发送胜利")
    except smtplib.SMTPException as e:
        print(e)


def SendMail(sender, receivers, cc_mail, mail_pass, content, file, image):
    # 第三方 SMTP 服务
    mail_host = "smtp.126.com"  # 设置服务器

    # 结构一个MIMEMultipart对象代表邮件自身
    message = MIMEMultipart()
    message.attach(MIMEText(content, 'html', 'utf-8'))  # 注释内容   plain代表纯文本,html代表反对html文本

    message['From'] = sender
    message['To'] = ','.join(receivers)  # 与真正的收件人的邮箱不是一回事
    message['Cc'] = ','.join(cc_mail)

    subject = 'Python主动邮件-%s' % time.ctime()
    message['Subject'] = subject  # 邮件题目

    # 增加文件到附件
    with open(file, 'rb') as f:
        # MIMEBase示意附件的对象
        mime = MIMEBase('text', 'txt', filename=file)
        # filename是显示附件名字
        mime.add_header('Content-Disposition', 'attachment', filename=file)
        # 获取附件内容
        mime.set_payload(f.read())
        encoders.encode_base64(mime)
        # 作为附件增加到邮件
        message.attach(mime)

    with open(image, 'rb') as f:
        # 图片增加到附件
        mime = MIMEBase('image', 'image', filename=image)
        mime.add_header('Content-Disposition', 'attachment', filename=image)
        mime.set_payload(f.read())
        encoders.encode_base64(mime)
        message.attach(mime)

    # 将图片显示在注释
    with open(image, 'rb') as f:
        # 图片增加到注释
        msgImage = MIMEImage(f.read())
        # 定义图片ID
    msgImage.add_header('Content-ID', '<image1>')
    message.attach(msgImage)

    try:
        smtpObj = smtplib.SMTP_SSL(mail_host, 465)
        smtpObj.login(sender, mail_pass)
        smtpObj.sendmail(sender, receivers + cc_mail, str(message))  # message.as_string()
        smtpObj.quit()
        print("邮件发送胜利")
    except smtplib.SMTPException as e:
        print(e)



if __name__ == "__main__":
    sender = '[email protected]'  # 邮件发送方
    receivers = ['[email protected]', '[email protected]']  # 接管邮件的邮箱
    receivers_single = ['[email protected]']  # 接管邮件的邮箱
    cc_mail = ['[email protected]']  # 抄送人


    # 口令受权码,不含空格
    mail_pass = "xxxxxxxxxx"

    content_text = "邮件注释测试"

    content = '''连忙加油往前冲
            <h1>测试test</h1>
            <h2 style="color:red">看看这里显示什么</h1>
            <a href="http://www.runoob.com/<a href="https://www.gaodaima.com/tag/python" title="查看更多关于python的文章" target="_blank">python</a>/python-email.html">测试超链接</a><br>
            <p>图片显示测试:</p>
            <p><img src="cid:image1"></p>
          '''
    file = 'Fx12.txt'
    image = 'language2.jpg'
    #SendMail(sender, receivers, cc_mail, mail_pass, content, file, image)
    SendMailSimple(sender, receivers_single, mail_pass, content_text, file, image)

本机运行后果:
D:\development\python_test_proj_2022\venv\Scripts\python.exe D:/development/python_test_proj_2022/venv/pyRun.py
[Errno 2] No such file or directory: ‘Fx12.txt’
[Errno 2] No such file or directory: ‘language2.jpg’
邮件发送胜利


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址