今天搞個exchage郵件服務器發(fā)送郵件的問題, 由于對整個機制不熟悉,費了很大功夫才弄出來,主要是端口用錯了,這里記錄一下:
25:SMTP 80:HTTP 110:POP3 143:IMAP
443:HTTPS 587:SMTP 993:IMAP4 SSL 995:POP3 SSL
關于SMTP 和 POP3 IMAP的解釋知乎上有一段:
作者:知行合一
鏈接:https://www.zhihu.com/question/24605584/answer /103769637
來源:知乎
著作權歸作者所有。商業(yè)轉載請聯(lián)系作者獲得授權,非商業(yè)轉載請注明出處。
POP3是Post Office Protocol 3的簡稱,即郵局協(xié)議的第3個版本,它規(guī)定怎樣將個人計算機連接到Internet的郵件服務器和下載電子郵件的電子協(xié)議。它是因特網電子郵件的第一個離線協(xié)議標準,POP3允許用戶從服務器上把郵件存儲到本地主機(即自己的計算機)上,同時刪除保存在郵件服務器上的郵件,而POP3服務器則是遵循POP3協(xié)議的接收郵件服務器,用來接收電子郵件的。
與IMAP有什么區(qū)別 POP3協(xié)議允許電子郵件客戶端下載服務器上的郵件,但是在客戶端的操作(如移動郵件、標記已讀等),不會反饋到服務器上,比如通過客戶端收取了郵箱中的3封郵件并移動到其他文件夾,郵箱服務器上的這些郵件是沒有同時被移動的 。 而IMAP提供webmail 與電子郵件客戶端之間的雙向通信,客戶端的操作都會反饋到服務器上,對郵件進行的操作,服務器上的郵件也會做相應的動作。 同時,IMAP像POP3那樣提供了方便的郵件下載服務,讓用戶能進行離線閱讀。IMAP提供的摘要瀏覽功能可以讓你在閱讀完所有的郵件到達時間、主題、發(fā)件人、大小等信息后才作出是否下載的決定。此外,IMAP 更好地支持了從多個不同設備中隨時訪問新郵件。 總之,IMAP 整體上為用戶帶來更為便捷和可靠的體驗。POP3 更易丟失郵件或多次下載相同的郵件,但 IMAP 通過郵件客戶端與webmail 之間的雙向同步功能很好地避免了這些問題。
SMTP SMTP 的全稱是“Simple Mail Transfer Protocol”,即簡單郵件傳輸協(xié)議。它是一組用于從源地址到目的地址傳輸郵件的規(guī)范,通過它來控制郵件的中轉方式。SMTP 協(xié)議屬于 TCP/IP 協(xié)議簇,它幫助每臺計算機在發(fā)送或中轉信件時找到下一個目的地。SMTP 服務器就是遵循 SMTP 協(xié)議的發(fā)送郵件服務器。 SMTP 認證,簡單地說就是要求必須在提供了賬戶名和密碼之后才可以登錄 SMTP 服務器,這就使得那些垃圾郵件的散播者無可乘之機。 增加 SMTP 認證的目的是為了使用戶避免受到垃圾郵件的侵擾。 IMAP IMAP全稱是Internet Mail Access Protocol,即交互式郵件存取協(xié)議,它是跟POP3類似郵件訪問標準協(xié)議之一。不同的是,開啟了IMAP后,您在電子郵件客戶端收取的郵件仍然保留在服務器上,同時在客戶端上的操作都會反饋到服務器上,如:刪除郵件,標記已讀等,服務器上的郵件也會做相應的動作。所以無論從瀏覽器登錄郵箱或者客戶端軟件登錄郵箱,看到的郵件以及狀態(tài)都是一致的
python代碼:
import smtplib
url = YOUR_EXCHANGE_SERVER
conn = smtplib.SMTP(url,587) # 注意必須是25 或者 587
conn.starttls() # 先創(chuàng)建SSL安全連接,exchange、gemail必須有這一步, 163有沒有均可
user,password = (EXCHANGE_USER,EXCHANGE_PASSWORD)
conn.login(user,password)
msg = MIMEText('關于python smtp的測試郵件','plain', 'utf-8')
msg['From'] = formataddr(["fx01", fromaddr])
msg['To'] = formataddr(["fx02", toaddrs])
msg['Subject'] = "關于python smtp的測試郵件"
conn.sendmail(fromaddr, [toaddrs, fromaddr], msg.as_string())
conn.quit() # 關閉連接
參考:http://stackoverflow.com/questions/288546/connect-to-exchange-mailbox-with-python