前言
拒绝重复劳动,一切皆可程序化。
工作中的日报、周报、工作总结等任务,都会用到邮箱。当程序出错的时候,开发人员需要将错误信息发送到指定的邮箱。其实,这样的工作都可以交给程序自动化完成,我们要做的就是静静地享受程序带来的乐趣。
Python的“优势”
因为基于Python开发出许多优秀的第三方库,所以工作中的多数事情都可能用python来程序化,甚至,使用现存的资源可以帮助你完成从前做不到的事。
Python是一个很优秀的编程语言,通过他,可以让你的工作更多产、更高效。即便你不是一名出色的技术工程师,也可以很快的用Python完成自己的想法,利用Python,为你的工作和生活带来带来便利。
优秀的第三方库
smtplib
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。
简单的三步完成
1、从smtplib中导入相应的文件
import smtplibfrom email.mime.text import MIMETextfrom email.header import Header
MIMEText主要负责编辑发送内容,需要传入三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码。
Header主要负责邮件的主题,完善邮件的发送人、接收人、标题等信息。
2、基本信息
# 发送方信息SENDER = "***" # 发送人名称SEND_EMAIL = '*****' # 发送人的邮箱# 接受方信息RECEIVER = "**" # 接受方名称RECEIVER_EMAIL = ['****'] # 接受方的邮箱ACTIVE_CODE = "**********" # 申请的口令SUBJECT = '来自异世界的一封信!' # 邮件主题CONNECT_EMAIL = "smtp.qq.com"
使用常量来定义发送方和接受方的邮箱地址、邮件的主题。
使用第三方 SMTP 服务发送,这里使用了 QQ 邮箱(你也可以使用 163,Gmail等)的 SMTP 服务。
3、发送内容
def send_email(self):# 邮件信息 message = MIMEText(self.content, 'plain', 'utf-8') message['From'] = Header(self.sender, 'utf-8') message['To'] = Header(self.receiver, 'utf-8') message['Subject'] = Header(self.subject, 'utf-8')# 发送邮件 try: mail = smtplib.SMTP() mail.connect(self.connect_email) mail.login(self.sender_email, self.active_code) mail.sendmail(self.sender_email, self.receive_email, message.as_string()) mail.quit() return "邮件发送成功" except Exception as e: return 'Error:无法发送邮箱' + str(e)
使用异常捕获,当发送邮件失败,会返回错误信息。
完整代码
import smtplibfrom email.mime.text import MIMETextfrom email.header import Header# 发送方信息SENDER = "***" # 发送人名称SEND_EMAIL = '*****' # 发送人的邮箱# 接受方信息RECEIVER = "**" # 接受方名称RECEIVER_EMAIL = ['****'] # 接受方的邮箱ACTIVE_CODE = "**********" # 申请的口令SUBJECT = '来自异世界的一封信' # 邮件主题CONNECT_EMAIL = "smtp.qq.com"class SendEmail: def __init__(self, content): self.sender = SENDER self.sender_email = SEND_EMAIL self.active_code = ACTIVE_CODE self.receiver = RECEIVER self.receive_email = RECEIVER_EMAIL self.subject = SUBJECT self.connect_email = CONNECT_EMAIL self.content = content def send_email(self): message = MIMEText(self.content, 'plain', 'utf-8') message['From'] = Header(self.sender, 'utf-8') message['To'] = Header(self.receiver, 'utf-8') message['Subject'] = Header(self.subject, 'utf-8') try: mail = smtplib.SMTP() mail.connect(self.connect_email) mail.login(self.sender_email, self.active_code) mail.sendmail(self.sender_email, self.receive_email, message.as_string()) mail.quit() return "邮件发送成功" except Exception as e: return 'Error:无法发送邮箱' + str(e)if __name__ == '__main__': text = "你好,我是帅帅的Python" s = SendEmail(content=text) print(s.send_email())
定义一个SendEmail类,在main中只需要替换text中的文本,运行后就可以发送内容。