当你需要通过Python发送电子邮件时,你可以使用Python的内置标准库smtplib库进行邮件发送。本文将简单介绍如何使用Python内置smtplib库来发送邮件。
步骤一:连接SMTP服务器
首先,我们需要使用smtplib库中的SMTP类来与SMTP服务器建立连接。在连接类SMTP服务器之前,你需要提供SMTP服务器主机名和端口号,可以是邮件服务提供商的主机名和端口号。
import smtplib
smtp_server = "smtp.example.com"
port = 587 # 根据邮件服务提供商的信息确定端口号
# 建立连接
server = smtplib.SMTP(smtp_server, port)
server.starttls() # 开启TLS加密
步骤二:登录SMTP服务器
一旦成功与SMTP服务器建立连接,我们需要使用自己的帐户名和口令登录到SMTP服务器中。SMTP服务器会检查我们提供的帐户名和口令是否正确,并确保我们正在连接到邮箱的原主人。
import smtplib
smtp_server = "smtp.example.com"
port = 587
# 建立连接
server = smtplib.SMTP(smtp_server, port)
server.starttls()
# 登录邮箱
username = "myemail@example.com"
password = "mypassword"
server.login(username, password)
步骤三:构造邮件信息
现在,我们已经登录到SMTP服务器,可以通过构建邮件来发送电子邮件了。我们需要使用Python的email库来构造邮件,该库提供了相应的类来创建电子邮件中的各个部分:Headers、Message和MIME。
以下是一个电子邮件的结构示意图:
+--------------+
| Header |
+--------------+
| Message |
+--------------+
| Attachmen |
| ts |
+--------------+
创建 Headers
Header是邮件的详细信息,如收件人、发件人、主题和时间等信息。 构造它的方法是使用Python的email库中的相关功能。
from email.mime.text import MIMEText
from email.header import Header
# 创建Header对象
subject = '邮件主题'
charset = 'utf-8'
header = Header(subject, charset)
创建 Text Message
接下来,我们将创建文本消息并将其添加到电子邮件中。我们将使用Python的email库中的MIMEText类来实现此操作。
from email.mime.text import MIMEText
from email.header import Header
# 创建Header对象
subject = '邮件主题'
charset = 'utf-8'
header = Header(subject, charset)
# 创建MIMEText对象
msg = '邮件正文'
msg = MIMEText(msg, 'plain', charset)
msg['Subject'] = header
创建 HTML Message
我们也可以创建一个HTML消息,它通常用于更好的电子邮件展示。我们将使用Python的email库中的MIMEText类来实现此操作,并在将Content-type设置为text/html时指定消息类型。
from email.mime.text import MIMEText
from email.header import Header
# 创建Header对象
subject = '邮件主题'
charset = 'utf-8'
header = Header(subject, charset)
# 创建MIMEText对象
msg = '<h1>邮件正文</h1>'
msg = MIMEText(msg, 'html', charset)
msg['Subject'] = header
步骤四:发送邮件
现在,邮件已准备好发送了,我们需要使用SMTP类的sendmail()方法来实际发送邮件。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
smtp_server = "smtp.example.com"
port = 587
# 建立连接
server = smtplib.SMTP(smtp_server, port)
server.starttls()
# 登录邮箱
username = "myemail@example.com"
password = "mypassword"
server.login(username, password)
# 构造邮件
subject = '邮件主题'
charset = 'utf-8'
header = Header(subject, charset)
msg = '<h1>邮件正文</h1>'
msg = MIMEText(msg, 'html', charset)
msg['Subject'] = header
# 发送邮件
from_addr = "myemail@example.com"
to_addr = "recipient@example.com"
server.sendmail(from_addr, to_addr, msg.as_string())
示例说明
示例一
以下是一个完整的Python程序,它使用smtplib库发送电子邮件,提供了收件人、主题和正文等信息。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 登录邮箱
smtp_server = "smtp.example.com"
port = 587
server = smtplib.SMTP(smtp_server, port)
server.starttls()
username = "myemail@example.com"
password = "mypassword"
server.login(username, password)
# 构造邮件
subject = 'Hello, World!'
charset = 'utf-8'
header = Header(subject, charset)
msg = 'This is an example email sent with Python.'
msg = MIMEText(msg, 'plain', charset)
msg['Subject'] = header
# 发送邮件
from_addr = "myemail@example.com"
to_addr = "recipient@example.com"
server.sendmail(from_addr, to_addr, msg.as_string())
# 结束连接
server.quit()
示例二
以下是一个完整的Python程序,它使用smtplib库发送电子邮件,包括HTML正文和附件。
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header
# 登录邮箱
smtp_server = "smtp.example.com"
port = 587
server = smtplib.SMTP(smtp_server, port)
server.starttls()
username = "myemail@example.com"
password = "mypassword"
server.login(username, password)
# 构造邮件
subject = 'Hello, World!'
charset = 'utf-8'
header = Header(subject, charset)
msg = MIMEMultipart() # 多部分邮件
# HTML正文
html_msg = '<h1>This is an example email sent with Python</h1>'
html = MIMEText(html_msg, 'html', charset)
msg.attach(html)
# 附件
with open('example.docx', 'rb') as file:
attach = MIMEApplication(file.read(), _subtype='docx')
attach.add_header('content-disposition', 'attachment', filename='example.docx')
msg.attach(attach)
msg['Subject'] = header
# 发送邮件
from_addr = "myemail@example.com"
to_addr = "recipient@example.com"
server.sendmail(from_addr, to_addr, msg.as_string())
# 结束连接
server.quit()
以上就是使用Python的smtplib库发送邮件的攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python smtp邮件发送模块用法教程 - Python技术站