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

Python发送电子邮件和MIMEText附件

发布时间:2023-12-23 09:53:07

发送电子邮件是网络编程中常见的一个任务。Python的smtplib模块提供了一个简单的方法来发送电子邮件。

首先,需要设置SMTP服务器的信息。SMTP是用于发送邮件的协议,各个邮件服务提供商会提供自己的SMTP服务器信息。例如,Gmail的SMTP服务器是smtp.gmail.com,端口是587。

然后,需要通过smtplib模块创建一个SMTP对象,并使用SMTP服务器的登录信息进行登录。登录信息包括用户名和密码。

接下来,可以使用SMTP对象的方法来发送邮件。smtplib模块提供了sendmail方法,它接收发送者、接收者、邮件内容等信息,并将邮件发送出去。sendmail方法的 个参数是发送者的邮箱地址,第二个参数是接收者的邮箱地址,第三个参数是邮件内容。

最后,记得调用SMTP对象的quit方法,以释放资源。

下面是一个示例代码,演示了如何使用Python发送电子邮件:

import smtplib
from email.mime.text import MIMEText

def send_email():
    # 设置SMTP服务器信息
    smtp_server = 'smtp.gmail.com'
    smtp_port = 587  # Gmail的SMTP端口是587

    # 设置登录信息
    sender = 'your_email@gmail.com'
    password = 'your_password'
    receiver = 'receiver_email@gmail.com'

    # 创建SMTP对象并登录
    smtp_obj = smtplib.SMTP(smtp_server, smtp_port)
    smtp_obj.starttls()  # 使用TLS加密传输
    smtp_obj.login(sender, password)

    # 创建邮件内容
    subject = 'Test Email'
    content = 'This is a test email from Python.'
    message = MIMEText(content, 'plain', 'utf-8')
    message['Subject'] = subject
    message['From'] = sender
    message['To'] = receiver

    # 发送邮件
    smtp_obj.sendmail(sender, receiver, message.as_string())

    # 退出SMTP对象
    smtp_obj.quit()

if __name__ == '__main__':
    send_email()

上述代码中,首先设置了SMTP服务器的信息,这里是Gmail的SMTP信息。然后设置了发送者的邮箱地址和密码以及接收者的邮箱地址。接下来,创建了SMTP对象并调用starttls方法使用TLS加密传输。然后使用login方法登录SMTP服务器。

然后,创建了邮件内容,这里以纯文本形式发送邮件。使用MIMEText类将内容和MIME类型设置为plain,编码设置为utf-8。设置了主题、发件人和收件人等信息。

最后,调用sendmail方法发送邮件,并调用quit方法退出SMTP对象。

在实际使用中,可以根据需要自定义邮件的内容和格式。另外,还可以添加附件。MIMEText类只能发送纯文本邮件,如果需要发送HTML邮件或带有附件的邮件,需要使用email.mime.multipart模块中的相关类。

下面是一个发送带有附件的邮件的例子:

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

def send_email_with_attachment():
    # 设置SMTP服务器信息
    smtp_server = 'smtp.gmail.com'
    smtp_port = 587  # Gmail的SMTP端口是587

    # 设置登录信息
    sender = 'your_email@gmail.com'
    password = 'your_password'
    receiver = 'receiver_email@gmail.com'

    # 创建SMTP对象并登录
    smtp_obj = smtplib.SMTP(smtp_server, smtp_port)
    smtp_obj.starttls()  # 使用TLS加密传输
    smtp_obj.login(sender, password)

    # 创建邮件内容
    subject = 'Test Email with Attachment'
    content = 'This is a test email with attachment from Python.'
    image_path = 'path_to_image.jpg'  # 图片的路径

    message = MIMEMultipart()
    message['Subject'] = subject
    message['From'] = sender
    message['To'] = receiver

    # 添加文本内容
    text = MIMEText(content, 'plain', 'utf-8')
    message.attach(text)

    # 添加图片附件
    with open(image_path, 'rb') as f:
        image_data = f.read()
    image = MIMEImage(image_data)
    image.add_header('Content-Disposition', 'attachment', filename='image.jpg')
    message.attach(image)

    # 发送邮件
    smtp_obj.sendmail(sender, receiver, message.as_string())

    # 退出SMTP对象
    smtp_obj.quit()

if __name__ == '__main__':
    send_email_with_attachment()

上述代码中,首先设置了SMTP服务器的信息。然后设置了发送者的邮箱地址和密码以及接收者的邮箱地址。接下来,创建了SMTP对象并调用starttls方法使用TLS加密传输,并登录SMTP服务器。

然后,创建了邮件内容,使用MIMEMultipart类来包装邮件内容。设置主题、发件人和收件人等信息。

然后,添加了文本内容和图片附件。使用MIMEText类添加文本内容,使用MIMEImage类添加图片附件。

最后,调用sendmail方法发送带有附件的邮件,并调用quit方法退出SMTP对象。

这些例子展示了如何使用Python发送电子邮件和带有附件的电子邮件。通过smtplib模块和email模块,我们可以方便地进行邮件发送编程。在实际使用中,可以根据需要进一步扩展邮件内容和附件的类型。