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之永远强大的函数
Sep 14 Python
Python实现根据IP地址和子网掩码算出网段的方法
Jul 30 Python
python用户管理系统的实例讲解
Dec 23 Python
对numpy的array和python中自带的list之间相互转化详解
Apr 13 Python
解决Python3 被PHP程序调用执行返回乱码的问题
Feb 16 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
Mar 27 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
Aug 08 Python
Django文件上传与下载(FileFlid)
Oct 06 Python
Python中输入和输出(打印)数据实例方法
Oct 13 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
Python多线程threading join和守护线程setDeamon原理详解
Mar 18 Python
Python-for循环的内部机制
Jun 12 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
thinkphp中memcache的用法实例
2014/11/29 PHP
PHP 无限级分类
2017/05/04 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
jquery中的 $("#jb51")与document.getElementById("jb51") 的区别
2011/07/26 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
2016/01/27 Javascript
微信小程序 Button 组件详解及简单实例
2017/01/10 Javascript
jquery实现下拉框左右选择功能
2017/02/21 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
JS实现监控微信小程序的原理
2018/06/15 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
python写日志封装类实例
2015/06/28 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
html5时钟实现代码
2010/10/22 HTML / CSS
高中毕业生自我鉴定范文
2013/09/26 职场文书
实习自我鉴定
2013/12/15 职场文书
投标邀请书范文
2014/01/31 职场文书
军训 自我鉴定
2014/02/03 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
Java界面编程实现界面跳转
2022/06/16 Java/Android
小程序实现侧滑删除功能
2022/06/25 Javascript