用smtplib和email封装python发送邮件模块类分享


当然,我可以为你提供一个简单的Python类,用于封装使用`smtplib`和`email`库发送邮件的功能。这个类将包括设置SMTP服务器、发件人、收件人、邮件主题和正文,以及发送邮件的方法。


import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

class EmailSender:
    def __init__(self, smtp_host, smtp_port, smtp_user, smtp_password, from_addr):
        """
        初始化EmailSender类
        :param smtp_host: SMTP服务器地址
        :param smtp_port: SMTP服务器端口
        :param smtp_user: SMTP用户名(通常是邮箱地址)
        :param smtp_password: SMTP密码
        :param from_addr: 发件人邮箱地址
        """
        self.smtp_host = smtp_host
        self.smtp_port = smtp_port
        self.smtp_user = smtp_user
        self.smtp_password = smtp_password
        self.from_addr = from_addr

    def send_email(self, to_addrs, subject, body, html=False):
        """
        发送邮件
        :param to_addrs: 收件人邮箱地址列表
        :param subject: 邮件主题
        :param body: 邮件正文
        :param html: 是否为HTML邮件,默认为False
        """
        msg = MIMEMultipart()
        msg['From'] = self.from_addr
        msg['To'] = ','.join(to_addrs)
        msg['Subject'] = Header(subject, 'utf-8')

        if html:
            msg.attach(MIMEText(body, 'html', 'utf-8'))
        else:
            msg.attach(MIMEText(body, 'plain', 'utf-8'))

        try:
            server = smtplib.SMTP_SSL(self.smtp_host, self.smtp_port)
            server.login(self.smtp_user, self.smtp_password)
            server.sendmail(self.from_addr, to_addrs, msg.as_string())
            server.quit()
            print("邮件发送成功!")
        except Exception as e:
            print(f"邮件发送失败:{e}")

# 使用示例
if __name__ == "__main__":
    sender = EmailSender('smtp.example.com', 465, 'your_email@example.com', 'your_password', 'from_email@example.com')
    sender.send_email(['recipient1@example.com', 'recipient2@example.com'], 'Hello Email', 'This is the body of the email.')

**注意**:请替换`smtp.example.com`、`465`、`your_email@example.com`、`your_password`和`from_email@example.com`为你的SMTP服务器信息、端口号、SMTP用户名、SMTP密码和发件人邮箱地址。同时,确保SMTP服务器允许使用你的账号发送邮件,并且可能需要你开启SMTP服务的访问权限。

这个类`EmailSender`封装了发送邮件的基本逻辑,包括设置邮件内容、连接SMTP服务器、发送邮件和关闭连接。你可以根据需要调整它,比如添加附件、修改邮件格式等。