摘要:本米撲博客先介紹幾個最簡單的發(fā)送郵件方式記錄下,像郵件,附件等也是支持的,需要時查文檔即可。特別注意命令發(fā)送郵件,默認(rèn)用端口號,由于阿里云騰訊云等封禁了端口號,因此本示例需在開通端口機器上測試執(zhí)行命令收件結(jié)果
Python發(fā)送email的三種方式,分別為使用登錄郵件服務(wù)器、使用smtp服務(wù)、調(diào)用sendmail命令來發(fā)送三種方法
本文原文自米撲博客:Python 發(fā)送 email 的三種方式
Python發(fā)送email比較簡單,可以通過登錄郵件服務(wù)來發(fā)送,linux下也可以使用調(diào)用sendmail命令來發(fā)送,還可以使用本地或者是遠程的smtp服務(wù)來發(fā)送郵件,不管是單個,群發(fā),還是抄送都比較容易實現(xiàn)。本米撲博客先介紹幾個最簡單的發(fā)送郵件方式記錄下,像html郵件,附件等也是支持的,需要時查文檔即可。
一、登錄郵件服務(wù)器
通過smtp登錄第三方smtp郵箱發(fā)送郵件,支持 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"
執(zhí)行命令:
$ python python_email_1.py send success by port 25 send success by port 465
發(fā)送結(jié)果,會收到兩封郵件,截圖其中一份郵件如下圖:
二、使用smtp服務(wù)
測試失敗,略過或留言指正
#!/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"
三、調(diào)用sendmail命令
調(diào)用本機linux自身sendmail服務(wù)發(fā)送郵件,不需要啟動sendmail后臺進程,不需要發(fā)送者登錄,郵件發(fā)送者可以是任意名字,沒有限制。
特別注意:sendmail 命令發(fā)送郵件,默認(rèn)用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)
執(zhí)行命令:
python python_email_3.py
收件結(jié)果:
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44825.html
摘要:可以簡單方便的通過配置,并可以向和中發(fā)消息來驗證自己的理解。然后通過發(fā)送消息,可以隨便填寫,因為是類型的,不起作用。這種情況下,隊列之間是互斥關(guān)系,一個消息最多只能進入一個隊列。 現(xiàn)在很多開源軟件都提供了對應(yīng)的web管理界面,rabbitmq也不例外,rabbitmq提供了一個web插件。當(dāng)rabbit-server啟動之后,即在瀏覽器中通過http://localhost:15672...
摘要:的明確目標(biāo)是成為標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議棧的一部分,之后進入內(nèi)核。實現(xiàn)端測試消息已發(fā)送端正在轉(zhuǎn)發(fā)端輸出結(jié)果已發(fā)送已發(fā)送已發(fā)送正在轉(zhuǎn)發(fā)正在轉(zhuǎn)發(fā)正在轉(zhuǎn)發(fā)測試消息測試消息測試消息 簡介 ZMQ (以下 ZeroMQ 簡稱 ZMQ)是一個簡單好用的傳輸層,像框架一樣的一個 socket library,他使得 Socket 編程更加簡單、簡潔和性能更高。是一個消息處理隊列庫,可在多個線程、內(nèi)核和主機盒之間...
摘要:分塊傳輸編碼分塊傳輸編碼是超文本傳輸協(xié)議中的一種數(shù)據(jù)傳輸機制,允許由網(wǎng)頁服務(wù)器發(fā)送給客戶端應(yīng)用通常是網(wǎng)頁瀏覽器的數(shù)據(jù)可以分成多個部分。分塊傳輸編碼只在協(xié)議版本中提供。 實習(xí)中的一個主要工作就是分析 HTTP 中的協(xié)議,自己也用 Python 寫過正則表達式對 HTTP 請求和響應(yīng)的內(nèi)容進行匹配,然后把關(guān)鍵字段抽離出來放到一個字典中以備使用(可以稍微改造一下就是一個爬蟲工具)。 HTTP...
摘要:的簡介隨著近年來的火爆程度逐年攀升越來越多的開發(fā)者開始因其豐富的庫支持簡潔高效的語法以及強大的運算速度而對其紛紛側(cè)目也正因此及基于它而生的各類框架如等普遍應(yīng)用于當(dāng)下各類場景下作為時代的弄潮兒大有獨領(lǐng)風(fēng)騷之勢也正是因此毫無疑問是當(dāng)前最好的編程 PyCharm的簡介 隨著近年來Python的火爆程度逐年攀升,越來越多的開發(fā)者開始因其豐富的庫支持,簡潔高效的語法以及強大的運算速度而對其紛紛側(cè)...
摘要:輸出結(jié)果輸出結(jié)果此外還有兩種實現(xiàn)單例的方式,我呢也給大家列出來,方便大家學(xué)習(xí)和參考方式一方式二單例模式實現(xiàn)方式二。。。 什么是單例模式?通俗點講:單例模式就是在程序執(zhí)行的過程中,類只有一個實例,這不是說單例模式只能去創(chuàng)建一個實例,而是你創(chuàng)建的所有實例(也就是對象)都指的是同一個實例。如何做到這一點呢?我們的__new__特殊方法就派上用場了,可能大家對這個方法熟悉又陌生,那么接下來通過...
閱讀 3052·2021-11-25 09:43
閱讀 1644·2021-11-24 11:15
閱讀 2368·2021-11-22 15:25
閱讀 3512·2021-11-11 16:55
閱讀 3248·2021-11-04 16:10
閱讀 2782·2021-09-14 18:02
閱讀 1693·2021-09-10 10:50
閱讀 1079·2019-08-29 15:39