python基于exchange函数发送邮件过程详解
1.Pythonhasattr()函数
描述
hasattr()函数用于判断对象是否包含对应的属性。
语法
hasattr语法:
hasattr(object,name)
参数
- object--对象。
- name--字符串,属性名。
返回值
如果对象有该属性返回True,否则返回False。
实例
以下实例展示了hasattr的使用方法:
#!/usr/bin/python #-*-coding:UTF-8-*- classCoordinate: x=10 y=-5 z=0 point1=Coordinate() print(hasattr(point1,'x')) print(hasattr(point1,'y')) print(hasattr(point1,'z')) print(hasattr(point1,'no'))#没有该属性
输出结果:
True
True
True
False
打包.ui文件:
C:\Python27\Lib\site-packages\PyQt4>pyuic4E:\pyDemo\proTools.ui-oproTools.py
Qt代码是面向对象的,并且简单易学。所有我们添加的组件都是一个对象,并且都拥有自己的方法比如toPlainText()(用来读取输入框中的值)。这让它使用起来非常方便。
代码打包:C:\Python27\Scripts>pythonpyinstaller-script.py-wE:\pyDemo\PyQt\testPyQt.pytestPyQt.spec
-F带黑窗口(打包成单个exe)
-W不带黑窗口(打包成文件形式)
-i加图标
pyinstaller-iD:\ALIX_SH\2carReport\yx.ico-WD:\ALIX_SH\2carReport\upload2carReport.py
-F-w打包成exe,但不带黑窗口
pyinstaller-iD:\ALIX_SH\2carReport\yx.ico-F-wD:\ALIX_SH\2carReport\upload2carReport.py
下面用Pyinstaller生成一个可执行文件试试。
在命令提示符中去到要打包的目录;直接输入"pyinstaller-F-w文件名.py(F大写);文件目录出现新的文件夹,里面就是打包好的exe文件了;
- -F,-onefile:打包成一个exe文件
- -w,-windowed:使用窗口,无控制台
- -c,-console:无窗口,使用控制台
- -D,-onedir:创建一个目录,包含exe文件,但会依赖其他文件
- --icon=图标路径
可以通过"Pyinstaller-h"来查看
Python发邮件的代码如下:
只需要填写好加粗字体,即可正常使用。
fromexchangelibimportDELEGATE,Account,Credentials,Message,Mailbox,HTMLBody defEmail(to,subject,body): creds=Credentials( username='xxxxxx', password='xxxxxx' ) account=Account( primary_smtp_address='xxx@xxx.com', credentials=creds, autodiscover=True, access_type=DELEGATE ) m=Message( account=account, subject=subject, body=HTMLBody(body), to_recipients=[Mailbox(email_address=to)] ) m.send() Email("xxx@xxx.com","abc","def")
但是如果Python环境安装有瑕疵,则报错如下:
$python3ab.py Traceback(mostrecentcalllast): File"ab.py",line22,inEmail("xxx@xxx.com","abc","def") File"ab.py",line12,inEmail access_type=DELEGATE File"/usr/local/lib/python3.5/site-packages/exchangelib/account.py",line66,in__init__ credentials=credentials) File"/usr/local/lib/python3.5/site-packages/exchangelib/autodiscover.py",line214,indiscover email=email) File"/usr/local/lib/python3.5/site-packages/exchangelib/autodiscover.py",line236,in_try_autodiscover return_try_autodiscover(e.server,credentials,email) File"/usr/local/lib/python3.5/site-packages/exchangelib/autodiscover.py",line262,in_try_autodiscover raise_from(AutoDiscoverFailed('Allstepsintheautodiscoverprotocolfailed'),None) File"/usr/local/lib/python3.5/site-packages/future/utils/__init__.py",line398,inraise_from exec(execstr,myglobals,mylocals) File" ",line1,in exchangelib.errors.AutoDiscoverFailed:Allstepsintheautodiscoverprotocolfailed
好在我有台机器安装Python3.5.2正常,执行上述完全没有问题。
今天终于搞定!!!2017-12-11
exchange的版本不对,
我本机版本:
pip3searchexchangelib
exchangelib(1.10.6)-ClientforMicrosoftExchangeWebServices(EWS)
INSTALLED:1.9.4
LATEST:1.10.6
服务器版本为:
$pip3searchexchangelib
exchangelib(1.10.6)-ClientforMicrosoftExchangeWebServices(EWS)
INSTALLED:1.10.4
LATEST:1.10.6
要做的就是把服务器上的版本降低到1.9.4,就