python 发送邮件(收到的邮件要有发送方才能回复)

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!"

原文地址:https://www.cnblogs.com/nyist-xsk/p/8822683.html

时间: 2024-08-01 02:34:24

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

python学习笔记[3]-邮件的发送

本文摘抄自:http://www.cnblogs.com/xiaowuyi/archive/2012/03/17/2404015.html 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍:    1.smtplib模块 smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])   SMTP类构造函数,表示与SMTP服务器之间的连接,通过这个连接可以向smtp服务器发送指令,执行

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

Python发送邮件(常见四种邮件内容) 转载 2017年03月03日 17:17:04 转自:http://lizhenliang.blog.51cto.com/7876557/1875330 在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下,Shell脚本发送邮件告警是件很简单的事,有现成的邮件服务软件或者调用运营商邮箱服务器. 对于Python来说,需要编写脚本调用邮件服务器来发送邮件,使用的协议是SMTP.

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

感谢:梦琪小生的<[转][Python]Python发送邮件(常见四种邮件内容)> 里面详细介绍了Python中发送邮件的方法,以供自己参考 原文地址:https://www.cnblogs.com/Owen-ET/p/8423168.html

python发送邮件(一)

最近设计了一个小的应用程序,主要是根据文件中邮件地址发送一份excel中内容,并且在接受方收到邮件都是以网页的格式呈现的. 下面主要是对python发送邮件涉及到的部分知识点做个总结 一.先介绍一下Smtp协议和POP3协议 SMTP (Simple Mail Transfer Protocol) http://www.rfc-editor.org/info/rfc821    RFC821文档详细描述了这个协议信息: 邮件传送代理 (Mail Transfer Agent,MTA) 程序使用S

python发送邮件(转)

SMTP发送邮件 阅读: 90274 SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件. 首先,我们来构造一个最简单的纯文本邮件: from email.mime.text import MIMEText msg = MIMEText('hello, send by Python...', 'plain', 'utf-8

Python发送邮件:smtplib、sendmail

本地Ubuntu 18.04,本地Python 3.6.5, 阿里云Ubuntu 16.04,阿里云Python 3.5.2, smtplib,sendmail 8.15.2, 今天,打算实现通过电子邮件发送 注册用户激活功能,原以为一天是够够的了,谁知,踩到 坑了:一个软件坑,一个ECS坑. 早上一来,便按照教程Python SMTP发送邮件做测试,很简单,使用smtplib模块 在 安装了sendmail的电脑上就可以执行邮件发送功能了. 只是,sendmail是什么?先用起来再说! 拷贝了

解读Python发送邮件

解读Python发送邮件 Python发送邮件需要smtplib和email两个模块.也正是由于我们在实际工作中可以导入这些模块,才使得处理工作中的任务变得更加的简单.今天,就来好好学习一下使用Python发送邮件吧. SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件. 1.邮件正文是文本的格式 1 # -*- codi

python发送邮件的脚本

python发送邮件的脚本,带有邮件内容与附件,邮件内容为串格式,附件为文件.如果想把某个目录下的所有文件当作附件发送,那请去掉注释. 代码如下: #!/usr/bin/python #coding utf-8 from email.MIMEText import MIMEText from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase from email import Utils, E

使用python发送邮件

最近需要做一个功能,统计bug的数量,然后发邮件给指定人,所有就先要了解一下使用python发送邮件 代码如下: #coding: utf-8 import smtplib from email.MIMEText import MIMETextfrom email.Header import Header sender = '[email protected]'       #发件人 receiver = ['[email protected]','[email protected]']   #