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 cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
Python编程产生非均匀随机数的几种方法代码分享
Dec 13 Python
Python实现中一次读取多个值的方法
Apr 22 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
Python3实现转换Image图片格式
Jun 21 Python
详解如何将python3.6软件的py文件打包成exe程序
Oct 09 Python
python 2.7 检测一个网页是否能正常访问的方法
Dec 26 Python
python 堆和优先队列的使用详解
Mar 05 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
Jun 03 Python
python内置模块collections知识点总结
Dec 19 Python
基于python实现删除指定文件类型
Jul 21 Python
Python+pyftpdlib实现局域网文件互传
Aug 24 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
什么是MVC,好东西啊
2007/05/03 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
JavaScript创建命名空间的5种写法
2014/06/24 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
浅谈php://filter的妙用
2019/03/05 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
PHP中16个高危函数整理
2019/09/19 PHP
基于jquery循环map功能的代码
2011/02/26 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
jQuery超赞的评分插件(8款)
2015/08/20 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
vue 子组件watch监听不到prop的解决
2020/08/09 Javascript
三步搞定:Vue.js调用Android原生操作
2020/09/07 Javascript
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
详解Python如何生成词云的方法
2018/06/01 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
Python中的面向接口编程示例详解
2021/01/17 Python
贝嫂喜欢的婴儿品牌,个性化的婴儿礼物:My 1st Years
2017/11/19 全球购物
新闻学毕业生自荐信
2013/11/15 职场文书
简单租房协议书
2014/04/09 职场文书
社会实践评语
2014/04/28 职场文书
小学优秀辅导员事迹材料
2014/05/11 职场文书
交通志愿者活动总结
2014/06/27 职场文书
参观邀请函范文
2015/02/02 职场文书
大学生年度个人总结
2015/02/15 职场文书