python基于exchange函數(shù)發(fā)送郵件過(guò)程詳解
1.Python hasattr() 函數(shù)
描述
hasattr() 函數(shù)用于判斷對(duì)象是否包含對(duì)應(yīng)的屬性。
語(yǔ)法
hasattr 語(yǔ)法:
hasattr(object, name)
參數(shù)
object -- 對(duì)象。 name -- 字符串,屬性名。返回值
如果對(duì)象有該屬性返回 True,否則返回 False。
實(shí)例
以下實(shí)例展示了 hasattr 的使用方法:
#!/usr/bin/python# -*- coding: UTF-8 -*-class Coordinate:x = 10y = -5z = 0point1 = Coordinate()print(hasattr(point1, ’x’))print(hasattr(point1, ’y’))print(hasattr(point1, ’z’))print(hasattr(point1, ’no’)) # 沒(méi)有該屬性
輸出結(jié)果:
TrueTrueTrueFalse
打包.ui文件:
C:Python27Libsite-packagesPyQt4>pyuic4 E:pyDemoproTools.ui -o proTools.py
Qt 代碼是面向?qū)ο蟮模⑶液?jiǎn)單易學(xué)。所有我們添加的組件都是一個(gè)對(duì)象,并且都擁有自己的方法比如toPlainText()(用來(lái)讀取輸入框中的值)。這讓它使用起來(lái)非常方便。
代碼打包:C:Python27Scripts>python pyinstaller-script.py -w E:pyDemoPyQttestPyQt.py testPyQt.spec
-F 帶黑窗口 (打包成單個(gè)exe)
-W 不帶黑窗口(打包成文件形式)
-i 加圖標(biāo)
pyinstaller -i D:ALIX_SH2carReportyx.ico -W D:ALIX_SH2carReportupload2carReport.py
-F -w 打包成exe,但不帶黑窗口
pyinstaller -i D:ALIX_SH2carReportyx.ico -F -w D:ALIX_SH2carReportupload2carReport.py
下面用Pyinstaller生成一個(gè)可執(zhí)行文件試試。
在命令提示符中去到要打包的目錄;直接輸入'pyinstaller -F -w 文件名.py(F大寫);文件目錄出現(xiàn)新的文件夾,里面就是打包好的exe文件了;
-F, -onefile:打包成一個(gè)exe文件 -w, -windowed:使用窗口,無(wú)控制臺(tái) -c, -console:無(wú)窗口,使用控制臺(tái) -D, -onedir:創(chuàng)建一個(gè)目錄,包含exe文件,但會(huì)依賴其他文件 --icon=圖標(biāo)路徑可以通過(guò)'Pyinstaller -h'來(lái)查看
Python發(fā)郵件的代碼如下:
只需要填寫好加粗字體,即可正常使用。
from exchangelib import DELEGATE, Account, Credentials, Message, Mailbox, HTMLBodydef Email(to, subject, body): creds = Credentials( username=’xxxxxx’, password=’xxxxxx’ ) account = Account( primary_smtp_address=’[email protected]’, 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('[email protected]', 'abc', 'def')
但是如果Python環(huán)境安裝有瑕疵,則報(bào)錯(cuò)如下:
$python3 ab.pyTraceback (most recent call last): File 'ab.py', line 22, in <module> Email('[email protected]', 'abc', 'def') File 'ab.py', line 12, in Email access_type=DELEGATE File '/usr/local/lib/python3.5/site-packages/exchangelib/account.py', line 66, in __init__ credentials=credentials) File '/usr/local/lib/python3.5/site-packages/exchangelib/autodiscover.py', line 214, in discover email=email) File '/usr/local/lib/python3.5/site-packages/exchangelib/autodiscover.py', line 236, in _try_autodiscover return _try_autodiscover(e.server, credentials, email) File '/usr/local/lib/python3.5/site-packages/exchangelib/autodiscover.py', line 262, in _try_autodiscover raise_from(AutoDiscoverFailed(’All steps in the autodiscover protocol failed’), None) File '/usr/local/lib/python3.5/site-packages/future/utils/__init__.py', line 398, in raise_from exec(execstr, myglobals, mylocals) File '<string>', line 1, in <module>exchangelib.errors.AutoDiscoverFailed: All steps in the autodiscover protocol failed
好在我有臺(tái)機(jī)器安裝Python3.5.2正常,執(zhí)行上述完全沒(méi)有問(wèn)題。
今天終于搞定!!! 2017-12-11
exchange的版本不對(duì),
我本機(jī)版本:
pip3 search exchangelibexchangelib (1.10.6) - Client for Microsoft Exchange Web Services (EWS)INSTALLED: 1.9.4LATEST: 1.10.6
服務(wù)器版本為:
$pip3 search exchangelibexchangelib (1.10.6) - Client for Microsoft Exchange Web Services (EWS)INSTALLED: 1.10.4LATEST: 1.10.6
要做的就是把服務(wù)器上的版本降低到1.9.4,就🆗了。
pip3 install exchangelib==1.9.4
再次執(zhí)行發(fā)郵件的操作,bingo,搞定!
1、首先下載一個(gè)神器exchangelib,操作 pip install exchangelib
2、然后只需要將下面的信息改成你的信息就可以了
from exchangelib import Account, Message, Mailbox, HTMLBody, ServiceAccount#忽略警告import urllib3urllib3.disable_warnings()#報(bào)錯(cuò)處理:ConnectionError: HTTPConnectionPool(host=’mail.xxx.com’, port=443): Max retries exceeded with url: # import socket# socket.create_connection((host, port), timeout=10)def Email(to, subject, body): creds = ServiceAccount(username=’域名’, password=’密碼’) account = Account(’發(fā)送的郵箱’, credentials=creds, autodiscover=True) m = Message(account=account,subject=subject,body=HTMLBody(body),to_recipients = [Mailbox(email_address=to)] ) m.send()Email('接收的郵箱', '郵件標(biāo)題', '郵件內(nèi)容')
安裝庫(kù)exchangelib
pip install exchangelib1
腳本內(nèi)容
# coding=utf-8## Created on 2018/2/from exchangelib import DELEGATE, Account, Credentials, Configuration, NTLM, Message, Mailbox, HTMLBodyfrom exchangelib.protocol import BaseProtocol, NoVerifyHTTPAdapter#此句用來(lái)消除ssl證書錯(cuò)誤,exchange使用自簽證書需加上BaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdapter# 輸入你的域賬號(hào)如exampleleocred = Credentials(r’EXAMPLEleo’, ’輸入你的密碼’)config = Configuration(server=’輸入郵箱服務(wù)器網(wǎng)頁(yè)地址’, credentials=cred, auth_type=NTLM)a = Account(primary_smtp_address=’輸入你要綁定的郵箱名([email protected])’, config=config, autodiscover=False, access_type=DELEGATE)# 此處為用來(lái)發(fā)送html格式郵件的文件路徑with open(r’C:UsersleoDesktop1.html’) as f:msg = f.read().decode(’utf-8’)m = Message(account=a,folder=a.sent,subject=u’測(cè)試郵件’,body=HTMLBody(msg),to_recipients=[Mailbox(email_address=’輸入你要綁定的郵箱名([email protected])’)])m.send_and_save()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 詳解瀏覽器的緩存機(jī)制2. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)3. ASP基礎(chǔ)知識(shí)VBScript基本元素講解4. UDDI FAQs5. XML入門的常見問(wèn)題(四)6. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)7. XML解析錯(cuò)誤:未組織好 的解決辦法8. asp(vbscript)中自定義函數(shù)的默認(rèn)參數(shù)實(shí)現(xiàn)代碼9. 利用CSS3新特性創(chuàng)建透明邊框三角10. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁(yè)的方法
