Python发送邮件(demo)

该代码演示了如何使用Python3.10通过SMTP_SSL发送邮件,包括单个邮件和批量邮件的发送功能,涉及email库的MIMEText、Header及smtplib模块,需要注意使用邮箱的授权码而非登录密码。
摘要由CSDN通过智能技术生成

Python 3.10

该代码复制可用(需修改sender_password)

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

receivers = ['123456@qq.com', '123456@foxmail.com']  # 接收者邮箱


class EmailConfig:
    """邮箱的一些配置信息"""
    
    smtp_url = 'smtp.163.com'  # smtp地址

    sender = 'druid137@163.com'  # 发送者邮箱
    sender_name = 'druid'  # 发送者名称邮箱
    sender_password = 'CTYRHHX123456'  # 发送者密码(邮箱的授权码,非登录密码)


def simple_send_email(receiver, subject, body):
    """
    简单的邮件发送
    :param receiver: 接收者邮箱
    :param subject: 邮件主题
    :param body: 邮件内容
    :return: none
    """
    try:
        message = MIMEText(body, 'plain', 'utf-8')  # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
        message['From'] = formataddr([EmailConfig.sender_name, EmailConfig.sender])  # 发送者名字 发送者邮箱
        message['To'] = receiver  # 接收者, 接收者邮箱地址
        message['Subject'] = Header(subject, 'utf-8')

        # smtpObj = smtplib.SMTP(smtp_url)
        smtpObj = smtplib.SMTP_SSL(EmailConfig.smtp_url)
        smtpObj.login(EmailConfig.sender, EmailConfig.sender_password)
        smtpObj.sendmail(EmailConfig.sender, receiver, message.as_string())
        smtpObj.quit()
        print("邮件发送成功")
    except smtplib.SMTPException as ex:
        print(ex)
        print("Error: 无法发送邮件")


def simple_batch_send_email(receivers, subject, body):
    """
    批量简单的邮件发送
    :param receivers: 接收站邮箱数组
    :param subject: 主题
    :param body: 内容
    :return: none
    """
    try:
        message = MIMEText(body, 'plain', 'utf-8')  # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
        message['From'] = formataddr([EmailConfig.sender_name, EmailConfig.sender])  # 发送者名字 发送者邮箱
        message['To'] = '接收者'  # 接收者, 接收者邮箱地址
        message['Subject'] = Header(subject, 'utf-8')

        # smtpObj = smtplib.SMTP(smtp_url)
        smtpObj = smtplib.SMTP_SSL(EmailConfig.smtp_url)
        smtpObj.login(EmailConfig.sender, EmailConfig.sender_password)
        smtpObj.sendmail(EmailConfig.sender, receivers, message.as_string())
        smtpObj.quit()
        print("邮件发送成功")
    except smtplib.SMTPException as ex:
        print(ex)
        print("Error: 无法发送邮件")


if __name__ == '__main__':
    print("start send email")

    # simple_batch_send_email(receivers, 'subject', 'hello email')

    simple_send_email(receivers[0], 'simple_send_email', 'hello email simple_send_email')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值