摘要:本米撲博客先介紹幾個最簡單的發送郵件方式記錄下,像郵件,附件等也是支持的,需要時查文檔即可。特別注意命令發送郵件,默認用端口號,由于阿里云騰訊云等封禁了端口號,因此本示例需在開通端口機器上測試執行命令收件結果
Python發送email的三種方式,分別為使用登錄郵件服務器、使用smtp服務、調用sendmail命令來發送三種方法
本文原文自米撲博客:Python 發送 email 的三種方式
Python發送email比較簡單,可以通過登錄郵件服務來發送,linux下也可以使用調用sendmail命令來發送,還可以使用本地或者是遠程的smtp服務來發送郵件,不管是單個,群發,還是抄送都比較容易實現。本米撲博客先介紹幾個最簡單的發送郵件方式記錄下,像html郵件,附件等也是支持的,需要時查文檔即可。
一、登錄郵件服務器
通過smtp登錄第三方smtp郵箱發送郵件,支持 25 和 465端口
vim python_email_1.py
#!/usr/bin/env python # -*- coding:utf-8 -*- # # author: mimvp.com # 2015.10.05 import smtplib from email.mime.text import MIMEText smtpHost = "smtp.exmail.qq.com" sender = "robot@mimvp.com" password = "mimvp-password" receiver = "yanggang@mimvp.com" content = "hello mimvp.com" msg = MIMEText(content) msg["Subject"] = "email-subject" msg["From"] = sender msg["To"] = receiver ## smtp port 25 smtpServer = smtplib.SMTP(smtpHost, 25) # SMTP smtpServer.login(sender, password) smtpServer.sendmail(sender, receiver, msg.as_string()) smtpServer.quit() print "send success by port 25" ## smtp ssl port 465 smtpServer = smtplib.SMTP_SSL(smtpHost, 465) # SMTP_SSL smtpServer.login(sender, password) smtpServer.sendmail(sender, receiver, msg.as_string()) smtpServer.quit() print "send success by port 465"
執行命令:
$ python python_email_1.py send success by port 25 send success by port 465
發送結果,會收到兩封郵件,截圖其中一份郵件如下圖:
二、使用smtp服務
測試失敗,略過或留言指正
#!/usr/bin/env python # -*- coding:utf-8 -*- # # author: mimvp.com # 2015.10.05 import smtplib from email.mime.text import MIMEText import subprocess smtpHost = "smtp.exmail.qq.com" sender = "robot@mimvp.com" password = "mimvp-password" receiver = "yanggang@mimvp.com" content = "hello mimvp.com" msg = MIMEText(content) if __name__ == "__main__": p = subprocess.Popen(["/usr/sbin/sendmail", "-t"], stdout=subprocess.PIPE) print(str(p.communicate())) p_res = str(p.communicate()[0]) msg = MIMEText(p_res) msg["From"] = sender msg["To"] = receiver msg["Subject"] = "hello mimvp.com" s = smtplib.SMTP(smtpHost) s.login(sender, password) s.sendmail(sender, receiver, msg.as_string()) s.quit() print "send success"
三、調用sendmail命令
調用本機linux自身sendmail服務發送郵件,不需要啟動sendmail后臺進程,不需要發送者登錄,郵件發送者可以是任意名字,沒有限制。
特別注意:sendmail 命令發送郵件,默認用25端口號,由于阿里云、騰訊云等封禁了25端口號,因此本示例需在開通25端口機器上測試
vim python_email_3.py
#!/usr/bin/env python # -*- coding:utf-8 -*- # # author: mimvp.com # 2015.10.05 from email.mime.text import MIMEText from subprocess import Popen, PIPE import commands import sys reload(sys) sys.setdefaultencoding("utf-8") def send_mail(sender, recevier, subject, html_content): msg = MIMEText(html_content, "html", "utf-8") msg["From"] = sender msg["To"] = recevier msg["Subject"] = subject p = Popen(["/usr/sbin/sendmail", "-t"], stdin=PIPE) p.communicate(msg.as_string()) sender = "robot@mimvp.com" recevier = "yanggang@mimvp.com" subject = "sendmail-subject" html_content = "hello mimvp.com" send_mail(sender, recevier, subject, html_content)
執行命令:
python python_email_3.py
收件結果:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44825.html
摘要:可以簡單方便的通過配置,并可以向和中發消息來驗證自己的理解。然后通過發送消息,可以隨便填寫,因為是類型的,不起作用。這種情況下,隊列之間是互斥關系,一個消息最多只能進入一個隊列。 現在很多開源軟件都提供了對應的web管理界面,rabbitmq也不例外,rabbitmq提供了一個web插件。當rabbit-server啟動之后,即在瀏覽器中通過http://localhost:15672...
摘要:的明確目標是成為標準網絡協議棧的一部分,之后進入內核。實現端測試消息已發送端正在轉發端輸出結果已發送已發送已發送正在轉發正在轉發正在轉發測試消息測試消息測試消息 簡介 ZMQ (以下 ZeroMQ 簡稱 ZMQ)是一個簡單好用的傳輸層,像框架一樣的一個 socket library,他使得 Socket 編程更加簡單、簡潔和性能更高。是一個消息處理隊列庫,可在多個線程、內核和主機盒之間...
摘要:分塊傳輸編碼分塊傳輸編碼是超文本傳輸協議中的一種數據傳輸機制,允許由網頁服務器發送給客戶端應用通常是網頁瀏覽器的數據可以分成多個部分。分塊傳輸編碼只在協議版本中提供。 實習中的一個主要工作就是分析 HTTP 中的協議,自己也用 Python 寫過正則表達式對 HTTP 請求和響應的內容進行匹配,然后把關鍵字段抽離出來放到一個字典中以備使用(可以稍微改造一下就是一個爬蟲工具)。 HTTP...
摘要:的簡介隨著近年來的火爆程度逐年攀升越來越多的開發者開始因其豐富的庫支持簡潔高效的語法以及強大的運算速度而對其紛紛側目也正因此及基于它而生的各類框架如等普遍應用于當下各類場景下作為時代的弄潮兒大有獨領風騷之勢也正是因此毫無疑問是當前最好的編程 PyCharm的簡介 隨著近年來Python的火爆程度逐年攀升,越來越多的開發者開始因其豐富的庫支持,簡潔高效的語法以及強大的運算速度而對其紛紛側...
摘要:輸出結果輸出結果此外還有兩種實現單例的方式,我呢也給大家列出來,方便大家學習和參考方式一方式二單例模式實現方式二。。。 什么是單例模式?通俗點講:單例模式就是在程序執行的過程中,類只有一個實例,這不是說單例模式只能去創建一個實例,而是你創建的所有實例(也就是對象)都指的是同一個實例。如何做到這一點呢?我們的__new__特殊方法就派上用場了,可能大家對這個方法熟悉又陌生,那么接下來通過...
閱讀 3043·2021-11-25 09:43
閱讀 1626·2021-11-24 11:15
閱讀 2358·2021-11-22 15:25
閱讀 3500·2021-11-11 16:55
閱讀 3240·2021-11-04 16:10
閱讀 2773·2021-09-14 18:02
閱讀 1685·2021-09-10 10:50
閱讀 1070·2019-08-29 15:39