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 相关文章推荐
11个并不被常用但对开发非常有帮助的Python库
Mar 31 Python
Python中的集合类型知识讲解
Aug 19 Python
Python爬取APP下载链接的实现方法
Sep 30 Python
Python实现复杂对象转JSON的方法示例
Jun 22 Python
django 按时间范围查询数据库实例代码
Feb 11 Python
python使用mysql的两种使用方式
Mar 07 Python
Python装饰器原理与简单用法实例分析
Apr 29 Python
python爬虫的数据库连接问题【推荐】
Jun 25 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 Python
基于Python批量生成指定尺寸缩略图代码实例
Nov 20 Python
Python3实现mysql连接和数据框的形成(实例代码)
Jan 17 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
Jan 19 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获取Google AJAX Search API 数据的代码
2010/03/12 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
phpstudy后门rce批量利用脚本的实现
2019/12/12 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
JavaScript 异步调用框架 (Part 1 - 问题 & 场景)
2009/08/03 Javascript
javascript Keycode对照表
2009/10/24 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
node.js中的console.info方法使用说明
2014/12/09 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
JS实现百度网盘任意文件强制下载功能
2018/08/31 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
基python实现多线程网页爬虫
2015/09/06 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
房屋租赁委托书范本
2014/10/04 职场文书
普通党员整改措施
2014/10/24 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
MySQL查询日期时间
2022/05/15 MySQL