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

安装 Postfix

如果是 Ubuntu,请使用

sudo apt-get install postfix

如果是 Centos,请使用

yum install postfix

接下来需要进行一些配置



这里选择Internet Site



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

使用 Python 发送邮件

使用这里给出的完美例子

#! /usr/bin/env python
# -*- coding: utf-8 -*- import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate
from email import Encoders
import os def 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 <your_name@gmail.com>'], 'MonitorBase <notify@monitor.base>', 'Hello Python!', 'Say hello to Python! :)', [])

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

#! /usr/bin/env python
# -*- coding: utf-8 -*- import smtplib
import time, traceback, sys, os
from email.mime.text import MIMEText def 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 = '<html><body>' + content + "<br><br><span style='color:#999;font-size:"\
+ "10px;font-family:Verdana;'>" \
+ time_str + " by " + mail_from + "</span>"+'</body></html>'
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! :)')

Python 使用 Postfix 发送邮件的更多相关文章

  1. python通过SMTP发送邮件失败,报错505/535

    python通过SMTP发送邮件失败:错误1:smtplib.SMTPAuthenticationError: (550, b'User has no permission')    我们使用pyth ...

  2. python使用smtplib发送邮件

    python要实现发送邮件的功能,需要使用smtplib库. 1. 过程大致如下: 1. 建立和SMTP邮件服务器的连接 # 默认端口25 smtp = smtplib.SMTP(host, port ...

  3. Linux服务器用postfix 发送邮件延迟 阻塞 被接收方拒绝等问题

    Linux服务器用postfix 发送邮件延迟 阻塞 被接收方拒绝等问题 postfix如何设置发送邮件延迟通知 1 */1 * * * /bin/bash /home/delete_postfix. ...

  4. python简单的发送邮件

    python 利用smtplib来发送邮件,具体的代码如下 一. 编辑smtp_v2.py vim /home/python/smtp_v2.py #!/usr/bin/env python # -* ...

  5. Python使用SMTP发送邮件[HTML格式、送带附件]

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一 ...

  6. Python 用SMTP发送邮件

    一.简介 上面介绍了传统邮件的生成和解析,这些都是non-internet,也就是不需要网络就可一完成的.那么当生成了邮件,下一步就是发送了,本文就讲解利用SMTP协议发送邮件. 正如SMTP(Sim ...

  7. python email ==> send 发送邮件 :) [smtplib, email 模块]

    关于Email的预备知识: 原贴地址:http://www.cnblogs.com/lonelycatcher/archive/2012/02/09/2343480.html ############ ...

  8. python smtp模块发送邮件

    应用场景: 在服务器上设置的告警参数被触发后,通常是发送手机短信或者邮件通知,本例就以发送邮件为例,手机怎么收邮件呢?以qq邮箱为例,在手机端安装qq邮箱app,触发邮件后,手机也能及时查看了 代码展 ...

  9. Python 通过 SMTP 发送邮件

    Python版本:Python3.5.2 简介 SMTP是发送邮件的协议,Python 内置对 SMTP 的支持,可以发送纯文本邮件.HTML 邮件以及带附件的邮件. Python 对 SMTP 支持 ...

随机推荐

  1. EK算法复杂度分析

    引理: EK算法每次增广使所有顶点$v\in V-\{s,t\}$到$s$的最短距离$d[v]$增大. 采用反证法, 假设存在一个点$v\in V-\{s,t\}$, 使得$d'[v]< d[v ...

  2. HDU-4336-期望dp-bit

    Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  3. 非ie浏览器必备函数常识

    场景描述: 我们都知道IE浏览器和非IE浏览器都有很多功能一样但写法不同,或者各自都有一些自己独特的方法,那么为了保持兼容性和便于编写,我们可以通过这两个方法给非IE浏览器的对象增加自己没有,但IE有 ...

  4. 048——VUE中使用animate.css动画库控制vue.js过渡效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 为了更好更方便地活着——爱上private

    刚开始接触OOP的时候,打心底里我不喜欢private与protected.我声明一个public然后不直接用它,不就跟private一样吗?在某些场合下,我还能偷偷地用一下public变量,这不是更 ...

  6. python 列表构造时的引用问题

    以前老是不注意python对象引用,平时也没遇到这样的问题,昨天在这个小问题纠结了半天时间.真是TMD啊 先说明一下我的目的,我有一个包含16个元素的列表,每个元素也是一个小列表.我想每四个子列表为一 ...

  7. Windows 10 安装 Docker

    下载Docker For Windows 地址:https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.ex ...

  8. 从JDK源码角度看Short

    概况 Java的Short类主要的作用就是对基本类型short进行封装,提供了一些处理short类型的方法,比如short到String类型的转换方法或String类型到short类型的转换方法,当然 ...

  9. iOS-----使用addressBook管理联系人之修改联系人

    使用addressBook管理联系人之修改联系人 修改联系人 修改联系人先从底层地址簿中加载一条ABRecordRef记录,然后对这条ABRecordRef记录的属性值进行修改,修改完成后把这条修改后 ...

  10. C# 根据twitter的snowflake算法生成唯一ID

    C# 版算法: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...