Python发送email的三种方式,分别为使用登录邮件服务器、使用smtp服务、调用sendmail命令来发送三种方法

Python发送email比较简单,可以通过登录邮件服务来发送,linux下也可以使用调用sendmail命令来发送,还可以使用本地或者是远程的smtp服务来发送邮件,不管是单个,群发,还是抄送都比较容易实现。本米扑博客先介绍几个最简单的发送邮件方式记录下,像html邮件,附件等也是支持的,需要时查文档即可。

一、登录邮件服务器

通过smtp登录第三方smtp邮箱发送邮件,支持 25 和 465端口

vim python_email_1.py

#!/usr/bin/env python

# -*- coding:utf-8 -*-

#

# author: mimvp.com

# 2015.10.05

import smtplib

from email.mime.text import MIMEText

smtpHost = 'smtp.exmail.qq.com'

sender = 'robot@mimvp.com'

password = "mimvp-password"

receiver = 'yanggang@mimvp.com'

content = 'hello mimvp.com'

msg = MIMEText(content)

msg['Subject'] = 'email-subject'

msg['From'] = sender

msg['To'] = receiver

## smtp port 25

smtpServer = smtplib.SMTP(smtpHost, 25) # SMTP

smtpServer.login(sender, password)

smtpServer.sendmail(sender, receiver, msg.as_string())

smtpServer.quit()

print 'send success by port 25'

## smtp ssl port 465

smtpServer = smtplib.SMTP_SSL(smtpHost, 465) # SMTP_SSL

smtpServer.login(sender, password)

smtpServer.sendmail(sender, receiver, msg.as_string())

smtpServer.quit()

print 'send success by port 465'

执行命令:

$ python python_email_1.py

send success by port 25

send success by port 465

发送结果,会收到两封邮件,截图其中一份邮件如下图:

二、使用smtp服务

测试失败,略过或留言指正

#!/usr/bin/env python

# -*- coding:utf-8 -*-

#

# author: mimvp.com

# 2015.10.05

import smtplib

from email.mime.text import MIMEText

import subprocess

smtpHost = 'smtp.exmail.qq.com'

sender = 'robot@mimvp.com'

password = "mimvp-password"

receiver = 'yanggang@mimvp.com'

content = 'hello mimvp.com'

msg = MIMEText(content)

if __name__ == "__main__":

p = subprocess.Popen(['/usr/sbin/sendmail', '-t'], stdout=subprocess.PIPE)

print(str(p.communicate()))

p_res = str(p.communicate()[0])

msg = MIMEText(p_res)

msg["From"] = sender

msg["To"] = receiver

msg["Subject"] = "hello mimvp.com"

s = smtplib.SMTP(smtpHost)

s.login(sender, password)

s.sendmail(sender, receiver, msg.as_string())

s.quit()

print 'send success'

三、调用sendmail命令

调用本机linux自身sendmail服务发送邮件,不需要启动sendmail后台进程,不需要发送者登录,邮件发送者可以是任意名字,没有限制。

特别注意:sendmail 命令发送邮件,默认用25端口号,由于阿里云、腾讯云等封禁了25端口号,因此本示例需在开通25端口机器上测试

vim python_email_3.py

#!/usr/bin/env python

# -*- coding:utf-8 -*-

#

# author: mimvp.com

# 2015.10.05

from email.mime.text import MIMEText

from subprocess import Popen, PIPE

import commands

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

def send_mail(sender, recevier, subject, html_content):

msg = MIMEText(html_content, 'html', 'utf-8')

msg["From"] = sender

msg["To"] = recevier

msg["Subject"] = subject

p = Popen(["/usr/sbin/sendmail", "-t"], stdin=PIPE)

p.communicate(msg.as_string())

sender = 'robot@mimvp.com'

recevier = 'yanggang@mimvp.com'

subject = 'sendmail-subject'

html_content = 'hello mimvp.com'

send_mail(sender, recevier, subject, html_content)

执行命令:

python python_email_3.py

收件结果:

python 发邮件 抄送_Python 发送 email 的三种方式相关推荐

  1. python 发邮件 抄送_Python发送email的3种方法

    python发送email还是比较简单的,可以通过登录邮件服务来发送,linux下也可以使用调用sendmail命令来发送,还可以使用本地或者是远程的smtp服务来发送邮件,不管是单个,群发,还是抄送 ...

  2. Python 发送 email 的三种方式

    Python发送email的三种方式,分别为使用登录邮件服务器.使用smtp服务.调用sendmail命令来发送三种方法 本文原文自米扑博客:Python 发送 email 的三种方式 Python发 ...

  3. python定时执行脚本_Python实现定时执行任务的三种方式简单示例

    本文实例讲述了Python实现定时执行任务的三种方式.分享给大家供大家参考,具体如下: 1.定时任务代码 #!/user/bin/env python # @Time :2018/6/7 16:31 ...

  4. python发邮件附件_python 发送带附件的邮件

    class Carry_files_EmailSender(object): def __init__(self): self.smtp_host = smtp_host # 发送邮件的smtp服务器 ...

  5. discard connection丢失数据_python kafka 生产者发送数据的三种方式

    python kafka 生产者发送数据的三种方式 发送方式 同步发送 发送数据耗时最长 有发送数据的状态,不会丢失数据,数据可靠性高 以同步的方式发送消息时,一条一条的发送,对每条消息返回的结果判断 ...

  6. python 需要在什么环境下运行_进入Python 环境进行编程并运行程序的三种方式

    越来越多人开始学习Python了,本篇介绍进入Python 环境进行编程并运行程序的三种方式,适合刚入门的小白参考.进入Python的前提是先下载安装Python软件,如下所示,建议下载最新版,安装过 ...

  7. python实现定时任务的方式_Python实现定时执行任务的三种方式简单示例

    本文实例讲述了Python实现定时执行任务的三种方式.分享给大家供大家参考,具体如下: 1.定时任务代码 #!/user/bin/env python # @Time :2018/6/7 16:31 ...

  8. python的命名空间_python中命名空间的三种方式介绍(附示例)

    本篇文章给大家带来的内容是关于python中命名空间的三种方式介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. python中的命名空间分三种: 内置的命名空间,在启动解 ...

  9. python语言format蔬菜姓名、年龄_python格式化输出的三种方式

    [TOC] 格式化输出的三种方式 一.占位符(第一种格式化输出 )(3.0版本使用) 程序中经常会出现这样的 场景:要求用户输入信息,然后打印成固定的格式 比如要求用户输入用户名和年龄,然后打印如下格 ...

  10. python读取多张图片_python读取图片的几种方式及图像宽和高的存储顺序

    python读取图片的几种方式及图像宽和高的存储顺序 1.opencv 2.imageio 3.matplotlib 4.scipy # coding:utf-8 import cv2 import ...

最新文章

  1. w7系统计算机网络密码是什么,解答win7系统共享弹出Windows安全窗口提示输入网络密码的详细教程...
  2. vs2012调试中出现char类型形参与LPCTSTR类型不匹配
  3. 【ABAP】BASE64加密及解密
  4. eclipse的jsp第一行代码报错_机器学习之AdaBoost算法及纯python代码手工实现
  5. 学习多媒体开发的正确姿势?陈功:看书 啃代码 搞插件
  6. java超长字符序列化_String 字符串最长可以有多长?
  7. centos8 挂载ntfs_CentOS 8 挂载NTFS系统磁盘方案
  8. python s d是什意思_python里d是什么意思
  9. 485通信实现自动收发功能
  10. Java基础学习,一些零散的笔记之抽象类与接口
  11. 分布式存储ceph——(3)ceph常用命令
  12. bcm94352屏蔽第20针脚图_10核20线程的性能怪兽 十代酷睿首发评测
  13. 【数字电路】集成逻辑门电路
  14. 计算机百科丨存储介质发展史
  15. 51单片机在物联网中的应用实战-熊健-专题视频课程
  16. gwt - inherit module问题
  17. 【Nav2中文网】五、普通教程(九)Groot与行为树互动
  18. 使用elasticsearch文件搜索系统助力亚马逊解决方案架构师认证考试
  19. ros驱动insta360 oneR运动相机遇到的坑
  20. linux关闭proftpd服务,Linux ProFTPd安装与卸载详细介绍

热门文章

  1. 安全事故 没有“高级失误”
  2. 读书笔记:《明朝那些事第三部:妖孽宫廷》
  3. ASP.NET资源大全-知识分享
  4. x86,amd64,x86-64,x64区别
  5. 批量制作学校图书馆条码标签
  6. 池化层MaxPool函数详解及反向传播的公式推导
  7. Android X86上运行基于ARMARM处理器的应用程序
  8. SiamRPN++简述
  9. 教育云助武汉大学实现校园信息化
  10. freemaker与es6模板字符串语法冲突问题