📜  python email - Python (1)

📅  最后修改于: 2023-12-03 14:45:57.803000             🧑  作者: Mango

Python Email

Python Email 是一种方便发送电子邮件的 Python 模块。利用 Python Email,程序员可以轻松地通过 Python 代码发送电子邮件,无需自己手动生成邮件头和内容。

安装

Python Email 内置于 Python 标准库中,因此不需要额外安装。只需要在 Python 环境中导入模块即可:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
发送简单邮件

以下代码展示了如何使用 Python Email 发送一封简单文本邮件:

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

def send_email():
    my_sender = 'sender@sender.com'  # 发件人邮箱账号
    my_password = 'password'  # 发件人邮箱密码或授权码
    my_receiver = 'receiver@receiver.com'  # 收件人邮箱账号

    msg = MIMEText('Python Email 邮件发送测试', 'plain', 'utf-8')
    msg['From'] = formataddr(['发送人', my_sender])  # 显示发件人姓名或用户名
    msg['To'] = formataddr(['收件人', my_receiver])  # 显示收件人姓名或用户名
    msg['Subject'] = 'Python Email 邮件测试'  # 邮件主题

    server = smtplib.SMTP_SSL('smtp.exmail.qq.com', 465)  # 发件人邮箱所在的邮件服务提供商的SMTP服务器地址和端口号
    server.login(my_sender, my_password)
    server.sendmail(my_sender, [my_receiver], msg.as_string())
    server.quit()
发送带附件邮件

以下代码展示了如何使用 Python Email 发送一封带有附件的邮件:

import smtplib
from email.utils import formataddr
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

def send_email():
    my_sender = 'sender@sender.com'  # 发件人邮箱账号
    my_password = 'password'  # 发件人邮箱密码或授权码
    my_receiver = 'receiver@receiver.com'  # 收件人邮箱账号

    msg = MIMEMultipart()
    msg['From'] = formataddr(['发送人', my_sender])  # 显示发件人姓名或用户名
    msg['To'] = formataddr(['收件人', my_receiver])  # 显示收件人姓名或用户名
    msg['Subject'] = 'Python Email 带附件邮件测试'  # 邮件主题

    # 添加邮件正文
    msg.attach(MIMEText('Python Email 带附件邮件发送测试', 'plain', 'utf-8'))

    # 添加附件
    with open('example.zip', 'rb') as f:
        part = MIMEApplication(f.read())
        part.add_header('Content-Disposition', 'attachment', filename='example.zip')
        msg.attach(part)

    # 发送邮件
    server = smtplib.SMTP_SSL('smtp.exmail.qq.com', 465)  # 发件人邮箱所在的邮件服务提供商的SMTP服务器地址和端口号
    server.login(my_sender, my_password)
    server.sendmail(my_sender, [my_receiver], msg.as_string())
    server.quit()
发送带图片邮件

以下代码展示了如何使用 Python Email 发送一封带有图片的邮件:

import smtplib
from email.utils import formataddr
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage

def send_email():
    my_sender = 'sender@sender.com'  # 发件人邮箱账号
    my_password = 'password'  # 发件人邮箱密码或授权码
    my_receiver = 'receiver@receiver.com'  # 收件人邮箱账号

    msg = MIMEMultipart()
    msg['From'] = formataddr(['发送人', my_sender])  # 显示发件人姓名或用户名
    msg['To'] = formataddr(['收件人', my_receiver])  # 显示收件人姓名或用户名
    msg['Subject'] = 'Python Email 带图片邮件测试'  # 邮件主题

    # 添加邮件正文和图片
    msg.attach(MIMEText('<html><body><h1>Hello, World!</h1><img src="cid:image1"></body></html>', 'html', 'utf-8'))
    with open('example.jpg', 'rb') as f:
        msg.attach(MIMEImage(f.read(), name='example.jpg'))
        msg['Content-ID'] = '<image1>'  # 将图片 ID 绑定到邮件正文中的 IMG 标签

    # 发送邮件
    server = smtplib.SMTP_SSL('smtp.exmail.qq.com', 465)  # 发件人邮箱所在的邮件服务提供商的SMTP服务器地址和端口号
    server.login(my_sender, my_password)
    server.sendmail(my_sender, [my_receiver], msg.as_string())
    server.quit()

以上是 Python Email 的基本用法介绍,如果您需要了解更多详细信息,可以参考官方文档:https://docs.python.org/3/library/email.examples.html