[Python] 发送email的几种方式
python发送email还是比較简单的,能够通过登录邮件服务来发送,linux下也能够使用调用sendmail命令来发送,还能够使用本地或者是远程的smtp服务来发送邮件,无论是单个,群发,还是抄送都比較easy实现。
先把几个最简单的发送邮件方式记录下,像html邮件,附件等也是支持的,须要时查文档就可以
1 登录邮件服务
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#python2.7x
#send_simple_email_by_account.py @2014-07-30
#author: orangleliu '''
使用python写邮件 simple
使用126 的邮箱服务
''' import smtplib
from email.mime.text import MIMEText SMTPserver = 'smtp.126.com'
sender = 'liuzhizhi123@126.com'
password = "xxxx" message = 'I send a message by Python. 你好'
msg = MIMEText(message) msg['Subject'] = 'Test Email by Python'
msg['From'] = sender
msg['To'] = destination mailserver = smtplib.SMTP(SMTPserver, 25)
mailserver.login(sender, password)
mailserver.sendmail(sender, [sender], msg.as_string())
mailserver.quit()
print 'send email success'
2调用sendmail命令 (linux)
# -*- coding: utf-8 -*-
#python2.7x
#send_email_by_.py
#author: orangleliu
#date: 2014-08-15
'''
用的是sendmail命令的方式 这个时候邮件还不定能够发出来,hostname配置可能须要更改
''' from email.mime.text import MIMEText
from subprocess import Popen, PIPE def get_sh_res():
p = Popen(['/Application/2.0/nirvana/logs/log.sh'], stdout=PIPE)
return str(p.communicate()[0]) def mail_send(sender, recevier):
print "get email info..."
msg = MIMEText(get_sh_res())
msg["From"] = sender
msg["To"] = recevier
msg["Subject"] = "Yestoday interface log results"
p = Popen(["/usr/sbin/sendmail", "-t"], stdin=PIPE)
res = p.communicate(msg.as_string())
print 'mail sended ...' if __name__ == "__main__":
s = "957748332@qq.com"
r = "zhizhi.liu@chinacache.com"
mail_send(s, r)
3 使用smtp服务来发送(本地或者是远程server)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#python2.7x
#send_email_by_smtp.py
#author: orangleliu
#date: 2014-08-15
'''
linux 下使用本地的smtp服务来发送邮件
前提要开启smtp服务,检查的方法
#ps -ef|grep sendmail
#telnet localhost 25 这个时候邮件还不定能够发出来,hostname配置可能须要更改
'''
import smtplib
from email.mime.text import MIMEText
from subprocess import Popen, PIPE def get_sh_res():
p = Popen(['/Application/2.0/nirvana/logs/log.sh'], stdout=PIPE)
return str(p.communicate()[0]) def mail_send(sender, recevier):
msg = MIMEText(get_sh_res())
msg["From"] = sender
msg["To"] = recevier
msg["Subject"] = "Yestoday interface log results"
s = smtplib.SMTP('localhost')
s.sendmail(sender, [recevier], msg.as_string())
s.quit()
print 'send mail finished...' if __name__ == "__main__":
s = "zhizhi.liu@chinacache.com"
r = s
mail_send(s, r)
[Python] 发送email的几种方式的更多相关文章
- Python 发送 email 的两种方式
Python发送email的两种方式,分别为使用登录邮件服务器.调用sendmail命令来发送三种方法 Python发送email比较简单,可以通过登录邮件服务来发送,linux下也可以使用调用sen ...
- python爬虫-----Python访问http的几种方式
爬取页面数据,我们需要访问页面,发送http请求,以下内容就是Python发送请求的几种简单方式: 会使用到的库 urllib requests 1.urlopen import urllib. ...
- python实现单例模式的三种方式及相关知识解释
python实现单例模式的三种方式及相关知识解释 模块模式 装饰器模式 父类重写new继承 单例模式作为最常用的设计模式,在面试中很可能遇到要求手写.从最近的学习python的经验而言,singlet ...
- day2 编程语言介绍、Python运行程序的两种方式、变量
一 编程语言介绍 1. 机器语言 用计算机能理解的二进制指令直接编写程序,直接控制硬件 2. 汇编语言 用英文标签取代二进制指令编写程序,本质也是直接控制硬件 3. 高级语言 用人能理解的表达方式去编 ...
- Python 操作 MySQL 的5种方式(转)
Python 操作 MySQL 的5种方式 不管你是做数据分析,还是网络爬虫,Web 开发.亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Pytho ...
- Python实现屏幕截图的两种方式
Python实现屏幕截图的两种方式 使用windows API 使用PIL中的ImageGrab模块 下面对两者的特点和用法进行详细解释. 一.Python调用windows API实现屏幕截图 好处 ...
- Python 输出百分比的两种方式
Python 输出百分比的两种方式 注: 在python3环境下测试. 方式1:直接使用参数格式化:{:.2%} {:.2%}: 显示小数点后2位 显示小数点后2位: >>> pri ...
- Python 配置日志的几种方式
Python配置日志的几种方式 作为开发者,我们可以通过以下3种方式来配置logging: (1)使用Python代码显式的创建loggers,handlers和formatters并分别调用它们的配 ...
- Python拼接字符串的七种方式
忘了在哪看到一位编程大牛调侃,他说程序员每天就做两件事,其中之一就是处理字符串.相信不少同学会有同感. 几乎任何一种编程语言,都把字符串列为最基础和不可或缺的数据类型.而拼接字符串是必备的一种技能.今 ...
随机推荐
- android CMWAP, CMNET有何差别
什么是CMNET,什么是CMWAP? 答:CMWAP和CMNET仅仅是中国移动为其划分的两个GPRS接入方式.中国移动对CMWAP作了一定的限制,主要表如今CMWAP接入时仅仅能訪问GPRS网络内的I ...
- [置顶] Application,Session,Cookie之Application对象
概述 Application为全局作用域,且只有一个Application对象,它可以存储和访问任意页面的变量(数据存储类型都是Object,也就是任意类型),同时也被多页面使用(也为引用). App ...
- 虚拟Linux 訪问win7共享文件夹方法
虚拟机訪问win7的共享文件夹 首先安装增强功能,这个不用多说 再者选择菜单中的设备->共享目录,设置为固定分配和自己主动挂载 在终端敲入命令df:发现有自己创建共享的文件夹 然后运行例如以下命 ...
- struts2必需jar包
asm-3.3.jar commons-logging-1.1.3.jarasm-commons-3.3.jar freemarker-2.3. ...
- jquery mouseout和mouseleave区别
mouseout()和mouseleave() 都是鼠标移出元素时触发,但是这两者又有所区别,需要大家留意: 不论鼠标指针离开指定元素还是该元素子元素,都会触发 mouseout 事件. 只有在鼠标指 ...
- ASP.NET 后台下载文件方法
void DownLoadFile(string fileName) { string filePath = Server.MapPath(fileName);//路径 //以字符流的形式下载文件 F ...
- Struts2中的ActionContext
ActionContext(Action上下文) ActionContext介绍 通过上面用户注册例子的学习,我们知道Xwork与Web无关性,我们的Action不用去依赖于任何Web容器,不用和那些 ...
- eclipse中默认的提示键
Alt+/:代码提示 Ctrl+/:注释/取消注释 Ctrl+D:删除光标所在行 Ctrl+K:将光标停留在变量上,按Ctrl+K键可以查找到下一个同样的变量 Shift+Ctrl+K:和Ctrl+K ...
- C++之类和对象——C++ primer plus学习(一)
一.类的构造函数和析构函数 1.构造函数: 1)试图将类成员名称用作构造函数的参数名是错误的. 2)构造函数的参数表示的不是类成员, 而是赋给类成员的值. 3)为了避免这种混乱,一种 ...
- MySql移植到嵌入式Linux平台
最近在做考勤机系统,硬件采用的cortex-A8,哈哈,其实是有点浪费的,2410就可以的.所以就要考虑到考勤数据的存储问题,本来是打算用sqlite数据库存储的,可是后来发现,这个数据库只是一个本地 ...