Python SMTP邮件发送

Python SMTP邮件发送

Python SMTP邮件发送

SMTP(Simple Mail Transfer Protocol)是用于发送电子邮件的标准协议。Python的smtplib模块可以通过SMTP发送邮件。在本文中,我们将介绍如何使用Python中的smtplib模块发送邮件。

准备工作

在使用Python发送邮件之前,需要先准备好发件人的邮箱和 SMTP 服务器的相关信息。首先,需要有一个有效的发件人邮箱地址和密码,并且知道发送邮件的 SMTP 服务器地址和端口号。

在这里我们以 Gmail 为例,因为它是使用最广泛的邮件服务器之一。你需要登录到你的 Gmail 帐号,并授权应用程序以发送电子邮件。在 Gmail 设置中找到“安全性”选项,启用“低安全性应用程序访问”。

发送简单文本邮件

首先,我们将演示如何发送一个简单的文本邮件。下面是一个使用Python发送简单文本邮件的示例代码:

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

def send_email(sender, recipient, subject, message):
    smtp_server = 'smtp.gmail.com'
    smtp_port = 587
    smtp_username = sender
    smtp_password = 'YourGmailPassword'

    msg = MIMEText(message, 'plain', 'utf-8')
    msg['From'] = formataddr((str(Header('发件人', 'utf-8')), sender))
    msg['To'] = formataddr((str(Header('收件人', 'utf-8')), recipient))
    msg['Subject'] = subject

    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls()
    server.login(smtp_username, smtp_password)
    server.sendmail(sender, [recipient], msg.as_string())
    server.quit()

sender = 'your-email@gmail.com'
recipient = 'recipient-email@gmail.com'
subject = 'Python SMTP邮件发送测试'
message = '这是一封来自Python SMTP的测试邮件。'

send_email(sender, recipient, subject, message)

运行以上代码,将会发送一封来自 your-email@gmail.com 发送给 recipient-email@gmail.com 的测试邮件。

发送带附件的邮件

下面是一个示例代码,演示如何发送带有附件的邮件:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
from email.header import Header
from email.utils import formataddr

def send_email_with_attachment(sender, recipient, subject, message, attachment_path):
    smtp_server = 'smtp.gmail.com'
    smtp_port = 587
    smtp_username = sender
    smtp_password = 'YourGmailPassword'

    msg = MIMEMultipart()
    msg['From'] = formataddr((str(Header('发件人', 'utf-8')), sender))
    msg['To'] = formataddr((str(Header('收件人', 'utf-8')), recipient))
    msg['Subject'] = subject

    body = MIMEText(message, 'plain')
    msg.attach(body)

    attachment = open(attachment_path, 'rb')
    part = MIMEBase('application', 'octet-stream')
    part.set_payload(attachment.read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', f'attachment; filename="{attachment_path}"')
    msg.attach(part)

    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls()
    server.login(smtp_username, smtp_password)
    server.sendmail(sender, [recipient], msg.as_string())
    server.quit()

sender = 'your-email@gmail.com'
recipient = 'recipient-email@gmail.com'
subject = 'Python SMTP邮件发送测试'
message = '这是一封带附件的测试邮件。'
attachment_path = 'attachment.pdf'

send_email_with_attachment(sender, recipient, subject, message, attachment_path)

运行以上代码,将会发送一封带有名为 attachment.pdf 的附件的测试邮件。

结语

通过Python中的smtplib模块,我们可以轻松地发送邮件。无论是发送简单的文本邮件还是带有附件的邮件,所需的代码量都很少。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程