python 发邮件 抄送_Python 发送 email 的三种方式
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 的三种方式相关推荐
- python 发邮件 抄送_Python发送email的3种方法
python发送email还是比较简单的,可以通过登录邮件服务来发送,linux下也可以使用调用sendmail命令来发送,还可以使用本地或者是远程的smtp服务来发送邮件,不管是单个,群发,还是抄送 ...
- Python 发送 email 的三种方式
Python发送email的三种方式,分别为使用登录邮件服务器.使用smtp服务.调用sendmail命令来发送三种方法 本文原文自米扑博客:Python 发送 email 的三种方式 Python发 ...
- python定时执行脚本_Python实现定时执行任务的三种方式简单示例
本文实例讲述了Python实现定时执行任务的三种方式.分享给大家供大家参考,具体如下: 1.定时任务代码 #!/user/bin/env python # @Time :2018/6/7 16:31 ...
- python发邮件附件_python 发送带附件的邮件
class Carry_files_EmailSender(object): def __init__(self): self.smtp_host = smtp_host # 发送邮件的smtp服务器 ...
- discard connection丢失数据_python kafka 生产者发送数据的三种方式
python kafka 生产者发送数据的三种方式 发送方式 同步发送 发送数据耗时最长 有发送数据的状态,不会丢失数据,数据可靠性高 以同步的方式发送消息时,一条一条的发送,对每条消息返回的结果判断 ...
- python 需要在什么环境下运行_进入Python 环境进行编程并运行程序的三种方式
越来越多人开始学习Python了,本篇介绍进入Python 环境进行编程并运行程序的三种方式,适合刚入门的小白参考.进入Python的前提是先下载安装Python软件,如下所示,建议下载最新版,安装过 ...
- python实现定时任务的方式_Python实现定时执行任务的三种方式简单示例
本文实例讲述了Python实现定时执行任务的三种方式.分享给大家供大家参考,具体如下: 1.定时任务代码 #!/user/bin/env python # @Time :2018/6/7 16:31 ...
- python的命名空间_python中命名空间的三种方式介绍(附示例)
本篇文章给大家带来的内容是关于python中命名空间的三种方式介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. python中的命名空间分三种: 内置的命名空间,在启动解 ...
- python语言format蔬菜姓名、年龄_python格式化输出的三种方式
[TOC] 格式化输出的三种方式 一.占位符(第一种格式化输出 )(3.0版本使用) 程序中经常会出现这样的 场景:要求用户输入信息,然后打印成固定的格式 比如要求用户输入用户名和年龄,然后打印如下格 ...
- python读取多张图片_python读取图片的几种方式及图像宽和高的存储顺序
python读取图片的几种方式及图像宽和高的存储顺序 1.opencv 2.imageio 3.matplotlib 4.scipy # coding:utf-8 import cv2 import ...
最新文章
- w7系统计算机网络密码是什么,解答win7系统共享弹出Windows安全窗口提示输入网络密码的详细教程...
- vs2012调试中出现char类型形参与LPCTSTR类型不匹配
- 【ABAP】BASE64加密及解密
- eclipse的jsp第一行代码报错_机器学习之AdaBoost算法及纯python代码手工实现
- 学习多媒体开发的正确姿势?陈功:看书 啃代码 搞插件
- java超长字符序列化_String 字符串最长可以有多长?
- centos8 挂载ntfs_CentOS 8 挂载NTFS系统磁盘方案
- python s d是什意思_python里d是什么意思
- 485通信实现自动收发功能
- Java基础学习,一些零散的笔记之抽象类与接口
- 分布式存储ceph——(3)ceph常用命令
- bcm94352屏蔽第20针脚图_10核20线程的性能怪兽 十代酷睿首发评测
- 【数字电路】集成逻辑门电路
- 计算机百科丨存储介质发展史
- 51单片机在物联网中的应用实战-熊健-专题视频课程
- gwt - inherit module问题
- 【Nav2中文网】五、普通教程(九)Groot与行为树互动
- 使用elasticsearch文件搜索系统助力亚马逊解决方案架构师认证考试
- ros驱动insta360 oneR运动相机遇到的坑
- linux关闭proftpd服务,Linux ProFTPd安装与卸载详细介绍