Python发送邮件:使用smtplib和email模块

发送邮件是我们在开发中经常遇到的需求,Python提供了smtplib和email模块来方便我们发送邮件。本文将介绍如何使用这两个模块进行邮件发送。



使用smtplib发送邮件

在使用smtplib发送邮件前,我们需要知道邮件服务器的地址、端口号、发送方的邮箱地址及密码。以下是一个简单的发送邮件的Python程序:

import smtplib
from email.mime.text import MIMEText

mail_host = "smtp.163.com" # 邮件服务器地址
mail_user = "sender@163.com" # 发送方邮箱地址
mail_pass = "password" # 发送方邮箱密码
to_email_list = ["receiver1@qq.com", "receiver2@163.com"] # 接收方邮箱地址列表

message = MIMEText("邮件正文内容", 'plain', 'utf-8') # 邮件内容
message['Subject'] = "邮件主题" # 邮件主题
message['From'] = mail_user # 发送方邮箱地址
message['To'] = ",".join(to_email_list) # 接收方邮箱地址列表

smtpObj = smtplib.SMTP() # 创建SMTP对象
smtpObj.connect(mail_host, 25) # 连接邮件服务器
smtpObj.login(mail_user, mail_pass) # 登录邮件服务器
smtpObj.sendmail(mail_user, to_email_list, message.as_string()) # 发送邮件
smtpObj.quit() # 退出邮件服务器

上述代码中,我们首先导入smtplib和email.mime.text模块,然后指定邮件服务器地址、发送方邮箱地址及密码、接收方邮箱地址列表、邮件主题和内容。我们使用smtplib.SMTP()创建SMTP对象,然后使用connect()方法连接邮件服务器,使用login()方法登录邮件服务器,最后使用sendmail()方法发送邮件。发送成功后,使用quit()方法退出邮件服务器。



使用email模块构造邮件

在上述代码中,我们使用了email.mime.text模块来构造邮件内容。实际上,email模块提供了更多的邮件类型,例如MIMEImage、MIMEMultipart等。以下是一个使用MIMEMultipart构造带附件的邮件的Python程序:

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

mail_host = "smtp.163.com" # 邮件服务器地址
mail_user = "sender@163.com" # 发送方邮箱地址
mail_pass = "password" # 发送方邮箱密码
to_email_list = ["receiver1@qq.com", "receiver2@163.com"] # 接收方邮箱地址列表

message = MIMEMultipart() # 创建MIMEMultipart对象
message['Subject'] = "邮件主题" # 邮件主题
message['From'] = mail_user # 发送方邮箱地址
message['To'] = ",".join(to_email_list) # 接收方邮箱地址列表

# 构造邮件正文内容
text = MIMEText("邮件正文内容", 'plain', 'utf-8')
message.attach(text)

# 构造附件
with open("attachment.png", "rb") as f:
    img = MIMEImage(f.read())
    img.add_header('Content-Disposition', 'attachment', filename="attachment.png")
    message.attach(img)

smtpObj = smtplib.SMTP() # 创建SMTP对象
smtpObj.connect(mail_host, 25) # 连接邮件服务器
smtpObj.login(mail_user, mail_pass) # 登录邮件服务器
smtpObj.sendmail(mail_user, to_email_list, message.as_string()) # 发送邮件
smtpObj.quit() # 退出邮件服务器

上述代码中,我们使用了MIMEMultipart对象构造邮件,其中包括邮件正文和附件。我们使用open()方法打开附件文件,然后使用MIMEImage对象构造附件,最后使用add_header()方法指定附件的文件名和类型,并使用attach()方法将附件添加到邮件中。



总结

本文介绍了如何使用Python中的smtplib和email模块进行邮件发送,重点讲解了如何使用smtplib发送邮件和如何使用email模块构造邮件。希望本文能够帮助编程小白学习Python发送邮件的相关知识。

猿教程
请先登录后发表评论
  • 最新评论
  • 总共0条评论