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用reduce和map把字符串转为数字的方法
Dec 19 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
python字符串常用方法
Jun 14 Python
python3爬取数据至mysql的方法
Jun 26 Python
opencv python 2D直方图的示例代码
Jul 20 Python
与Django结合利用模型对上传图片预测的实例详解
Aug 07 Python
python实现WebSocket服务端过程解析
Oct 18 Python
如何将你的应用迁移到Python3的三个步骤
Dec 22 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
Apr 16 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 Python
Python中的With语句的使用及原理
Jul 29 Python
Python Django ORM连表正反操作技巧
Jun 13 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中执行系统外部命令
2006/10/09 PHP
PHP新手上路(十二)
2006/10/09 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
PHP实现的简单mock json脚本分享
2015/02/10 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
用js做一个小游戏平台 (一)
2009/12/29 Javascript
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
你必须知道的Javascript知识点之"this指针"的应用
2013/04/23 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
vue cli webpack中使用sass的方法
2018/02/24 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
python3中bytes和string之间的互相转换
2017/02/09 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
校长就职演讲稿
2014/01/06 职场文书
关于赌博的检讨书
2014/01/08 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
英语分层教学实施方案
2014/06/15 职场文书
秋季运动会加油词
2015/07/18 职场文书
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
Python&Matlab实现樱花的绘制
2022/04/07 Python