Python使用SMTP(简单邮件传输协议)发送邮件
普通文本邮件
普通文本邮件发送的实现,关键是要将MIMEText中_subtype设置为plain
## -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText#导入MIMEText类
from email import encoders
from email.header import Header
from email.utils import parseaddr, formataddr mail_host="smtp.163.com"#使用的邮箱的smtp服务器地址,这里是163的smtp地址
mail_user=raw_input("你的163邮箱: ")#发送方邮箱
mail_pass=raw_input("邮箱授权码: ") #授权码
mail_postfix="163.com"#邮箱的后缀,网易就是163.com
mail_from = raw_input("来自: ") #发送方昵称
mail_sub = raw_input("邮件主题: ") #邮件主题
mail_content = raw_input("内容: ") def send_mail(sub,content):
me=mail_from+"<"+mail_user+">"
msg = MIMEText(content,'plain','utf-8')#邮件正文,subtype(文本是plain),编码格式
msg['Subject'] = sub
msg['From'] = me
to_list = map(None,raw_input("mail_to: ").split(" "))#可以群发
msg['To'] = ",".join(to_list)#将收件人列表以‘,’分隔
try:
server = smtplib.SMTP()
server.connect(mail_host)#连接服务器
server.login(mail_user,mail_pass)#登录操作
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception, e:#捕捉异常,并将异常对象输出
print str(e)
return False
if send_mail(mail_sub , mail_content): #邮件主题和邮件内容
print "done!"
else:
print "failed!" MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
它是一个互联网标准,扩展了电子邮件标准,使其能够支持:
非ASCII字符文本;非文本格式附件(二进制、声音、图像等);由多部分(multiple parts)组成的消息体;包含非ASCII字符的头信息(Header information)。
这个标准被定义在RFC 2045、RFC 2046、RFC 2047、RFC 2048、RFC 2049等RFC中。 MIME改善了由RFC 822转变而来的RFC 2822,这些旧标准规定电子邮件标准并不允许在邮件消息中使用7位ASCII字符集以外的字符。正因如此,一些非英语字符消息和二进制文件,图像,声音等非文字消息原本都不能在电子邮件中传输(MIME可以)。MIME规定了用于表示各种各样的数据类型的符号化方法。 此外,在万维网中使用的HTTP协议中也使用了MIME的框架,标准被扩展为互联网媒体类型。

import smtplib
from email.mime.text import MIMEText #用来格式化邮件地址
from email.header import Header
from email.utils import parseaddr, formataddr msg = MIMEText('别人的容忍不是让你践踏的!!', 'plain', 'utf-8') # 输入Email地址和口令:
from_addr = raw_input('From(163邮箱): ') #这里的密码一定是授权码,163邮箱原始密码不行。
password = raw_input('授权码: ') # 输入SMTP服务器地址:这里我们用smtp.163.com
#smtp_server = raw_input('SMTP server: ')
smtp_server = "smtp.163.com" # 输入收件人地址:
to_addr = raw_input('To: ') def _format_addr(s):
name, addr = parseaddr(s)#这个函数会解析出姓名和邮箱地址
return formataddr(( \
Header(name, 'utf-8').encode(), \
addr.encode('utf-8') if isinstance(addr, unicode) else addr)) def send_mail():
#设置发件人,收件人姓名和邮件主题
msg['From'] = _format_addr(u'joker <%s>' % from_addr)
msg['To'] = _format_addr(u'朋友 <%s>' % to_addr)
msg['Subject'] = Header(u'测试邮件', 'utf-8').encode() server = smtplib.SMTP(smtp_server, 25) # SMTP协议默认端口是25 #server.set_debuglevel(1)#打印出和SMTP服务器交互的所有信息 server.login(from_addr, password)#登录服务器 #发送邮件,这里第二个参数是个列表,可以有多个收件人
#邮件正文是一个str,as_string()把MIMEText对象变成str
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
return True if send_mail():
print "done!"

python 发送邮件(收到的邮件要有发送方才能回复)的更多相关文章

  1. python发送邮件(在邮件中显示HTMLTestRunner生成的报告)

    import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart f ...

  2. 【转】【Python】Python发送邮件(常见四种邮件内容)

    在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下,Shell脚本发送邮件告警是件很简单的事,有现成的邮件服务软件或者调 ...

  3. python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)

    简介 本篇文章与前边没有多大关联,就是对前边有关发邮件的总结和梳理.在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下, ...

  4. Python发送邮件(常见四种邮件内容)

    Python发送邮件(常见四种邮件内容) 转载 2017年03月03日 17:17:04   转自:http://lizhenliang.blog.51cto.com/7876557/1875330 ...

  5. python定时利用QQ邮件发送天气预报

    大致介绍 好久没有写博客了,正好今天有时间把前几天写的利用python定时发送QQ邮件记录一下 1.首先利用request库去请求数据,天气预报使用的是和风天气的API(www.heweather.c ...

  6. Python 原生2种 邮件发送(发送验证码) 的方法

    import smtplib from email.mime.text import MIMEText # 第三方 SMTP 服务 mail_host = "smtp.sina.cn&quo ...

  7. Python实现邮件的批量发送

    Python实现邮件的批量发送 1 发送文本信息 '''加密发送文本邮件''' def sendEmail(from_addr,password,to_addr,smtp_server): try: ...

  8. python系统监控及邮件发送

    python系统监控及邮件发送   #psutil模块是一个跨平台库,能轻松实现获取系统运行的进程和系统利用率   import psutil                              ...

  9. MimeMessageHelper代码发邮件时,通过客服端登陆到邮箱,在已发送邮件里没有已经通过代码发送的邮件

    MimeMessageHelper代码发邮件时,通过客服端登陆到邮箱,在已发送邮件里没有已经通过代码发送的邮件, 这个问题很奇怪,这样的话不能看到通过代码发送的邮件历史记录,所以只好借助秘密抄送了,抄 ...

随机推荐

  1. 【leetcode 简单】 第六十三题 使用队列实现栈

    使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作 ...

  2. linux源码安装nginx

    任务目标:源码安装nginx,作为web服务修改配置文件,让配置生效,验证配置 首先要去官网nginx.org下载一个tar包: tar xvf 解包 进入到解包出来的目录,对configure进行配 ...

  3. window下卸载MySQL

    更多内容推荐微信公众号,欢迎关注: 网上找来的,留在这做个备份. 1.控制面板里的增加删除程序内进行删除 2.删除MySQL文件夹下的my.ini文件,如果备份好,可以直接将文件夹全部删除 3.开始- ...

  4. 适配器在JavaScript中的体现

    适配器设计模式在JavaScript中非常有用,在处理跨浏览器兼容问题.整合多个第三方SDK的调用,都可以看到它的身影. 其实在日常开发中,很多时候会不经意间写出符合某种设计模式的代码,毕竟设计模式就 ...

  5. aarch64_l3

    librdmacm-utils-1.1.0-4.fc26.aarch64.rpm 2017-02-12 07:12 87K fedora Mirroring Project libreadline-j ...

  6. re-sign重签名

    准备: ① re-sign.jar重签名工具:(下载地址为:http://troido.de/downloads/category/1): ② 从D:\Android\sdk\build-tools\ ...

  7. rsync + inotify 实时同步

    1. 前言 2 台 nginx 需要做集群, 静态文件和php文件都在nginx服务器本地. 有三种方案: (1)NFS (2)Rsync + inotify (3)共享存储服务器 第一种:当 nfs ...

  8. 统计学习方法九:EM算法

    一.EM算法是什么? EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计. 作用:简单直白的说,估计参数 是一种生成模型 (1)用在概率模型中 (2)含有隐变量 (3)用极大似然估计方 ...

  9. 使用JS实现2048小游戏

    JS实现2048小游戏源码 效果图: 代码如下,复制即可使用: (适用浏览器:360.FireFox.Chrome.Opera.傲游.搜狗.世界之窗. 不支持Safari.IE8及以下浏览器.) &l ...

  10. 开发者常用的 Sublime Text 3 插件

    1.官网下载 Sublime Text 3 (已有安装包的,请忽略) Sublime Text 官网下载地址 : http://www.sublimetext.com/ 2.打开 Sublime Te ...