当前位置: 首页 > news >正文

免费网站托管app制作与推广

免费网站托管,app制作与推广,十大免费货源网站免费版权,腾讯云域名交易最近使用了不少通讯工具的接口, 比如企业微信机器人#xff0c;钉钉#xff0c;微信公众号的接口(未认证的订阅公众号)#xff0c;相对于邮件来说#xff0c;它们的表现形式太弱。比如没有更丰富的版本方式。当然了#xff0c;并不是说表现形式越棒就是约好的通知手段钉钉微信公众号的接口(未认证的订阅公众号)相对于邮件来说它们的表现形式太弱。比如没有更丰富的版本方式。当然了并不是说表现形式越棒就是约好的通知手段这个依个人情况而定而我恰恰需要比较丰富的表现形式最终还是回到了邮件邮件真香!而个人微信号的接口我没有合适的微信号可以登录如果网页版微信没有被封的话我想这个是表现形式与消息时效性结合的最好的方式。环境虽说就发邮件这么个小事很容易兼容Python2, Python3, 但是大家还是拥抱Python3吧, 我这里没有做python2的兼容写法所以需要python3以上。邮件的格式邮件的格式主要就两种: plain和htmlplain就像一个普通的文本, 没有格式。html就如其名, 是html的格式相当于一个邮件就是一个静态的网页这样的话可玩性就很高了你可以通过css控制表现形式.注意: 这里的css虽然语法一样但是否与浏览器渲染结果完全一致, 是不一定的。那么可能有人要问了我要发一个动态的网页怎么办? 发个链接呀邮箱账号无论是QQ邮箱抑或网易邮箱都是没有问题的重要的是有一个可以通过smtp服务器发送邮件的账户名及密码这里大家百度吧。发送邮件的代码因为发送邮件的代码在下面每个步骤都是一样的所以线贴出来def send_email(msg, mail_to, smtp_host, smtp_username, smtp_password, subject, from_):msg[Subject] Header(subject, utf-8)msg[From] Header(from_, utf-8)if not isinstance(mail_to, list):mail_to [mail_to]msg[To] COMMASPACE.join(mail_to)try:print(准备连接smtp邮件服务器: %s % smtp_host)client smtplib.SMTP(smtp_host)print(连接成功)# client smtplib.SMTP(localhost)# client.set_debuglevel(1)# print(self.mail_user, self.mail_pass)client.login(smtp_username, smtp_password)print(登录成功)# print(, self.mail_from, mail_to)print(通过邮箱[%s]发送邮件给 %s % (smtp_username, COMMASPACE.join(mail_to)))client.sendmail(smtp_username, mail_to, msg.as_string())print(发送成功...)return Trueexcept Exception:print(发送邮件失败)finally:client.quit()如果遇到邮件发送的问题可以将client.set_debuglevel(1)的注释取消这样会显示足够多的debug信息用于排查问题。发送本地图片这里发送图片的意思是指, 图片内嵌在邮件中而不是以附件的形式出现。效果如下:代码如下:EMAIL_IMAGE_TEMPLATE Page Title这是一张图片def create_image_eamil_contant(fp):tpl Template(EMAIL_IMAGE_TEMPLATE)if not path.exists(fp):sys.exit(要发送的本地图片不存在)msg MIMEMultipart(related)image_name demowith open(fp, rb) as rf:mime_image MIMEImage(rf.read())# 注意: 一定需要括号mime_image.add_header(Content-ID, % image_name)msg.attach(mime_image)# 渲染邮件文本内容text tpl.render(image_nameimage_name)msg_alternative MIMEMultipart(alternative)msg_alternative.attach(MIMEText(text, html, utf-8))msg.attach(msg_alternative)return msg如果你使用过python的web框架你对文本的渲染一定不陌生因为大多数web框架都支持文本渲染这里使用的jinja2.发送程序生成的照片其实这里跟上面没什么区别的唯一的区别就是是否保存在本地既然能发送本地图片我就先保存到本地然后再按照上面的方式不久可以了么? 首先这个方法是没有问题的不过多了一次IO, 能在内存中解决的事为什么要放到本地呢这种情况主要是应对回去图片的方式是从其他接口获取到的或者实时生成的时候。虽然很简单但觉得说说也挺有意思的。这里的模拟方式是假设在网上获取到了多张base64编码的图片需要将其组合在一起然后在不保存在本地情况下直接发送这张照片。这个base64编码的图片已经保存在本地了名字是demo_base64.txt效果如下:代码如下:EMAIL_ONLINE_IMAGE_TEMPLATE Page Title这是一张图片def create_online_image_content():from PIL import Imagetpl Template(EMAIL_ONLINE_IMAGE_TEMPLATE)fp demo_base64.txtif not path.exists(fp):sys.exit(要发送的base64编码的图片不存在)msg MIMEMultipart(related)image_name demowith open(fp, rb) as rf:base64_data rf.read()img_data base64.b64decode(base64_data)# 因为open方法需要一个file-like文件对象而我们解码后的对象类型是bytes类型# bytes类型没有文件对象的read, close方法所以我们需要通过BytesIO对象包装一下它会返回一个file-like文件对象img Image.open(BytesIO(img_data))img_width, img_height img.sizerepeat_times 5# compose imagesret_img Image.new(img.mode, (img_width, img_height * repeat_times))for index in range(repeat_times):ret_img.paste(img, box(0, index * img_height))# 因为MIMEImage需要一个bytes对象所以们需要获取图片编码后的二进制数据而不是图片的array数据img_bytes BytesIO()# 如果不指定图片格式会因为没有文件名而报错ret_img.save(img_bytes, png)mime_image MIMEImage(img_bytes.getvalue())# 注意: 一定需要括号mime_image.add_header(Content-ID, % image_name)msg.attach(mime_image)# 渲染邮件文本内容text tpl.render(image_nameimage_name)msg_alternative MIMEMultipart(alternative)msg_alternative.attach(MIMEText(text, html, utf-8))msg.attach(msg_alternative)return msg这里很有意思一点是用BytesIO模拟file-like对象。这里需要安装PIL哦发送一个带样式的静态网页前面的代码已经足够说明图片怎么发了这里通过一个写了css样式的表格进行演示效果如下:代码如下:EMAIL_TEMPLATE table{border-collapse: collapse;margin: 0 auto;text-align: center;}table td, table th{border: 1px solid #cad9ea;color: #666;height: 30px;}table thead th{background-color: #CCE8EB;width: 100px;}table tr:nth-child(odd){background: #fff;}table tr:nth-child(even){background: #F5FAFA;}一共有以下{{record_size}}条数据{% for label in labels %}{{label}}{% endfor %}{% for item in items %}{% for value in item %}{{value}}{% endfor %}{% endfor %}def create_html_content():tpl Template(EMAIL_TEMPLATE)record_size 10label_size 5labels [label-%s % i for i in range(label_size)]items []for _ in range(record_size):item [item-%s % value_index for value_index in range(label_size)]items.append(item)text tpl.render(record_sizerecord_size, itemsitems, labelslabels)msg MIMEText(text, html, utf-8)return msg源代码地址如果期待后续文章可以关注我的微信公众号(又耳笔记)头条号(又耳笔记)github.后记其实发送一个附件也是不错的方式比如发送一个生成的PDF, PDF是一个很棒的文件格式。但是PDF暂时没用到以后有机会再说吧。最后要注意的是手机端的显示效果跟电脑网页版的显示效果是不一样的。参考链接
http://www.pierceye.com/news/280788/

相关文章:

  • 中山网站制作系统创意视差wordpress主题
  • 安康网站开发公司广州微网站建设哪家好
  • 网站建设企业官网源码被代运营骗了怎么追回
  • 网站服务器 重启用邮箱做网站
  • 网站建设修改建议书网站快速收录方法
  • 网站建设项目步骤网站空间可以换吗
  • 美食网站界面设计网页设计制作代码大全
  • 宁波网站建设托管网站正在建设维护中页面
  • 古色古香网站模板响应式布局网站
  • 网站建设制作设计开发福建网站开发文档撰写
  • 钢管公司网站建设国外平面设计欣赏网站
  • 网站建设如何销售济南专门做网站的公司
  • 2018年淘宝客网站怎么做iis网站建设中
  • 网站倒计时代码企业网站建设运营方案
  • 课程网站开发过程东莞外贸模板建站
  • asp.net 网站提速廊坊企业官网搭建
  • 网站开发全过程电商数据分析
  • 代理 指定网站 hostwordpress图片无限放大
  • 中材建设有限公司招标网站包装设计网课答案
  • python云服务器网站开发实例外贸小家电网站推广
  • 郑州做网站公司中天猫商城的商品来源
  • 织梦网站首页互联网保险平台排名
  • 免费做链接的网站做动画相册在哪个网站好
  • 做思维导图好看的网站可以做富集分析的网站
  • wordpress 媒体库 cos百度网站怎样优化排名
  • 自助建站程序html样式模板
  • 公主岭网站建设筑梦网站建设
  • 昊源建设监理有限公司网站广州住房与城乡建设部网站
  • 如何免费建立自己网站wordpress媒体优化
  • 南京企业做网站网站建设的类型有几种