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中逗号的三种作用实例分析
Jun 08 Python
Python 爬取携程所有机票的实例代码
Jun 11 Python
浅谈Python接口对json串的处理方法
Dec 19 Python
解决Python下json.loads()中文字符出错的问题
Dec 19 Python
python的pytest框架之命令行参数详解(上)
Jun 27 Python
Django外键(ForeignKey)操作以及related_name的作用详解
Jul 29 Python
手机使用python操作图片文件(pydroid3)过程详解
Sep 25 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
pytorch 自定义参数不更新方式
Jan 06 Python
python实现文件+参数发送request的实例代码
Jan 05 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
Feb 03 Python
Python selenium模拟网页点击爬虫交管12123违章数据
May 26 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中文件缓存转内存缓存的方法
2011/12/06 PHP
coreseek 搜索英文的问题详解
2013/06/08 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
JavaScript window.location对象
2014/11/14 Javascript
删除javascript所创建子节点的方法
2015/05/21 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
python读取excel表格生成erlang数据
2017/08/26 Python
Python实现字符串匹配算法代码示例
2017/12/05 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
Python实现制度转换(货币,温度,长度)
2019/07/14 Python
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
公司市场部岗位职责
2013/12/02 职场文书
银行求职信
2014/05/31 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
停电放假通知
2015/04/14 职场文书
孔繁森观后感
2015/06/10 职场文书
反邪教观后感
2015/06/11 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js
Go web入门Go pongo2模板引擎
2022/05/20 Golang