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 相关文章推荐
python实现保存网页到本地示例
Mar 16 Python
跟老齐学Python之用while来循环
Oct 02 Python
Linux下将Python的Django项目部署到Apache服务器
Dec 24 Python
python3使用urllib模块制作网络爬虫
Apr 08 Python
python中OrderedDict的使用方法详解
May 05 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
Jul 19 Python
python 对key为时间的dict排序方法
Oct 17 Python
详解python函数的闭包问题(内部函数与外部函数详述)
May 17 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
Nov 09 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 Python
opencv 分类白天与夜景视频的方法
Jun 05 Python
python编程简单几行代码实现视频转换Gif示例
Oct 05 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
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
2011/08/18 PHP
php支持中文字符串分割的函数
2015/05/28 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
jquery选择器需要注意的问题
2014/11/26 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
python 字段拆分详解
2019/12/17 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
软件测试笔试题
2012/10/25 面试题
传播学专业毕业生自荐信
2013/11/04 职场文书
工厂保洁员岗位职责
2013/12/04 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
英文推荐信格式范文
2014/05/09 职场文书
职代会闭幕词
2015/01/28 职场文书
前台接待岗位职责范本
2015/04/03 职场文书
《大禹治水》教学反思
2016/02/22 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书
python非标准时间的转换
2021/07/25 Python