postfix python发送邮件脚本配置(不乱码)

简介:

一、环境说明

     我们通常需要发送邮件,用于报警,或邮件验证等需求,本次的环境要求如下:

CentOS 6.x   最小化安装,安装postfix(一般系统安装好自带的邮件系统),如果没有请如下操作:

#yum install postfix -y

python 2.6+   


二、postfix简介

postfix是linux平台邮件系统,默认安装,并且自动开机运行,无需过多的配置,但有一点需要说明,postfix所

在主机绑定了备案域名则默认不会当作垃圾邮件,而所在主机没有绑定备案域名,大多邮件厂商会认为是垃圾邮件.


三、pytho发邮件脚本

#cat send_mail.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import  smtplib
from  email.mime.multipart  import  MIMEMultipart
from  email.mime.text  import  MIMEText
 
SERVER  =  'localhost'
FROM  =  'root@localhost'
TO  =  [ '1549214808@qq.com,' ]     #添加收件人
SUBJECT  =  u 'san Linx福利'
TEXT  =  u """
     linux基础
     链接:http://pan.baidu.com/s/1mhBDhnM
"""
msg  =  MIMEMultipart( 'alternative' )
# 注意包含了非ASCII字符,需要使用unicode
msg[ 'Subject' =  SUBJECT
msg[ 'From' =  FROM
msg[ 'To' =  ', ' .join(TO)
part  =  MIMEText(TEXT,  'plain' 'utf-8' )
msg.attach(part)
server  =  smtplib.SMTP(SERVER)
server.sendmail(FROM, TO, msg.as_string().encode( 'ascii' ))
server.quit()

#python send_mail.py


打开QQ邮箱如图:

wKioL1m5-cCyot7FAADqMJzeUGs666.png-wh_50

如上所述次实验postfix所在主机没有备案域名解析绑定,所以在QQ邮箱中是在垃圾箱中,而我的公司邮件没有收到!网易过滤掉了!

另外以上是针对本地的postfix 默认smtp非SSL发送的,还可通过 对QQ如下的 加密码认证发送邮件

有兴趣的可以试下

1
2
3
4
5
smtp_server  =  "smtp.qq.com"
smtp_port  =  465
server  =  smtplib.SMTP_SSL(smtp_server,smtp_port)
server.login(from_user, "tqnmomfayqpodjdh" )
server.sendmail(from_user,to_list,mail.as_string())

四、带添加附件的脚本


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/python
#coding:utf-8
import  smtplib  #负责登录smtp服务器的
from  email.mime.text  import  MIMEText  #用来定义邮件的
from  email  import  MIMEMultipart  #定义发送邮件的根容器
from  email  import  MIMEBase  #定义附件
from  email  import  Encoders  #对附件进行编码
msg =  """
     linux基础
     链接:http://pan.baidu.com/s/1mhBDhnM
"""
#接收人字符串
to_str  =  """
,
1549214808@qq.com,
"""
###以上邮箱为了隐私写的是假的 
#接收人列表
to_list  =  to_str.replace( "\n" ," ").split(" ,")
from_user  =  "root@localhost" #发送人
title  =  "san 的 Linux福利"  #邮件的标题
#实例化一个邮件根容器
message  =  MIMEMultipart.MIMEMultipart()
#定义文本项
mail  =  MIMEText(msg, "plain" , "utf-8" )
     #发送的内容    #内容的类型    #内容的编码
message.attach(mail)
#附件的类型的变量
mintype,subtype  =  "application" , "octet-stream"
#定义附件的类型
file_message  =  MIMEBase.MIMEBase(mintype,subtype)
#附件添加内容
with  open ( "by.txt" , "rb" ) as f:
     file_message.set_payload(f.read())
#对附件进行编码
Encoders.encode_base64(file_message)
#附件的头部定义
file_message.add_header(
     "Content-Disposition" ,
     "attachment" ,
     filename  =  "by.txt"
)
message.attach(file_message)
message[ "Subject" =  title
message[ "From" =  from_user
message[ "To" =  to_str
#登录smtp服务器    #qq smtp 服务器地:localhost    #smtp 服务器地址端口: 25
smtp_server  =  "localhost"
smtp_port  =  25
#server = smtplib.SMTP_SSL(smtp_server,smtp_port)
server  =  smtplib.SMTP(smtp_server,smtp_port)
#server.login(from_user,"") #如果是smtp ssl 加密的需要用户名密码登录
server.sendmail(from_user,to_list,message.as_string())
     #发送人 #接收人列表  #发送的内容
server.quit()


效果如下图:

wKiom1m6QwGRuD76AADm9IjyJmI429.png-wh_50










本文转自 dyc2005 51CTO博客,原文链接:http://blog.51cto.com/dyc2005/1965179,如需转载请自行联系原作者
目录
相关文章
|
21小时前
|
C++ Python
vs配置python环境 - 蓝易云
以上就是在Visual Studio中配置Python环境的步骤,希望对你有所帮助。
6 1
|
1天前
|
SQL 存储 数据库
两个Python脚本轻松解决ETL工作:统计多个服务器下所有数据表信息
两个Python脚本轻松解决ETL工作:统计多个服务器下所有数据表信息
|
1天前
|
SQL 存储 数据库
两个Python脚本轻松解决ETL工作:统计多个服务器下所有数据表信息(1)
两个Python脚本轻松解决ETL工作:统计多个服务器下所有数据表信息(1)
|
1天前
|
前端开发 Unix Linux
Sublime Text 3配置 Python 开发环境
【5月更文挑战第7天】本篇 Huazie 介绍了 Sublime Text 3 配置 Python 开发环境的相关内容,感兴趣的朋友赶紧配置起来,有任何问题可以随时评论区沟通。
22 1
Sublime Text 3配置 Python 开发环境
|
3天前
|
Python Perl
LabVIEW调用Perl和Python脚本
LabVIEW调用Perl和Python脚本
11 2
|
3天前
|
缓存 人工智能 算法
编写高效的Python脚本:性能优化的策略与技巧
编写高效的Python脚本需要综合考虑多个方面,包括代码结构、数据结构和算法选择等。本文将探讨在Python编程中提高脚本性能的方法,包括优化数据结构、选择合适的算法、使用Python内置函数以及通过并行和异步编程提升效率。这些技巧旨在帮助开发者在不同应用场景中编写出高性能的Python代码。
|
3天前
|
存储 网络安全 数据安全/隐私保护
【专栏】Python 网络设备管理中,`ConnectHandler`(Paramiko库)和`telnetlib`模块常用于设备交互。
【4月更文挑战第28天】Python 网络设备管理中,`ConnectHandler`(Paramiko库)和`telnetlib`模块常用于设备交互。`ConnectHandler`简化SSH连接,便于与网络设备交互,而`telnetlib`是Python内置模块,支持Telnet协议的远程登录操作。两者都提供命令执行和响应接收功能。示例代码展示了如何使用它们获取防火墙设备的版本信息,降低了代码复杂度,提高了可读性和维护性。
|
3天前
|
网络安全 数据安全/隐私保护 Python
【专栏】如何使用 Python 编写脚本批量备份交换机配置
【4月更文挑战第28天】本文介绍如何使用 Python 编写脚本批量备份交换机配置。主要步骤包括了解交换机命令和接口,安装 `paramiko` 库,获取交换机登录信息。脚本实现分为建立 SSH 连接,执行备份命令并保存结果。示例脚本中,定义了 `backup_switch_config` 函数遍历交换机列表进行备份,每次备份后等待一段时间。此方法能有效提高网络管理效率。
|
3天前
|
运维 监控 Serverless
Serverless 应用引擎产品使用之阿里函数计算中在自定义环境下用debian10运行django,用官方层的python3.9,配置好环境变量后发现自定义层的django找不到了如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
23 3
|
3天前
|
IDE Linux 开发工具
Python安装与配置
Python安装与配置
31 0