python发HTML邮件在下载邮件时遇到问题题:发html邮件,html中嵌入js生成的图片如何发送到邮件呀

&>&&>&开发技术&>&Python&>&Python2.4.3实现在Linux环境发送带附件的邮件,支持html格式
Python2.4.3实现在Linux环境发送带附件的邮件,支持html格式
上传大小:5KB
Python2.4.3实现在Linux环境发送带附件的邮件,支持html格式
综合评分:5(2位用户评分)
所需积分:
下载次数:14
审核通过送C币
python2.7-win32常用安装包系列
创建者:caozhy
用python写网络爬虫
Python 英文资料
创建者:qq_
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click",'.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
评论共有1条
感谢楼主!
上传者其他资源上传者专辑
SuperPuttySetup-v1.4.0.8.msi
SuperPuTTY-1.4.0.8.zip
SourceTreeSetup_1.6.20
Python2.7.8实现在Linux环境发送带附件的邮件,支持html格式
MDB Viewer Plus
开发技术热门标签
VIP会员动态
前端开发重难点
17年软考最新真题及解析
物联网全栈开发专题
二十大技术领域优质资源
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
CSDN&vip年卡&4000万程序员的必选
Python2.4.3实现在Linux环境发送带附件的邮件,支持html格式
会员到期时间:剩余下载次数:
积分不足!
资源所需积分
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分
当前拥有积分
VIP年卡全年1200次免积分下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:2987人阅读
Python(31)
Requirement:
python modules:
(生成html页面)
email preview:
(因为email中的html格式比较特殊,经常需要预览一下效果)
(主要讲了在email中使用html的注意事项)
Using CSS with html.HTML():
pypi上的例子就讲的很详细,我就不复述了,下面讲一下如何在邮件中使用CSS。
邮件客户端不支持外部样式,所以我们主要使用内部样式和内联样式。
内部引用CSS样式
from html import HTML
color: #00FF00;
color: #FF0000;
color: #FFFF00;
h = HTML('head')
h.text('&style&{}&/style&'.format(css), escape=False)
b = HTML('body')
t = b.table(border='1')
r = t.tr()
r.td('column 1', klass='class1')
r.td('column 2', klass='class2')
r.td('column 3', klass='class3')
print '{} {}'.format(h,b)
内联引用CSS样式 (有些邮件客户端会忽略里面的样式,所以推荐使用内联样式)
from html import HTML
inline_css={
'class1':'color:#00FF00;',
'class2':'color:#FF0000;',
'class3':'color:#FFFF00;',
b = HTML()
t = b.table(border='1')
r = t.tr()
r.td('column 1', style=inline_css['class1'])
r.td('column 2', style=inline_css['class2'])
r.td('column 3', style=inline_css['class3'])
print str(b)
Envelopes的例子已经很清楚了。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:432378次
积分:5417
积分:5417
排名:第4879名
原创:123篇
转载:61篇
评论:30条
(1)(2)(1)(1)(1)(1)(1)(1)(3)(5)(2)(6)(1)(1)(1)(3)(1)(1)(1)(2)(1)(2)(1)(2)(1)(1)(1)(2)(3)(2)(3)(1)(3)(1)(5)(7)(10)(3)(6)(3)(5)(6)(3)(5)(2)(5)(12)(6)(8)(6)(8)(14)(12)(1)2010年 总版技术专家分年内排行榜第一2009年 总版技术专家分年内排行榜第一
2011年 总版技术专家分年内排行榜第二
本帖子已过去太久远了,不再提供回复功能。最近需要些一个根据配置自动获取html正文及附件的工具脚本。随业余时间写了这个脚本,同时也是对邮件结构的一个学习;后续还需要继续完善html内容生成的部分
感觉脚本还可以优化,比如可以加入图片部分,pdf等,另外发送邮件用的默认铭文方式。没有采用加密/SSL等其他方式;
另外xml配置部分的提取还可以使用字典来做。这样可以更优一些;
xml配置文件:
&?xml version="1.0" encoding="UTF-8"?&
&EmailServerConf&
&!-- smtp配置 :只支持1个--&
ip="email ip" port="25" user="abc" password="defdd" /&
&/EmailServerConf&
&!-- 发件人:只支持1个 --&
&From address="" /&
&!-- 收件人:支持多个 --&
&ToEmailList&
&To address="" /&
&/ToEmailList&
&!-- 抄送:支持多个 --&
&CCEmailList&
&CC address="" /&
&/CCEmailList&
&!-- 邮件主题:只支持1个 --&
&Subject title="This is for test!" /&
&!-- 邮件正文:只支持1个,html格式,无图片 --&
&Emailcomment&
&comment file="C:\Users\aaa\Desktop\Multipart.html" /&
&/Emailcomment&
&!-- 邮件附件:支持多个 --&
&EmailAttach&
&attach file="C:\Users\aaa\Desktop\Multipart.html" /&
&/EmailAttach&
python部分:
#! /usr/bin/env python
#coding:utf-8
import os,string,sys
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email import Utils
from email.MIMEBase import MIMEBase
from email import encoders
from xml.dom import minidom
import logging
from email.mime.text import MIMEText
class CommEmail(object):
emailConf = r"D:\workspace\car\tools\emailconf.xml"
def __init__(self):
self.sIp = ""
self.sPort = ""
self.sUser = ""
self.sPassword = ""
self.fEmailServerConfFile = ""
self.fEmailTemplateFile = ""
self.sEmailOwner = ""
self.dEmailTo = []
self.dEmailCC = []
self.dattach = []
self.sSubject = ""
self.emComment = ""
self.tDate = Utils.formatdate(localtime = 1)
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='Email.log',
filemode='a')
#from conf-profile to set email-server
self.fEmailServerConfFile = self.emailConf
#tag handle
xmlFeed = minidom.parse(self.fEmailServerConfFile)
xmlEmaiSMTP = xmlFeed.getElementsByTagName('smtp')
xmlEmailFrom = xmlFeed.getElementsByTagName('From')
xmlEmaiTos = xmlFeed.getElementsByTagName('To')
xmlEmaiCCs = xmlFeed.getElementsByTagName('CC')
xmlEmailSubject = xmlFeed.getElementsByTagName('Subject')
xmlEmailComments = xmlFeed.getElementsByTagName('comment')
xmlEmailattachs = xmlFeed.getElementsByTagName('attach')
#only one smtp-tag
for smtpConf in xmlEmaiSMTP:
self.sIp = smtpConf.getAttribute("ip")
self.sPort = smtpConf.getAttribute("port")
self.sUser = smtpConf.getAttribute("user")
self.sPassword = smtpConf.getAttribute("password")
for To in xmlEmaiTos:
self.dEmailTo.append(To.getAttribute("address"))
for cc in xmlEmaiCCs:
self.dEmailCC.append(cc.getAttribute("address"))
#From & Subject
self.sEmailOwner = xmlEmailFrom[0].getAttribute("address")
self.sSubject = xmlEmailSubject[0].getAttribute("title")
self.emComment = open(xmlEmailComments[0].getAttribute("file")).read()
for attach in xmlEmailattachs:
self.dattach.append(attach.getAttribute("file"))
("smtp conf ====& ip: "+ self.sIp + " " + "port: " + self.sPort + " " + "user: " + self.sUser + " password: " + self.sPassword )
("init end")
logging.warning("ERROR: EmailServerConfFile is ERROR !!!")
logging.warning("exit(1) from __init__")
#for email-server test
def testEmaileServer(self):
emailHandle = smtplib.SMTP(self.sIp,int(self.sPort))
#emailHandle.putcmd("vrfy", "")
#emailHandle.getreply()
emailHandle.login(self.sUser, self.sPassword)
msg = "To:
\nSubject:testing \n" #header
msg = "\nthis is test msg\n\n"
emailHandle.sendmail("", "", msg)
emailHandle.quit()
#(" Email for test was send." )
#get html commtent
#email comment & sendmail
def sendHtmlEmail(self):
msg = MIMEMultipart()
msg["Subject"] = self.sSubject
msg["From"] = self.sEmailOwner
msg["To"] = ";".join(self.dEmailTo)
msg["CC"] = ";".join(self.dEmailCC)
msg["Date"] = self.tDate
#email comment
emailComment = MIMEText(self.emComment,_subtype="html",_charset='base64')
#add eamil attach
for a in self.dattach:
t =MIMEBase('application','octet-stream')
t.set_payload(open(a,'r').read())
encoders.encode_base64(t)
t.add_header('Content-Disposition','filename="%s"' % os.path.basename(a))
msg.attach(t)
msg.attach(emailComment)
emailHandle = smtplib.SMTP()
emailHandle.connect(self.sIp,int(self.sPort))
emailHandle.login(self.sUser, self.sPassword)
emailHandle.sendmail(msg["From"], msg["To"], msg.as_string())
emailHandle.quit()
emailHandle.close()
(" Email for test was send." )
("makeMIMETextEmail ok")
logging.warning("ERROR: makeMIMETextEmail is ERROR !!!")
logging.warning("exit(1) from makeMIMETextEmail")
if __name__ == "__main__":
a = CommEmail()
a.makeMIMETextEmail()
smtp协议参考文章:
这个东西这里只用来了解,没有详细学习;有问题可以参考下列文章:
http://blog.csdn.net/kerry0071/article/details/
http://blog.csdn.net/bripengandre/article/details/2191048
邮件结构简述:
a、邮件结构可以通过查看邮件源码看到。可以看到邮件其实也是类似http请求一样。有包头,body等;在python中的对应类和方法大多数也是采用hash字典来操作;
b、python中各MIME类的继承结构:
MIMEBase& & |-- MIMENonMultipart& & & & |-- MIMEApplication& & & & |-- MIMEAudio& & & & |-- MIMEImage& & & & |-- MIMEMessage& & & & |-- MIMEText& & |-- MIMEMultipart
c、各种多媒体格式可以通过MIMEBse类来构造。在头部加入application/octet-stream ,即2进制文件。其实就是MIMEApplication类,让客户端自己根据附件的扩展名判断需要用什么来解析;
参考文章:
http://blog.csdn.net/handsomekang/article/details/9811355 &------ 各种类型附件发送方法
阅读(...) 评论()摘要:答案肯定是可以的,所以今天我们就来看一段代码,掌握如何发出html格式的邮件,我们先看代码:import smtplib
def format_mail(mail...
运维的监控报警方式中邮件算是比较常用的形式了,虽然现在逐渐过度到采用短信或微信形式报警,但邮件报警方式始终占有一席之地,因为毕竟不是每个报警都需要及时处理,合理的对报警进行分级是有效避免报警泛滥的一种方式,那既然邮件报警是我们日常必不可少的内容,那是否可以发的更美观些呢?答案肯定是可以的,所以今天我们就来看一段代码,掌握如何发出格式的邮件,我们先看代码:
import smtplib
&&& return&{} &.format(mail.split(&@&)[0], mail)
smtp_server_host =&&
smtp_server_port = 465
sender = &&
pwd = &sender_password&
receivers =[&&]
message = &&&
&h1&This is a title&/h1&
&h2&This is a sub title&/h2&
&p&This is a paragraph &a href=&://&&点我&/p&
formatted_message = &&&From:{}
-Version: 1.0
Content-type: text/html
Subject: Example Subject
&&&.format(&{}&.format(sender.split(&@&)[0], sender), &,&.join(map(format_mail, receivers)), message)
&&&print(&sending message: & + message)
&&&with smtplib.SMTP_SSL(smtp_server_host, smtp_server_port) as :
&&&&&&&session.login(sender, pwd)
&&&&&&&session.(sender, receivers, formatted_message)
&&&print(&message sent&)
except smtplib.SMTPException:
print(&couldnot send mail&)
脚本解释,先定义了一个函数,用来返回邮箱前缀的内容,接下来定义的邮箱服务器的地址和域名,发送及接收人的地址,message 是要发的内容,这段就是邮件正文,可以用html标签来写,format函数是格式化字符串的,join函数可以把字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串,map() 函数接收两个参数,第一个是函数,第二个是序列,然后将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回,try这部分就是真正发送邮件的代码,比较简单,不做过多介绍了,到此结束,欢迎转发。
请注意这个脚本我是在2.7下写的,如果是2.6的版本会有报错。
上一篇:下一篇:
前言一封邮件可以很简单,也可以很吸引人. 在鹰学堂第二十九课时,给大家分享了如何去设计HTML邮件.课程主要从以下3个方面来...
鹰眼搜搜客户
原文作者:Nicole Merlin 翻译:Yimin Zhou在这次教程中,我将为你展示怎么制作简单的响应式HTML邮件,并且能适应各种邮件客户...
Envato艺云台先锋
&/html&效果展示可以看到email链接和其他链接看起来并没有什么不同,但单击它时,网站用户的email程序将会新建一封邮件,并将链...
抛开后台和编辑工作,单单是设计一个Email样板,就需要不少心思.因为这种带格式的邮件,其实就是一张网页,正式名称叫做HTML...
如果此刻你正在为邮件签名而伤神,希望以下这些精美的邮件签名能为你带来一些灵感.
song邮件模板超市
同问.html模板网站写的是支持outlook和foxmail,经测试foxmail可以outlook还不...
可以通过第三方邮件平台发送,专业的事交给专业的人来做,mailpanda支持上传html格式的邮件,群发更方便.
备注:一共分为五个部分,这篇是第一部分,详情看视频更新哈. 外贸技能01-教你从零开始写一封有吸引力的HTM...
根据打开邮件的客户端、浏览器,使用其默认字体显示.
邮件支持的html是受限的,比如只能用行内样式,比如只能用table这种上古时期的方式来布局.
今日推荐本周推荐本月推荐
56 分钟前标签:
56 分钟前标签:
56 分钟前标签:
1 小时前标签:
1 小时前标签:
点击上方「」一键关注,更多网页设计 UI设计 Html div css HTML5+CSS3、JavaScript、JQuery,PHP、mysql、帝国...
web前端网页设计
更好的形式处理,和几个api拖放元素,定位,包括网页应用程序缓存,存储,网络工作者等. 一般广义而言的HTML5则包含了HTML...
品源职业教育
V8 API 把Node.js 和C++ 结合起来.虽然在 Node.js 官方网站有很多的关于怎么使用这些 API 的文档,但是在 JavaScript 和C++ 之间传...

我要回帖

更多关于 在下载邮件时遇到问题 的文章

 

随机推荐