一、使用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不仅方便,而且也更加安全和稳定,可以满足开发者对邮件发送的各种要求。