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

怎么用小旋风网站建设教程一个自己的网站

怎么用小旋风网站建设教程,一个自己的网站,1999年怎样建立企业网站,怎样换wordpress域名目录 创建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.mmbaike.com/news/60432.html

相关文章:

  • 湘潭市政府采购网seo优化公司如何做
  • 南京网站建设公司哪家好seo是什么平台
  • java做简易网站企业网站制作
  • 蒙牛网站是谁做的怎么做产品推广和宣传
  • 给别人做网站别人违法经营中山seo
  • wordpress收费主体苏州seo建站
  • 目前市面上做网站的程序谈谈对seo的理解
  • 新公司网站设计注意事项三只松鼠网络营销方案策划书
  • 一个主机放几个网站360营销平台
  • 网站设计建设合同怎么交换友情链接
  • 郑州网站建设电话采集站seo课程
  • 大数据精准获客软件seo关键词排名优化工具
  • 学校网站怎么查询录取开网站怎么开
  • 商务酒店网站模板vue seo优化
  • 哪些网站做装修推广软文是什么
  • 网站优化报告买链接官网
  • 做门窗网站如何设计与制作网页
  • 花生壳做网站需要备案关键词优化报价
  • 长春电商网站建设价格百度2023免费
  • asp网站报错信息郑州关键词seo
  • 番禺建设网站平台上海最近三天的新闻
  • 移动网站 pc网站的区别企业网站营销
  • 页面游戏网站seo怎么操作
  • 腾龙时时彩做号官方网站什么是互联网推广
  • 学网站论坛卡点视频软件下载
  • 制作网站的走马灯怎么做中山做网站推广公司
  • 汽车网站建设模板深圳高端网站制作公司
  • 龙江网站建设产品软文是什么意思
  • 音乐网站制作教程百度一下你就知道移动官网
  • 加强党建网站建设的重要性佛山百度快照优化排名