您的位置:

使用Python SMTP Server轻松发送邮件

一、使用Python SMTP Server发送邮件的优势

Python提供了一个简单而强大的SMTP模块,方便开发者使用Python代码发送邮件。使用Python SMTP Server发送邮件的优势主要有以下几点:

1、Python SMTP Server模块提供了许多高级功能,例如SSL支持、身份验证和多个收件人。

2、使用Python SMTP Server发送邮件比使用其他邮件客户端发送邮件更方便和安全。

3、Python SMTP Server对于邮件服务器错误的处理能力很强,让开发者可以轻松处理邮件发送失败、服务器不可用和其他网络问题。

二、Python SMTP Server发送简单的文本邮件

下面是一个使用Python SMTP Server发送简单文本邮件的代码示例:

import smtplib

# 发送人邮箱
sender_email = "sender@example.com"
# 接收人邮箱
receiver_email = "receiver@example.com"

# SMTP服务器
smtp_server = "smtp.example.com"
smtp_port = 587

# 发送人邮箱及密码
username = "sender@example.com"
password = "password"

# 邮件内容
message = """\
Subject: Hello, World!

This is a plain text email from Python SMTP Server.
"""

# SSL加密方式
context = ssl.create_default_context()

# 发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls(context=context)
    server.login(username, password)
    server.sendmail(sender_email, receiver_email, message)

在代码中,我们首先将SMTP服务器的地址、端口号、邮箱和密码等信息设置好,并将要发送的邮件内容填写好,之后使用SMTP模块的SMTP()方法连接上SMTP服务器,并使用starttls()方法开启SSL加密。

最后使用login()方法登录SMTP服务器,使用sendmail()方法将邮件发送给指定收件人。其中,sendmail()方法的三个参数分别为发送人邮箱、接收人邮箱以及邮件内容。

三、Python SMTP Server发送带附件邮件

下面是一个使用Python SMTP Server发送带附件邮件的代码示例:

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

# 发送人邮箱
sender_email = "sender@example.com"
# 接收人邮箱
receiver_email = "receiver@example.com"

# SMTP服务器
smtp_server = "smtp.example.com"
smtp_port = 587

# 发送人邮箱及密码
username = "sender@example.com"
password = "password"

# 邮件内容
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = "Python SMTP Server with Attachment"

# 添加正文
message.attach(MIMEText("This is a plain text email with attachment from Python SMTP Server."))

# 添加附件
with open("example.jpg", "rb") as attachment:
    part = MIMEApplication(attachment.read(), _subtype="jpg")
    part.add_header('Content-Disposition', "attachment", filename="example.jpg")
    message.attach(part)

# SSL加密方式
context = ssl.create_default_context()

# 发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls(context=context)
    server.login(username, password)
    server.sendmail(sender_email, receiver_email, message.as_string())

我们可以在创建邮件内容message的时候,使用MIMEMultipart()方法创建一个带有多个部分的邮件。其中一部分是正文,另一部分是附件。我们使用MIMEText()方法将正文内容添加到邮件内容中,使用MIMEApplication()方法添加附件并指定附件的文件名,之后使用add_header()方法指定附件的内容。

在发送邮件的时候,我们使用了as_string()方法将邮件内容转换为字符串形式,并使用sendmail()方法发送邮件。

四、Python SMTP Server发送HTML邮件

下面是一个使用Python SMTP Server发送HTML邮件的代码示例:

import smtplib
import ssl
from email.mime.text import MIMEText

# 发送人邮箱
sender_email = "sender@example.com"
# 接收人邮箱
receiver_email = "receiver@example.com"

# SMTP服务器
smtp_server = "smtp.example.com"
smtp_port = 587

# 发送人邮箱及密码
username = "sender@example.com"
password = "password"

# 邮件内容
message = MIMEText("

Hello, World!

This is a HTML email from Python SMTP Server.

", "html") message["From"] = sender_email message["To"] = receiver_email message["Subject"] = "Python SMTP Server with HTML" # SSL加密方式 context = ssl.create_default_context() # 发送邮件 with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls(context=context) server.login(username, password) server.sendmail(sender_email, receiver_email, message.as_string())

在这个代码示例中,我们使用了MIMEText()方法创建邮件内容。我们将邮件内容目标类型设置为html,并在邮件内容中嵌入HTML标记。在最后发送邮件时,我们也是使用as_string()方法将邮件内容转换为字符串形式。

五、Python SMTP Server发送带有图片的HTML邮件

下面是一个使用Python SMTP Server发送带有图片的HTML邮件的代码示例:

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

# 发送人邮箱
sender_email = "sender@example.com"
# 接收人邮箱
receiver_email = "receiver@example.com"

# SMTP服务器
smtp_server = "smtp.example.com"
smtp_port = 587

# 发送人邮箱及密码
username = "sender@example.com"
password = "password"

# 邮件内容
message = MIMEMultipart("related")
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = "Python SMTP Server with Image"

# 添加HTML内容
body = """
    

Hello, World!

This is a HTML email with image from Python SMTP Server.

""" message.attach(MIMEText(body, "html")) # 添加图片 with open("example.jpg", "rb") as image: img = MIMEImage(image.read()) img.add_header('Content-ID', '') message.attach(img) # SSL加密方式 context = ssl.create_default_context() # 发送邮件 with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls(context=context) server.login(username, password) server.sendmail(sender_email, receiver_email, message.as_string())

在这个代码示例中,我们使用了MIMEMultipart()方法创建邮件内容,将多个邮件正文及图片组合在一起。我们使用MIMEText()方法将邮件正文指定为HTML格式,并在邮件内容中嵌入<img>标记以显示图片。

在添加图片img时,我们使用了add_header()方法指定了图片的Content-ID。相应地,在嵌入图片的<img>标记中,我们使用了cid:协议方案指定了图片的Content-ID,达到了在HTML邮件中嵌入图片的效果。

六、总结

通过本篇文章的介绍,我们可以看到Python SMTP Server提供了非常强大的功能,只需要几行Python代码即可轻松发送各种类型的邮件。使用Python SMTP Server不仅方便,而且也更加安全和稳定,可以满足开发者对邮件发送的各种要求。