Python实现发送email的几种常用方法


Posted in Python onAugust 18, 2014

学过Python的人都知道,实用Python实现发送email的功能还是比较简单的,可以通过登录邮件服务来发送,linux下也可以使用调用sendmail命令来发送,还可以使用本地或者是远程的smtp服务来发送邮件,不管是单个,群发,还是抄送都比较容易实现。

本文就把几个最简单的发送邮件方式记录下来,像html邮件,附件等也是支持的,读者在需要时可以参考查询一下。具体方法如下:

1.登录邮件服务

具体代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#python2.7x
#send_simple_email_by_account.py @2014-08-18
#author: orangleliu

'''
使用python写邮件 simple
使用126 的邮箱服务
'''

import smtplib
from email.mime.text import MIMEText

SMTPserver = 'smtp.126.com'
sender = '12345678@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-18
'''
用的是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 = "12345678@qq.com"
  r = "123456@163.com"
  mail_send(s, r)

3 使用smtp服务来发送(本地或者是远程服务器)

具体代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#python2.7x
#send_email_by_smtp.py
#author: orangleliu
#date: 2014-08-18
'''
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 = "123456@163.com"
  r = s
  mail_send(s, r)

相信本文所示方法对于大家进行Python程序设计能够起到一定的参考借鉴价值。

Python 相关文章推荐
详解Python2.x中对Unicode编码的使用
Apr 03 Python
python中关于for循环的碎碎念
Jun 30 Python
python中字符串比较使用is、==和cmp()总结
Mar 18 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
对python xlrd读取datetime类型数据的方法详解
Dec 26 Python
python实现诗歌游戏(类继承)
Feb 26 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
Sep 20 Python
python绘制BA无标度网络示例代码
Nov 21 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
Python如何实现远程方法调用
Aug 07 Python
Python语言编写智力问答小游戏功能
Oct 13 Python
10个顶级Python实用库推荐
Mar 04 Python
Python内置数据类型详解
Aug 18 #Python
Python3基础之输入和输出实例分析
Aug 18 #Python
一个计算身份证号码校验位的Python小程序
Aug 15 #Python
基于Python的身份证号码自动生成程序
Aug 15 #Python
Python异常处理总结
Aug 15 #Python
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 #Python
Python3基础之函数用法
Aug 13 #Python
You might like
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
PHP中is_file()函数使用指南
2015/05/08 PHP
php显示时间常用方法小结
2015/06/05 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
JS设置获取cookies的方法
2014/01/26 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
scrollWidth,clientWidth,offsetWidth的区别
2015/01/13 Javascript
javascript折半查找详解
2015/01/26 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
简单谈谈Javascript函数中的arguments
2017/02/09 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
js a标签点击事件
2017/03/30 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
python中cPickle用法例子分享
2014/01/03 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
python找出因数与质因数的方法
2019/07/25 Python
PyCharm搭建Spark开发环境的实现步骤
2019/09/05 Python
python 装饰器的基本使用
2021/01/13 Python
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
应届护士推荐信
2013/11/16 职场文书
改革共识倡议书
2014/08/29 职场文书
三严三实对照检查材料
2014/09/22 职场文书
英语辞职信范文
2015/02/28 职场文书