懒人必备Python代码之自动发送邮件
邮件是我们日常生活中常用的一种通信方式,而在工作中,更是必不可少的一种沟通方式。借助Python的自动发送邮件功能,可以简化我们发送邮件的流程,提高我们的工作效率。
准备工作
在使用Python发送邮件之前,需要先进行一些准备工作:
-
申请邮箱SMTP服务的授权码,以便Python能够使用这个账户发送邮件。
-
在本地安装Python的smtplib和email库。
-
确定邮件的发送者、接收者、主题和内容。
发送邮件示例
下面,我们将使用Python的smtplib和email库,编写一个示例实现自动发送邮件的功能。
示例1:纯文本邮件的发送
# 导入库
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 设置发送方信息和邮件内容
sender = 'example@163.com'
receiver = 'example@qq.com'
subject = 'Python SMTP 测试'
mail_msg = 'Python 邮件测试'
# MIMEText为邮件正文的数据类型
message = MIMEText(mail_msg.encode('utf-8'), 'plain', 'utf-8')
message['From'] = Header('Python学习者', 'utf-8') # 发送者信息
message['To'] = Header('Python爱好者', 'utf-8') # 接收者信息
message['Subject'] = Header(subject, 'utf-8') # 邮件标题
# 设置SMTP服务器信息和授权码
smtp_server = 'smtp.163.com'
smtp_port = 25
smtp_username = 'example@163.com'
smtp_password = '********'
# 发送邮件
try:
smtpObj = smtplib.SMTP(smtp_server, smtp_port)
smtpObj.login(smtp_username, smtp_password)
smtpObj.sendmail(sender, receiver, message.as_string())
print('邮件发送成功')
except smtplib.SMTPException as e:
print('邮件发送失败')
在示例1中,我们通过smtp库的SMTP()方法创建SMTP服务器连接对象,然后通过login()方法登录账户,最后通过sendmail()方法发送邮件。邮件的内容和邮件格式都通过email库中的MIMEText类来处理。其中,message对象中包含了邮件正文、发送者、接收者、邮件标题等信息。
示例2:包含附件的邮件的发送
# 导入库
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
# 设置发送方信息和邮件内容
sender = 'example@163.com'
receiver = 'example@qq.com'
subject = 'Python SMTP 测试'
mail_msg = 'Python 邮件测试'
message = MIMEMultipart() # 邮件对象
message['From'] = Header('Python学习者', 'utf-8') # 发送者信息
message['To'] = Header('Python爱好者', 'utf-8') # 接收者信息
message['Subject'] = Header(subject, 'utf-8') # 邮件标题
# 构造附件并添加到邮件对象中
part = MIMEApplication(open('example.pdf', 'rb').read())
part.add_header('Content-Disposition', 'attachment', filename='example.pdf')
message.attach(part)
# 构造邮件正文并添加到邮件对象中
text = MIMEText(mail_msg.encode('utf-8'), 'plain', 'utf-8')
message.attach(text)
# 设置SMTP服务器信息和授权码
smtp_server = 'smtp.163.com'
smtp_port = 25
smtp_username = 'example@163.com'
smtp_password = '********'
# 发送邮件
try:
smtpObj = smtplib.SMTP(smtp_server, smtp_port)
smtpObj.login(smtp_username, smtp_password)
smtpObj.sendmail(sender, receiver, message.as_string())
print('邮件发送成功')
except smtplib.SMTPException as e:
print('邮件发送失败')
在示例2中,邮件内容包含了一个附件(example.pdf
),通过MIMEApplication类来处理附件。同时,还需要额外添加一个文本邮件正文(mail_msg
),并结合收件人、主题等信息构造message对象。乔装打扮完毕后,接下来的操作方式跟示例1基本一致。
注意事项
-
注意邮件正文和附件的格式,需要按照email库的要求转化成合适的类型(如MIMEText、MIMEMultipart等)。
-
发送邮件之前,需要设置好SMTP服务器及账户所需的授权码。
-
根据不同的邮件客户端(如QQ、Gmail、Outlook等)的不同设置,可能需要更改SMTP服务器的地址和端口号。
以上就是关于使用Python发送邮件的详细攻略,希望能够帮助大家简化日常工作中的邮件发送流程。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:懒人必备Python代码之自动发送邮件 - Python技术站