博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 使用 Postfix 发送邮件
阅读量:5036 次
发布时间:2019-06-12

本文共 2438 字,大约阅读时间需要 8 分钟。

最近在做一个监控程序,需要用邮件发送告警。以前是使用注册的免费邮来发送,但是这样不免有很多限制,而且有时还会当作恶意登录,帐号异常等,还不让登录邮箱了。利用提供邮件SMTP服务,可以很自由的发送邮件,任意定义发送者的邮箱地址。感觉都可以用来恶作剧,用别人的邮箱来发邮件呢。

安装 Postfix

如果是 Ubuntu,请使用

sudo apt-get install postfix

如果是 Centos,请使用

yum install postfix

接下来需要进行一些配置

选择Internet Site

这里选择Internet Site

设置FQDN

然后让设置FQDN,但是使用默认的机器名即可,这里不是很确定。

使用 Python 发送邮件

使用给出的完美例子

#! /usr/bin/env python# -*- coding: utf-8 -*-import smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.base import MIMEBasefrom email.mime.text import MIMETextfrom email.utils import COMMASPACE, formatdatefrom email import Encodersimport osdef send_mail(mail_to, mail_from, subject, text, files, server="localhost"):    assert type(mail_to) == list    assert type(files) == list    msg = MIMEMultipart()    msg['From'] = mail_from    msg['To'] = COMMASPACE.join(mail_to)    msg['Date'] = formatdate(localtime=True)    msg['Subject'] = subject    # 如果 text 是html,则需要设置 _subtype='html'    # 默认情况下 _subtype='plain',即纯文本    # msg.attach(MIMEText(text, _subtype='html', _charset='utf-8'))    msg.attach(MIMEText(text, _charset='utf-8'))    for f in files:        part = MIMEBase('application', "octet-stream")        part.set_payload(open(f, "rb").read())        Encoders.encode_base64(part)        part.add_header('Content-Disposition', 'attachment; filename="%s"'                        % os.path.basename(f))        msg.attach(part)    smtp = smtplib.SMTP(server)    smtp.sendmail(mail_from, mail_to, msg.as_string())    smtp.close()if __name__ == '__main__':    # Example:    # 这里可以任意定制发送者的邮箱地址    send_mail(['your_name 
'], 'MonitorBase
', 'Hello Python!', 'Say hello to Python! :)', [])

最后把使用 SMTP 登录邮箱发送邮件的方法也附上

#! /usr/bin/env python# -*- coding: utf-8 -*-import smtplibimport time, traceback, sys, osfrom email.mime.text import MIMETextdef send_mail(mail_from, password, mail_to, subject, content):    handle = smtplib.SMTP('smtp.163.com', 25)    handle.login(mail_from, password)    time_str = time.strftime('%Y-%m-%d %X', time.localtime(time.time()))    msg = '' + content + "
" \ + time_str + " by " + mail_from + ""+'' send_msg = MIMEText(msg, 'html', 'utf-8') send_msg['Subject'] = subject handle.sendmail(mail_from, mail_to, send_msg.as_string()) handle.close()if __name__ == '__main__': send_mail('your_name@163.com', 'your_password', 'Hello Python!', 'Say hello to Python! :)')

转载于:https://www.cnblogs.com/restran/p/4288912.html

你可能感兴趣的文章
install docker on centos7
查看>>
mysql 查询条件中文问题
查看>>
svn
查看>>
父组件操作子组件中的值,将父组件的值设置给子组件
查看>>
配置SQL Server 2005 以允许远程连接
查看>>
LSTM学习理解资料
查看>>
Callable与Runable接口 submit与execute区别
查看>>
Obsidium V1.3.0.4 脱壳
查看>>
Linux make语法
查看>>
用户体验之认知地图、思维导图和概念图
查看>>
bzoj3389 [Usaco2004 Dec]Cleaning Shifts安排值班
查看>>
bzoj3173 [Tjoi2013]最长上升子序列
查看>>
第八周作业
查看>>
spring事务隔离级别
查看>>
JavaEE:Eclipse开发工具的相关使用和XML技术
查看>>
LR_问题_如何将场景中的用户设置为百分比形式
查看>>
OpenShift-OKD3.10基础环境部署
查看>>
工程师淘金:开发Android主攻四大方向
查看>>
ASP.NET MVC——Controller的激活
查看>>
javascript中Array对象
查看>>