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

苏州市著名网站制作要做网络推广

苏州市著名网站制作,要做网络推广,net做网站遇到的问题,烟台做网站要多少钱目录 创建Smtp对象 Smtp类中的方法 MIME MIMEBase MIMEBase MIMEMultipart MIMEApplication MIMEAudio MIMEImage MIMEText 实例 texthtml格式 发送带图片附件的邮件 发送带附件的邮件 含多种格式 SMTP模块 SMTP 简单传输协议,它是一组用于由源…

目录

创建Smtp对象

Smtp类中的方法

MIME

MIMEBase

MIMEBase 

MIMEMultipart 

MIMEApplication 

MIMEAudio 

MIMEImage

MIMEText

实例

text+html格式

发送带图片附件的邮件

发送带附件的邮件

含多种格式


SMTP模块

SMTP 简单传输协议,它是一组用于由源地址 到 目的地址的 邮件传输规则;

python可以发送纯文本邮件(HTML邮件)、带附件的邮件、以及图片、音频的邮件等;

email模块:负责构建邮件;  smtplib模块:负责发送邮件


创建Smtp对象

import smtplibsmtpObj  = smtplib.SMTP( [host [, 25 [, local_hostname]]] )
# smtpObj = smtplib.SMTP_SSL( [host [, 994 [, local_hostname]]] )

参数说明:
host:  SMTP 服务器主机。 你可以指定主机的ip地址 或者 域名,如: runoob.com,这个是可选参数。

port:  如果你提供了host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25。

local_hostname:  如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可。 

###示例一: smtp = smtplib.SMTP()smtp.connect( [host [ , port]] )        # 连接远程smtp方法,host为远程主机地址,port为smtp端口,默认25;# 也可使用host:port形式来表示. 如:SMTP.connect("smtp.163.com","25")smtp.starttls()                         # 开启安全传输模式smtp.login("test@arcvideo.com","pwd")   # 邮箱账号登录校验smtp.sendmail(FROM, [ TO ], BODY)       # 邮件发送smtp.quit()                             # 断开smtp连接###示例二:
smtp = smtplib.SMTP( [host [ , port]] )smtp.login("test@arcvideo.com","pwd")   # 邮箱账号登录校验smtp.set_debuglevel(1)                  # 打印出和SMTP服务器交互的所有信息。smtp.sendmail(FROM, [TO], BODY)         # 邮件发送smtp.quit()                             # 断开smtp连接smtp中sendmail方法:SMTP.sendmail( from_addr, to_addrs, msg [, mail_options, rcpt_options] )  # from_addr: 发件人地址。to_addrs: 收件人地址(是字符串列表 形式)。msg: 发送消息的内容 【 msg.as_string()  】eg: smtp.sendmail( sender, receivers , msg.as_string() ) 注意:msg 是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意msg 的格式。这个格式就是 smtp 协议中定义的格式。

Smtp类中的方法

MIME

通过邮件传输简单的文本已经无法满足我们的需求,比如我们时常会定制业务质量报表,在邮件主体中会包含 HTML、图像、声音以及附件格式等,MIME(Multipurpose Internet Mail 

Extensions,多用途互联网邮件扩展)作为一种新的扩展邮件格式很好地补充了这一点。

示例:msg.add_header('Content-ID','imgid')                                           # 设置图片ID【图片在正文中可用】msg.add_header('Content-Disposition','attachment',filename='test.xlsx')        # 为附件添加标题(没有这行,附件名称乱码)msg.add_header('Content-Disposition','attachment',filename=('utf-8','','中文标题'))   # 添加非ASCII字符时需指定编码
【图片本来在正文中,但是若加了上边2行之一,则正文中的图片 会跑到附件中。因为上边2行是专门为"附件" 服务的】eg:
msg_img.add_header('Content-ID', '<0>')msg_img.add_header('Content-Disposition', 'attachment', filename="a4.jpg")           
email.header.Header ( s=None , charset=None ):创建一个可以包含不同字符集中的字符串,并符合MIME的标头。
可选参数: s是初始标题值默认为None, 可以使用append()方法追加到标题,charset指定字符集
from email.header import Header
msg['From'] = Header( "测试邮件来自" , 'utf-8' )附加工具:email.utilsemail.utils.localtime(dt=None):返回当前时间,dt参数为datetime实例email.utils.formataddr(pair,charset='utf-8'):pair是一个元祖或列表,返回分割的标题与地址 如邮箱收件人昵称和邮箱账号示例:
from email.utils import formataddr
msg['From'] = formataddr( ['zhangsan' , 'wyh1942049307@163.com' ] )    
msg['To']   = formataddr( ['Anybody' , '92066@163.com'] )

MIMEBase

Message

+- MIMEBase

   +- MIMEMultipart

   +- MIMENonMultipart

      +- MIMEMessage

      +- MIMEText

      +- MIMEImage

如果只有一个html超文本正文 或者 plain普通文本正文的话,一般msg的类型可以是MIMEText;

如果是多个的话,就都添加到MIMEMultipart,msg类型就变为MIMEMultipart。

msg.attach ( MIMEText对象 或 MIMEImage对象 ):

将MIMEText对象或MIMEImage对象添加到MIMEMultipart对象中。

MIMEMultipart对象代表邮件本身,MIMEText对象或MIMEImage对象代表邮件正文。

以上的构造的文本,超文本,附件,图片都可以添加到MIMEMultipart('mixed')中

MIMEBase 

这是所有MIME特定类的基类

email.mime.base.MIMEBase (_maintype,_subtype,*,policy = compat32,** _ params) :

     _maintpe是Content-Type主要类型(text  or image)

     _subtype是Content-Type次要类型(plain or gif)

     _params是一个键值字典参数直接传递给Message.add_header

示例:
filename1 = '图片.pdf'
attachfile_base = MIMEBase('application', 'octet-stream')      # 创建基础对象指定类型
attachfile_base.set_payload (open(filename,'rb').read() )      # 设置我有效负载# 设置文件名可用中文【若没有下边add_header(), 则附件中图片不能正常显示】
attachfile_base.add_header('Content-Disposition', 'attachment', filename=('utf-8', '', filename1))   #为附件添加一个标题
attachfile_base.add_header('Content-Disposition', 'attachment', filename=filename1 .encode('UTF-8'))encoders.encode_base64(attachfile_base)
msg.attach(attachfile_base)                                     # 附加对象加入到msg

MIMEMultipart 

带多个部分邮件(与附件相关)

作用是生成包含多个部分邮件体的MIME对象

email.mime.multipart.MIMEMultipart( _subtype='mixed', boundary= None, _subparts = None, *, policy = compat32, ** _ params ):


_subtype 指定要添加到"Content-type:multipart/subtype" 报头的可选的三种子类型,分别为         mixed、related、alternative,默认值为 mixed。

       mixed  构建带附件的邮件;(向上兼容,如果一个邮件有纯文本正文,超文本正文,内嵌资源,附件,则选择mixed类型)           

       related 构建内嵌资源的邮件体;(内嵌图片、声音等资源)

       alternative 则实现构建纯文本(text/plain) 与 超文本(text/html) 共存的邮件体;

_subparts是有效负载的一系类初始部分,可以使用attach()方法将子部件附加到消息中。

示例:
from email.mime.multipart import MIMEMultipartmsg1 = MIMEMultipart('mixed') 等效于msg = MIMEMultipart( )  # 创建带附件的实例msg2 = MIMEMultipart('related')       # 创建内嵌资源的实例(如:在正文html中 内嵌图片)msg3 = MIMEMultipart('alternative')   # 创建纯文本与超文本实例# 创建一个带附件的实例msg = MIMEMultipart()     # 等价于 msg = MIMEMultipart('mixed') 默认值为mixted ,创建带附件的实例msg['Subject'] = subject  # MIMEMultitext() 与 MIMEMultipart() 时,均可以这样msg['From'] = sendermsg['To'] = receivers

MIMEApplication 

消息对象应用

被用来表示主要类型的MIME消息对象应用

email.mime.application.MIMEApplication( _data, _subtype='octet-stream', _encoder=email.encoders.encode_base64, *, policy=compat32, **_params ):

        _data是一个包含原始字节数据的字符串;

        _subtype指定MIME子类型默认为八位字节流;

        _encoder是一个可调用函数,它执行传输数据的实际编码,使用set_payload()将有效载荷改为编码形式,默认编码位base64,可使用email.encoders模块查看内置编码表。

示例:
filename = 'abc.pdf'with open(filename,'rb') as f:attachfile = MIMEApplication( f.read() )attachfile.add_header('Content-Disposition', 'attachment', filename=filename)msg.attach(attachfile)  # 附加对象加入到msg

MIMEAudio 

创建包含音频数据的邮件体

email.mime.audio.MIMEAudio ( _audiodata [, _subtype [, _encoder]] ):

      _audiodata 包含原始二进制音频数据的字节字符串;

      _subtype音频类型;

      _encoder编码。

示例:
from email.mime.audio import MIMEAudiomsgaudio = MIMEAudio( open('yishengsuoai.mp3','rb').read() , 'plain' )             # 文本音频对象,plain是默认。
msgaudio.add_header('Content-Disposition','attachment',filename='text.mp3') #扩展标题类型,文件名msg.attach(msgaudio)  

MIMEImage

MIMENonMultipart中的一个子类,创建包含图片数据的邮件体

email.mime.image.MIMEImage ( _imagedata [ , _subtype [ , _encoder [ , **_params]]] ):

       _imagedata 是包含原始图片数据的字节字符串;

       _sutype    指定图像子类型;

     _encoder   指定一个函数内部编码默认为:email.encoders.encode_base64默认为base64编码;

示例:
from email.mime.image import MIMEImage with open('test.png','rb') as fp:msgImage = MIMEImage( fp.read() ) msgImage.add_header('Content-ID','imgid')  # 为图片对象拓展标题字段和值msg.attach(msgImage)                       # 将图像负载添加到msg负载

MIMEText

文本  html格式邮件

MIMENonMultipart中的一个子类,创建包含文本数据的邮件体

email.mime.text.MIMEText ( _text [ , _subtype [ , _charset]] ):

      _text 要发送的文本字符串内容;

     _subtype 指定文本类型,支持 plain(默认值为txt格式) 或 html类型的字符串。发送HTML格式的时候,修改为html,但同时要求msg的内容也是html的格式;【注意:html格式的,就是放在MIMEText中的

_charset设置字符集,参数接收一个charset实例;

示例:
from email.mime.text import MIMEText# 创建文本内容的邮件体
msg = MIMEText( "python test email" , 'plain' , 'utf-8' )# 创建HTML格式的邮件体
msg = MIMEText( "<p>python test email</p><p><a href="http://www.demo.com">链接</a></p>" , 'html' , 'utf-8' )# 构造TEXT格式的消息
msg = MIMEText ("hello.text","plain","utf-8")msg["Subject"] = "xxxxx"  # 主题msg["From"] = "xxxx"      # 发送者msg["To"] = "xxxx"        # 接收者
msg["Cc"] = "xxxx"        # 抄送#注意:发送以上构造的邮件内容要使用as_string将构造的邮件内容转换为string形式。
msg.sendmail( "发件人","收件人" , msg.as_string )

实例

text+html格式

import smtplib
from email.mime.text import MIMEText
from email.header import Headersender = 'xxx@163.com'passwd = 'abcdefg'                                   receivers = '123456789@qq.com'  subject = 'python发邮Html格式测试'  content = "<html><h1>人生苦短,何必执着</h1></html>"msg = MIMEText(content, 'html', 'utf-8')msg['Subject'] = Header(subject , 'utf-8') # msg['Subject'] = subjectmsg['From'] = Header('hello', 'utf-8')     # msg['From'] = sender , 发件人为:hello#msg['From'] = '詹姆斯'                     # 可以固定写死(也可以为空)msg['To'] = Header('emmmm', 'utf-8')       # msg['To'] = receivers , 收件人为:emmmm   #msg['To'] = '湖人队'try:smtp = smtplib.SMTP('smtp.163.com', 25)smtp.login(sender, passwd)smtp.sendmail(sender, receivers, msg.as_string())print('发送成功')except:                                    # 或 except Exeception as e:print('发送失败')

发送带图片附件的邮件

import smtplib
from email.mime.image import MIMEImage
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipartsender = 'xxx@163.com'passwd = 'abcdefg'receivers = '123456789@qq.com'subject = 'python发邮带img的邮件测试'# 创建一个带附件的实例
msg = MIMEMultipart() # 等价于 msg = MIMEMultipart('mixed') 默认值为mixted ,创建带附件的实例msg['Subject'] = subjectmsg['From'] = sendermsg['To'] = receivers# 创建正文
msg.attach( MIMEText('使用python smtplib模块和email模块自动发送邮件测试', 'plain', 'utf-8') )# 创建图片附件
import osimg_file = open("/Users/benmu/Desktop/库里.jpg", 'rb').read()#img_file = open(os.getcwd()+"/a4.jpg",'rb').read() # 获取项目中的 a4.jpg图片
msg_img = MIMEImage(img_file)#没有下边2行,接收邮件端,的附件图片不能正常显示
msg_img.add_header('Content-Disposition', 'attachment', filename="a4.jpg")   #为附件添加标题(没有这行,附件名称乱码)msg_img.add_header('Content-ID', '<0>')msg.attach(msg_img)    # 附加对象加入到msgtry:s = smtplib.SMTP('smtp.163.com', 25)s.set_debuglevel(1)  # 输出发送邮件详细过程s.login(sender, passwd)s.sendmail(sender, receivers, msg.as_string())print('发送成功')except:print('发送失败')

发送带附件的邮件

模版(xlsx、csv、jpg、mp3)

下方替换的模版【各个部分一组合,就是发送多个附件】

###xlsx类型的附件【筛选、固定宽度、冻结首行;多sheet页这些; 原样发过去,格式、数据都不变】[也可发送zip文件]xlsx = MIMEApplication( open('/Users/benmu/Desktop/挂数200条.xlsx', 'rb' ).read() )      # 改为挂数200条.csv也可以xlsx.add_header('Content-Disposition', 'attachment', filename='挂数200条.xlsx')         # 为附件添加标题xlsx["Content-Type"] = 'application/octet-stream'mes.attach(xlsx)或# 读取xls文件作为附件,open()要带参数'rb',使文件变成二进制格式,从而使'base64'编码产生作用,否则附件打开乱码
att = MIMEText( open("/Users/benmu/Desktop/挂数200条.xlsx", 'rb' ).read(), 'base64', 'GB2312' )att.add_header('Content-Disposition','attachment',filename='挂数200条.xls')att['Content-Type'] = 'application/vnd.ms-excel'mes.attach(att)### jpg类型的附件
jpgpart = MIMEApplication( open('/Users/benmu/Desktop/库里.jpg', 'rb').read() )jpgpart.add_header('Content-Disposition', 'attachment', filename='库里.jpg')mes.attach( jpgpart )或fp = open('/Users/benmu/Desktop/库里.jpg', 'rb')msgImage = MIMEImage(fp.read())fp.close()msgImage.add_header('Content-Disposition', 'attachment', filename='库里.jpg')mes.attach(msgImage)### mp3类型的附件
mp3part = MIMEApplication(open('/Users/benmu/Desktop/大数据时代下数据可视化技术.m4a', 'rb').read())mp3part.add_header('Content-Disposition', 'attachment', filename='大数据时代下数据可视化技术.m4a')mes.attach(mp3part)

####带“多个”附件##### 构造附件1,传送当前目录下的 test.txt 文件
att_annex1 = MIMEText(open('/Users/benmu/Desktop/test.txt', 'rb').read(), 'base64', 'utf-8')att_annex1["Content-Type"] = 'application/octet-stream'att_annex1["Content-Disposition"] = 'attachment; filename="test.txt"'mes.attach(att_annex1)# 构造附件2,传送当前目录下的 test2.txt 文件
att_annex2 = MIMEText(open('/Users/benmu/Desktop/runoob.txt', 'rb').read(), 'base64', 'utf-8')att_annex2["Content-Type"] = 'application/octet-stream'att_annex2["Content-Disposition"] = 'attachment; filename="runoob.txt"'mes.attach(att_annex2)

含多种格式

import os
import smtplib
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
from email import encoders# 遍历桌面文件夹 中 文件
files ='/Users/benmu/Desktop/my_test'  # 附件中内容都在桌面的my_test文件夹中filenames = [os.path.join(files, f) for f in os.listdir(files) ]  #os.listdir()返回指定文件夹下的"所有文件和文件夹",保存到列表中sender = 'xxx@163.com'receivers = ['123456789@qq.com']passwd = 'abcdefg'subject = 'Python SMTP 邮件测试'content = MIMEText('测试发送数据:')mes = MIMEMultipart( )  # 创建带附件的实例mes.attach(content)     # 正文内容mes['From'] = Header("詹姆斯", 'utf-8')  # MIMEMultitext() 与 MIMEMultipart() 时,均可以这样mes['To'] = Header("湖人队", 'utf-8')mes['Subject'] = Header(subject, 'utf-8')for file in filenames:a = file.rfind('/')file_name = file[a+1:]       # 截取后获得文件名if file_name !='.DS_Store':  # 过滤掉以.DS_Store结尾的文件【不知哪来的】#print(file_name)        # 打印文件夹中 文件名【可去掉】part = MIMEBase('application', 'octet-stream') # 必须是使用MIMEBasepart.set_payload(open(file, 'rb').read())encoders.encode_base64(part)part.add_header('Content-Disposition', 'attachment', filename='%s' % file_name) mes.attach(part)try:smtp = smtplib.SMTP('smtp.163.com',25)smtp.login(sender, passwd)smtp.sendmail(sender, receivers, mes.as_string())print("邮件发送成功")except Exception as e:   # 或 except smtplib.SMTPException as e:print( '失败原因:' , str(e) )finally:smtp.quit()

结果:

http://www.hkea.cn/news/730414/

相关文章:

  • 武汉平价做网站网络软文推广案例
  • 新产品线上推广方案鞍山seo外包
  • 网站建网站建设和优佛山网络推广培训
  • 毕业设计做网站怎么样微信crm管理系统
  • 个人网站开发多少钱电脑培训班零基础
  • 互联网有哪些岗位宁波免费seo在线优化
  • 惠州做棋牌网站建设哪家技术好哪里的网络推广培训好
  • 如何做线上赌博的网站推广策略有哪些方法
  • 男的女的做那个视频网站百度收录需要多久
  • 大通县wap网站建设公司网站免费制作
  • 哪个网站教做公众号甘肃百度推广电话
  • 网站怎么让百度收录广告网络推广
  • 小型网站设计及建设论文定制网站制作公司
  • 视频网站建设费用排名优化网站seo排名
  • 怎么自己做网站服务器linux百度账号查询
  • 梧州网站推广方案百度热搜 百度指数
  • 网站不兼容ie6自助建站模板
  • 甘肃网站建设公司百中搜优化软件
  • 国内外贸网站建设公司seo教程 百度网盘
  • 一物一码二维码生成系统最好用的系统优化软件
  • 如何在大网站做外链镇江网站建站
  • 杭州网站建设公司导航短视频营销案例
  • 昆明做网站建设有哪些长尾关键词排名工具
  • 一女被多男做的视频网站网站seo系统
  • 网站建设 青海网站建设找哪家好
  • win7 网站配置优化方案官网电子版
  • 广州seo优化公司排名浙江seo博客
  • 全网推广的方式有哪些抖音seo推荐算法
  • 网站开发开源架构抖音营销软件
  • 自己做的网站能放到网上么青岛seo经理