欢迎访问宙启技术站
智能推送

用Python打造一个自动发邮件的botBot()

发布时间:2023-12-11 06:52:28

要用Python打造一个自动发邮件的bot,可以使用smtplib模块来实现邮件发送功能,同时可以使用email模块来构建邮件的内容。以下是一个使用例子,并附带了详细的解释。

首先,需要导入smtplib和email模块:

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

接着,可以定义一个Bot类,用于发送邮件的操作:

class Bot():
    def __init__(self, sender_email, sender_password):
        self.sender_email = sender_email
        self.sender_password = sender_password

    def send_email(self, receiver_email, subject, body, attachments=None):
        # 创建一个包含邮件内容的对象
        message = MIMEMultipart()
        message["From"] = self.sender_email
        message["To"] = receiver_email
        message["Subject"] = subject

        # 添加邮件正文
        message.attach(MIMEText(body, "plain"))
        
        # 如果有附件,添加到邮件中
        if attachments:
            for attachment in attachments:
                with open(attachment, "rb") as file:
                    attachment_file = MIMEText(file.read(), "base64", "utf-8")
                    attachment_file["Content-Disposition"] = f"attachment; filename={attachment}"
                    message.attach(attachment_file)

        # 发送邮件
        with smtplib.SMTP_SSL("smtp.gmail.com", 465) as server:
            server.login(self.sender_email, self.sender_password)
            server.sendmail(self.sender_email, receiver_email, message.as_string())
            print("邮件发送成功!")

在这个Bot类中,初始化函数需要传入发件人的邮箱和密码,用于登录SMTP服务器。send_email方法用于发送邮件,参数包括收件人邮箱、主题、正文和附件(可选)。邮件的内容使用MIMEMultipart对象来构建,可以添加文本和附件。最后,使用smtplib.SMTP_SSL类登录SMTP服务器并发送邮件。

现在,我们可以创建一个Bot对象,然后调用send_email方法发送邮件:

bot = Bot("your_email@gmail.com", "your_password")
bot.send_email("receiver_email@example.com", "Hello", "This is a test email.")

以上代码可以发送一个简单的带有文本内容的邮件。

如果要发送带有附件的邮件,可以修改send_email方法的调用,例如:

attachments = ["attachment1.txt", "attachment2.jpg"]
bot.send_email("receiver_email@example.com", "Hello", "This is a test email with attachments.", attachments)

其中,attachments是一个包含需要附加的文件路径的列表。

这就是用Python打造一个自动发邮件的bot的例子。根据需要,可以对其进行扩展以满足更多的邮件发送需求。