您的位置:

Python SMTP邮件发送教程

一、准备工作

在开始使用Python发送邮件之前,您应该确保已经安装了Python的smtplib和email模块。如果您还没有安装这两个模块,请使用以下命令进行安装:


pip install smtplib
pip install email

二、连接SMTP服务器

在使用Python发送邮件之前,您需要连接到SMTP服务器。可以使用Python的smtplib模块通过以下步骤连接SMTP服务器:

  1. 导入smtplib模块。
  2. 使用smtp()方法创建SMTP对象。
  3. 使用connect()方法连接SMTP服务器。
  4. 使用login()方法登录SMTP服务器。

以下是连接SMTP服务器的示例代码:


import smtplib

smtp_server = "smtp.example.com"
smtp_port = 587
smtp_username = "username"
smtp_password = "password"

server = smtplib.SMTP(smtp_server, smtp_port)
server.ehlo()
server.starttls()
server.login(smtp_username, smtp_password)

三、创建邮件内容

在连接到SMTP服务器并登录之后,您可以创建邮件内容并发送邮件。使用Python的email模块可以方便地创建邮件内容。以下是一个创建简单邮件内容的示例代码:


from email.mime.text import MIMEText
from email.header import Header

message = MIMEText('This is a test email from Python.', 'plain', 'utf-8')
message['From'] = Header('Me', 'utf-8')
message['To'] = Header('You', 'utf-8')
message['Subject'] = Header('Test email from Python', 'utf-8')

四、发送邮件

在创建邮件内容之后,您可以使用Python的smtplib模块的sendmail()方法发送邮件。以下是发送邮件的示例代码:


from_address = "me@example.com"
to_address = "you@example.com"

server.sendmail(from_address, to_address, message.as_string())
server.quit()

五、带附件的邮件

除了创建简单邮件内容外,您还可以使用Python的email.mime.multipart模块创建带附件的邮件。以下是一个创建带附件的邮件的示例代码:


from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication

message = MIMEMultipart()
message['From'] = Header('Me', 'utf-8')
message['To'] = Header('You', 'utf-8')
message['Subject'] = Header('Test email from Python', 'utf-8')

body = MIMEText('This is a test email from Python.', 'plain', 'utf-8')
message.attach(body)

with open('example.pdf', 'rb') as f:
    attachment = MIMEApplication(f.read(), _subtype='pdf')
    attachment.add_header('Content-Disposition', 'attachment', filename='example.pdf')
    message.attach(attachment)

from_address = "me@example.com"
to_address = "you@example.com"

server.sendmail(from_address, to_address, message.as_string())
server.quit()

六、使用SSL连接SMTP服务器

如果SMTP服务器要求使用SSL连接,您可以使用Python的smtplib模块的SMTP_SSL()方法连接SMTP服务器。以下是连接SSL SMTP服务器的示例代码:


import smtplib

smtp_server = "smtp.example.com"
smtp_port = 465
smtp_username = "username"
smtp_password = "password"

server = smtplib.SMTP_SSL(smtp_server, smtp_port)
server.ehlo()
server.login(smtp_username, smtp_password)

七、结论

Python的smtplib和email模块提供了方便的功能来发送邮件。通过连接SMTP服务器、创建邮件内容和发送邮件,您可以轻松地使用Python发送电子邮件。