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中DJANGO简单测试实例
May 11 Python
将Django框架和遗留的Web应用集成的方法
Jul 24 Python
Python读写Json涉及到中文的处理方法
Sep 12 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
python的继承知识点总结
Dec 10 Python
浅谈Python批处理文件夹中的txt文件
Mar 11 Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 Python
python自动化工具之pywinauto实例详解
Aug 26 Python
python3 mmh3安装及使用方法
Oct 09 Python
python飞机大战pygame游戏之敌机出场实现方法详解
Dec 17 Python
利用python实现平稳时间序列的建模方式
Jun 03 Python
python_tkinter事件类型详情
Mar 20 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教程之phpize使用方法
2014/02/12 PHP
php发送get、post请求的6种方法简明总结
2014/07/08 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
WordPress网站性能优化指南
2015/11/18 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
jquery在Chrome下获取图片的长宽问题解决
2013/03/20 Javascript
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
详解js的事件处理函数和动态创建html标记方法
2016/12/16 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
js断点调试心得分享(必看篇)
2017/12/08 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
Python操作SQLite简明教程
2014/07/10 Python
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
python GUI实例学习
2017/11/21 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
python归并排序算法过程实例讲解
2020/11/04 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
文秘自荐信
2013/10/20 职场文书
生产车间主管岗位职责
2013/12/28 职场文书
新年寄语大全
2014/04/12 职场文书
王金山在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
作风建设整改方案
2014/10/27 职场文书
2014年电教工作总结
2014/12/19 职场文书
Python基础之tkinter图形化界面学习
2021/04/29 Python
go开发alertmanger实现钉钉报警
2021/07/16 Golang