简单邮件发送功能
发布人:shili8
发布时间:2025-03-04 22:30
阅读次数:0
**简单邮件发送功能**
在现代应用中,邮件发送功能是必不可少的一部分。以下是一份简单的邮件发送功能实现。
### **功能描述**
本功能支持以下操作:
* 发送普通邮件* 发送带附件的邮件* 支持多个收件人### **技术选型**
本功能使用 Python3.x 和 smtplib 库来实现。smtplib 是一个用于发送电子邮件的库。
### **代码实现**
#### **配置文件**
首先,我们需要创建一个配置文件来存储我们的 SMTP 账户信息。
# config.pySMTP_SERVER = 'smtp.gmail.com' # SMTP服务器地址SMTP_PORT =587 # SMTP 端口号FROM_EMAIL = 'your_email@gmail.com' # 发件人邮箱PASSWORD = 'your_password' # 发件人密码
#### **邮件发送类**
接下来,我们创建一个邮件发送类来封装我们的邮件发送逻辑。
# mail_sender.pyimport smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.mime.base import MIMEBasefrom email.utils import COMMASPACE, formatdatefrom config import SMTP_SERVER, SMTP_PORT, FROM_EMAIL, PASSWORDclass MailSender: def __init__(self): self.smtp_server = SMTP_SERVER self.smtp_port = SMTP_PORT self.from_email = FROM_EMAIL self.password = PASSWORD def send_mail(self, to_emails, subject, body, attachments=None): msg = MIMEMultipart() msg['From'] = self.from_email msg['To'] = COMMASPACE.join(to_emails) msg['Date'] = formatdate(localtime=True) msg['Subject'] = subject msg.attach(MIMEText(body)) if attachments is not None: for attachment in attachments: part = MIMEBase('application', 'octet-stream') part.set_payload(open(attachment, 'rb').read()) encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(attachment)) msg.attach(part) server = smtplib.SMTP(self.smtp_server, self.smtp_port) server.starttls() server.login(self.from_email, self.password) text = msg.as_string() server.sendmail(self.from_email, to_emails, text) server.quit() # 使用示例if __name__ == '__main__': mail_sender = MailSender() to_emails = ['recipient1@example.com', 'recipient2@example.com'] subject = 'Test Email' body = 'This is a test email.' attachments = ['attachment1.txt', 'attachment2.pdf'] mail_sender.send_mail(to_emails, subject, body, attachments)
### **使用示例**
在上面的代码中,我们创建了一个 `MailSender` 类来封装我们的邮件发送逻辑。我们可以通过实例化这个类并调用其 `send_mail` 方法来发送邮件。
在使用示例部分,我们演示了如何使用这个类来发送普通邮件和带附件的邮件。
### **注意事项**
请注意,smtplib 库需要 SMTP服务器地址、端口号、发件人邮箱和密码等信息。这些信息可以通过配置文件或环境变量传递给我们的 `MailSender` 类。
此外,请确保在使用 smtplib 库时,SMTP服务器支持 TLS 或 SSL 协议,以便我们能够安全地发送邮件。
最后,请注意,在实际应用中,我们可能需要处理更多的错误和异常情况。