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模块,我们可以轻松地发送邮件。无论是发送简单的文本邮件还是带有附件的邮件,所需的代码量都很少。