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深入学习之闭包
Aug 31 Python
Python二维码生成库qrcode安装和使用示例
Dec 16 Python
在Python操作时间和日期之asctime()方法的使用
May 22 Python
python简单猜数游戏实例
Jul 09 Python
web.py 十分钟创建简易博客实现代码
Apr 22 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
Python TestCase中的断言方法介绍
May 02 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
Jun 21 Python
Django项目之Elasticsearch搜索引擎的实例
Aug 21 Python
django 简单实现登录验证给你
Nov 06 Python
Python爬取数据并实现可视化代码解析
Aug 12 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 header()函数语法及使用代码
2013/11/04 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
php实现源代码加密的方法
2015/07/11 PHP
php中switch语句用法详解
2015/08/17 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
2012/04/16 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
python中文编码问题小结
2014/09/28 Python
Python用GET方法上传文件
2015/03/10 Python
python获取本机外网ip的方法
2015/04/15 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
python性能测试工具locust的使用
2020/12/28 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
教师自我鉴定范文
2013/11/10 职场文书
经贸日语专业个人求职信
2013/12/13 职场文书
毕业生求职信的经典写法
2014/01/31 职场文书
经典洗发水广告词
2014/03/13 职场文书
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python
python神经网络 使用Keras构建RNN训练
2022/05/04 Python