python实现邮件发送

本文为
痛点就是起点
原创文章,可以随意转载,但需注明出处。
在爬虫开发中,爬虫运行过程中遇到异常或服务器遇到问题时,我们可以采用发送邮件,及时报告爬虫程序当前故障问题。
邮件发送协议是SMTP
,python
内置对SMTP
的支持,可以发送纯文本邮件、HTML
邮件以及带附件的邮件。python
中对SMTP
支持有 smtpplib
和email
模块,email
负责构造邮件,smtplib
负责发送邮件。
-
以网易的邮件发送服务器为例
smtp.163.com
,需要开启网易邮箱的smtp
功能。 -
构造纯文本邮件。
from email.mime.text import MIMEText
msg = MIMEText("你好,世界!", "plain", "utf-8")
构造html
邮件。
from email.mime.text import MIMEText
msg = MIMEText("<a href='https://痛点就是起点.win/'>my blog</a>", "html", "utf-8")
- 设置发件人信息、收件人信息和邮件主题信息。
from_addr = "yhw_software@163.com"
password = "********"
to_addr = "yhw_software@qq.com"
smtp_server = "smtp.163.com"
msg['From'] = format_addr("我是 <%s>" % from_addr)
msg["To"] = format_addr("你是 <%s>" % to_addr)
msg["Subject"] = Header("晚安", "utf-8").encode()
- 发送邮件。
server = smtplib.SMTP(smtp_server, 25)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
完整代码如下所示。
# coding: utf-8
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
def format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, "utf-8").encode(), addr))
from_addr = "yhw_software@163.com"
password = "*********"
to_addr = "yhw_software@qq.com"
smtp_server = "smtp.163.com"
msg = MIMEText("晚上好!", "plain", "utf-8")
msg['From'] = format_addr("我是 <%s>" % from_addr)
msg["To"] = format_addr("你是 <%s>" % to_addr)
msg["Subject"] = Header("晚安", "utf-8").encode()
server = smtplib.SMTP(smtp_server, 25)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()