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 相关文章推荐
CentOS安装pillow报错的解决方法
Jan 27 Python
python用pickle模块实现“增删改查”的简易功能
Jun 07 Python
浅谈python的深浅拷贝以及fromkeys的用法
Mar 08 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
python如何从文件读取数据及解析
Sep 19 Python
Python中xml和dict格式转换的示例代码
Nov 07 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
Python中求对数方法总结
Mar 10 Python
Python爬虫之Selenium下拉框处理的实现
Dec 04 Python
Python+Appium新手教程
Apr 17 Python
Python os和os.path模块详情
Apr 02 Python
python单向链表实例详解
May 25 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 Sql Server连接失败问题及解决办法
2009/08/07 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
jQuery获取浏览器类型和版本号的方法
2016/07/05 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
基于bootstrap写的一点localStorage本地储存
2017/11/21 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
Vue核心概念Action的总结
2019/01/18 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
Python写入CSV文件的方法
2015/07/08 Python
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
python分割列表(list)的方法示例
2017/05/07 Python
python3获取当前目录的实现方法
2019/07/29 Python
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
计算机应用专业推荐信
2013/11/13 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
土建施工员岗位职责
2015/04/11 职场文书
开除通知书范本
2015/04/25 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
Python标准库之typing的用法(类型标注)
2021/06/02 Python
如何利用 CSS Overview 面板重构优化你的网站
2021/10/24 HTML / CSS
Vue h函数的使用详解
2022/02/18 Vue.js