python 发送邮件

本文详细介绍了如何使用Python的smtplib和email库发送不同类型的邮件,包括普通文本邮件、HTML格式邮件、带有附件的邮件以及包含内联图片的HTML邮件。示例代码展示了设置抄送人员的方法,并提供了调试邮件发送问题的提示。
摘要由CSDN通过智能技术生成
# encoding=utf-8

import smtplib
from email.mime.application import MIMEApplication
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

pwd = "Axx2345"
sender = "test@xxx.com"
server = 'smtp.xxx.com'
reveivers = ['test01@xxx.com', 'test02@xxx.com']
subject = 'python 邮件发送'


def send_text_email():
    """发送一个普通的文本邮件"""
    text_content = """
    <h2>title</h2>
    <p>eamil content</p>
    """
    msg = MIMEText(text_content, 'plain', 'utf-8')
    msg['From'] = sender
    msg['To'] = ';'.join(reveivers)
    msg['Subject'] = subject  # 邮件标题
    smtp = smtplib.SMTP(server)
    smtp.login(sender, pwd)
    smtp.sendmail(sender, reveivers, msg.as_string())


def send_html_email():
    """发送一个带html格式的邮件"""
    html_content = """
    <h2>title</h2>
    <p>eamil content</p>
    """
    msg = MIMEText(html_content, 'html', 'utf-8')
    msg['From'] = sender
    msg['To'] = ';'.join(reveivers)
    msg['Subject'] = subject  # 邮件标题
    smtp = smtplib.SMTP(server)
    smtp.login(sender, pwd)
    smtp.sendmail(sender, reveivers, msg.as_string())


def send_attach_email():
    """发送一个带附件的邮件"""
    msg = MIMEText('带附件的邮件', 'plain', 'utf-8')

    image_attach = MIMEImage(open('test.JPG', 'rb').read())
    image_attach.add_header('Content-Disposition', 'attachment', filename='test_image.jpg')

    image_attach2 = MIMEApplication(open('test.JPG', 'rb').read())
    image_attach2.add_header('Content-Disposition', 'attachment', filename='test_image2.jpg')

    pdf_attach = MIMEApplication(open('test_pdf.pdf', 'rb').read())
    pdf_attach.add_header('Content-Disposition', 'attachment', filename='test_pdf.pdf')

    multipart = MIMEMultipart()
    multipart['From'] = sender
    multipart['To'] = ';'.join(reveivers)
    multipart['Subject'] = subject
    multipart.attach(msg)
    multipart.attach(image_attach)
    multipart.attach(image_attach2)
    multipart.attach(pdf_attach)

    smtp = smtplib.SMTP(server)
    smtp.login(sender, pwd)
    smtp.sendmail(sender, reveivers, multipart.as_string())


def send_html_contain_image_email():
    """发送一个包含图片的html邮件"""
    html_content = """
    <h2>title</h2>
    <p>eamil content</p>
    <br/>
    <img src="cid:image01">
    """
    msg = MIMEText(html_content, 'html', 'utf-8')

    image_attach = MIMEImage(open('test.JPG', 'rb').read())
    image_attach.add_header('Content-ID', 'image01')

    multipart = MIMEMultipart()
    multipart['From'] = sender
    multipart['To'] = ';'.join(reveivers)
    multipart['Subject'] = subject  # 邮件标题
    multipart.attach(msg)
    multipart.attach(image_attach)

    smtp = smtplib.SMTP(server)
    smtp.login(sender, pwd)
    smtp.sendmail(sender, reveivers, multipart.as_string())


if __name__ == '__main__':
    send_text_email()
    send_html_email()
    send_attach_email()
    send_html_contain_image_email()

发送一个普通的文本邮件

在这里插入图片描述

发送一个带html格式的邮件

在这里插入图片描述

发送一个带附件的邮件

在这里插入图片描述

发送一个包含图片的html邮件

在这里插入图片描述

调试发送邮件问题

  • 点击 -> 更多操作 -> 查看邮件源码
    在这里插入图片描述

添加抄送人员

def send_email(subject, text_content, toUser, CcUser=None):
    pwd = xxx
    sender = xxx
    reveivers = toUser
    server = xxxx

    msg = MIMEText(text_content, 'html', 'utf-8')
    msg['From'] = sender
    msg['To'] = ';'.join(reveivers)
    if CcUser is not None:
        msg['Cc'] = ';'.join(CcUser)
    msg['Subject'] = subject
    smtp = smtplib.SMTP(server)
    smtp.login(sender, pwd)
    smtp.sendmail(sender, reveivers+CcUser, msg.as_string())

send_email("test subject", "test content", ["xx@xxx.com"], ["aa@xxx.com"])

msg['Cc'] = ';'.join(CcUser):设置邮件抄送部分的人员名单信息,用于显示在抄送栏位
smtp.sendmail(sender, reveivers+CcUser, msg.as_string()):这里必须把抄送人员的邮件也加入进来,否则抄送人员只会在抄送栏位显示,但是接收不到邮件信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值