成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

python發(fā)送郵件

mengera88 / 1090人閱讀

摘要:參數(shù)分別表示主機和端口。注意也可以在參數(shù)中指定端口號如,這樣就沒必要給出參數(shù)。當需要發(fā)送附件的時候使用的就是這個類的一個子類。主要用來發(fā)送圖片普通文本郵件文本對象,其中是郵件內(nèi)容,郵件類型,可以是普通文本郵件,郵件編碼,可以是等等。

python發(fā)送郵件 準備

python中發(fā)送郵件主要用的是smtplib和email兩個模塊,下面主要對這兩個模塊進行講解

在講解之前需要準備至少兩個測試的郵箱,其中要在郵箱的設(shè)置中開啟smtplib協(xié)議才可以進行發(fā)送和接受

smtplib

smtplib.SMTP( [host [, port [, local_hostname[,timeout]]]]) hostSMTP主機的服務器,其中163郵箱的是smtp.163.com,其他的可以在網(wǎng)上找到,port是端口號,這里默認的是25local_hostname是你主機的SMTP,如果SMTP在你的本機上,你只需要指定服務器地址為 localhost 即可。timeout是設(shè)置的連接的限制時間,如果超過這個時間還沒有連接上那么就會出現(xiàn)錯誤

SMTP.set_debuglevel(level):設(shè)置是否為調(diào)試模式。默認為False,即非調(diào)試模式,表示不輸出任何調(diào)試信息。如果設(shè)置為1就表示輸出調(diào)試信息

SMTP.connect([host[, port]]):連接到指定的smtp服務器。參數(shù)分別表示smpt主機和端口。注意: 也可以在host參數(shù)中指定端口號(如:smpt.yeah.net:25),這樣就沒必要給出port參數(shù)。

SMTP.login(user, password) 登錄服務器,這里的user是郵箱的用戶名,但是這里的password并不是你郵箱的密碼,當你開啟SMTP的時候會提示你設(shè)置一個密碼,這里的密碼就是對應的密碼

SMTP.sendmail(from_addr, [to_addrs,], msg[, mail_options, rcpt_options]) 發(fā)送郵件,from_addr是發(fā)送方也就是你的郵箱地址,to_addr是接受方的地址,當然這里的可以填上多個郵箱賬號發(fā)送給多個賬號,如果有多個賬號需要使用列表傳遞參數(shù)

SMTP.quit()斷開連接

email

emial模塊用來處理郵件消息,包括MIME和其他基于RFC 2822 的消息文檔。使用這些模塊來定義郵件的內(nèi)容,是非常簡單的。其包括的類有(更加詳細的介紹可見:http://docs.python.org/librar...):

class email.mime.base.MIMEBase(_maintype, _subtype, **_params):這是MIME的一個基類。一般不需要在使用時創(chuàng)建實例。其中_maintype是內(nèi)容類型,如text或者image。_subtype是內(nèi)容的minor type 類型,如plain或者gif。 **_params是一個字典,直接傳遞給Message.add_header()。

class email.mime.multipart.MIMEMultipart([_subtype[, boundary[, _subparts[, _params]]]]MIMEBase的一個子類,多個MIME對象的集合,_subtype默認值為mixedboundaryMIMEMultipart的邊界,默認邊界是可數(shù)的。當需要發(fā)送附件的時候使用的就是這個類

class email.mime.application.MIMEApplication(_data[, _subtype[, _encoder[, **_params]]])MIMEMultipart的一個子類。

class email.mime.audio. MIMEAudio(_audiodata[, _subtype[, _encoder[, **_params]]])MIME音頻對象

class email.mime.image.MIMEImage(_imagedata[, _subtype[, _encoder[, **_params]]])MIME二進制文件對象。主要用來發(fā)送圖片

普通文本郵件

class email.mime.text.MIMEText(_text[, _subtype[, _charset]])MIME文本對象,其中_text是郵件內(nèi)容,_subtype郵件類型,可以是text/plain(普通文本郵件),html/plain(html郵件), _charset編碼,可以是gb2312等等。

普通文本郵件發(fā)送的實現(xiàn),關(guān)鍵是要將MIMEText_subtype設(shè)置為plain。首先導入smtplibmimetext。創(chuàng)建smtplib.smtp實例,connect郵件smtp服務器,login后發(fā)送,具體代碼如下*

# 一個格式化郵件的函數(shù),可以用來使用
def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((
        Header(name, "utf-8").encode(),
        addr.encode("utf-8") if isinstance(addr, unicode) else addr))

from_addr="××××××××"   #你的郵箱地址
from_password="×××××××"   #你的密碼
# to_email="[email protected]"
to_email="××××××"    #要發(fā)送的郵箱地址

msg=MIMEText("喬裝打扮,不擇手段","plain","utf-8")  #這里text=喬裝打扮,不擇手段

msg["From"] = _format_addr(u"Python愛好者 <%s>" % from_addr)  #格式化發(fā)件人
msg["To"] = _format_addr(u"管理員 <%s>" % to_email)    #格式化收件人
msg["Subject"] = Header(u"來自SMTP的問候……", "utf-8").encode()    #格式化主題

stmp="smtp.163.com"
server=smtplib.SMTP(stmp,port=25,timeout=30) #連接,設(shè)置超時時間30s
server.login(from_addr,from_password)    #登錄
server.set_debuglevel(1)        #輸出所有的信息
server.sendmail(from_addr,to_email,msg.as_string())   #這里的as_string()是將msg轉(zhuǎn)換成字符串類型的,如果你想要發(fā)給多個人,需要講to_email換成一個列表
發(fā)送html郵件

還是用MIMEText來發(fā)送,不過其中的_subType設(shè)置成html即可,詳細代碼如下:

def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((
        Header(name, "utf-8").encode(),
        addr.encode("utf-8") if isinstance(addr, unicode) else addr))

from_addr="××××××××"   #你的郵箱地址
from_password="×××××××"   #你的密碼
# to_email="[email protected]"
to_email="××××××"    #要發(fā)送的郵箱地址
html="""

大家好

""" msg=MIMEText(html,"html","utf-8") #這里text=html,設(shè)置成html格式的 msg["From"] = _format_addr(u"Python愛好者 <%s>" % from_addr) #格式化發(fā)件人 msg["To"] = _format_addr(u"管理員 <%s>" % to_email) #格式化收件人 msg["Subject"] = Header(u"來自SMTP的問候……", "utf-8").encode() #格式化主題 stmp="smtp.163.com" server=smtplib.SMTP(stmp,port=25,timeout=30) #連接,設(shè)置超時時間30s server.login(from_addr,from_password) #登錄 server.set_debuglevel(1) #輸出所有的信息 server.sendmail(from_addr,to_email,msg.as_string()) #這里的as_string()是將msg轉(zhuǎn)換成字符串類型的,如果你想要發(fā)給多個人,需要講to_email換成一個列表
附件的發(fā)送

發(fā)送帶附件的郵件,首先要創(chuàng)建MIMEMultipart()實例,然后構(gòu)造附件,如果有多個附件,可依次構(gòu)造,最后利用smtplib.smtp發(fā)送,具體實力如下:

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((
        Header(name, "utf-8").encode(),
        addr.encode("utf-8") if isinstance(addr, unicode) else addr))

from_addr="××××××××"   #你的郵箱地址
from_password="×××××××"   #你的密碼
# to_email="[email protected]"
to_email="××××××"    #要發(fā)送的郵箱地址


msg=MIMEMultipart()   #創(chuàng)建實例
text=MIMEText("

陳加兵


大家好

","html","utf-8") msg.attach(text) #添加一個正文信息,這里實在正文中顯示的信息 #創(chuàng)建一個文本附件,這里是從指定文本中讀取信息,然后創(chuàng)建一個文本信息 att1=MIMEText(open("/home/chenjiabing/文檔/MeiZi_img/full/file.txt","rb").read(),"plain","utf-8") att1["Content-Type"] = "application/octet-stream" #指定類型 att1["Content-Disposition"] = "attachment; filename="123.txt""#這里的filename可以任意寫,寫什么名字,郵件中顯示什么名字 msg.attach(att1) #向其中添加附件 img_path="/home/chenjiabing/文檔/MeiZi_img/full/file.jpg" #圖片路徑 image=MIMEImage(open(img_path,"rb").read()) #創(chuàng)建一個圖片附件 image.add_header("Content-ID","<0>") #指定圖片的編號,這個會在后面用到 image.add_header("Content-Disposition", "attachment", filename="test.jpg") image.add_header("X-Attachment-Id", "0") msg.attach(image) #添加附件 stmp="smtp.163.com" server=smtplib.SMTP(stmp,port=25,timeout=30) #連接,設(shè)置超時時間30s server.login(from_addr,from_password) #登錄 server.set_debuglevel(1) #輸出所有的信息 server.sendmail(from_addr,to_email,msg.as_string()) #這里的as_string()是將msg轉(zhuǎn)換成字符串類型的,如果你想要發(fā)給多個人,需要講to_email換成一個列表
將圖片嵌入到正文信息中
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((
        Header(name, "utf-8").encode(),
        addr.encode("utf-8") if isinstance(addr, unicode) else addr))

from_addr="××××××××"   #你的郵箱地址
from_password="×××××××"   #你的密碼
# to_email="[email protected]"
to_email="××××××"    #要發(fā)送的郵箱地址


msg=MIMEMultipart()   #創(chuàng)建實例
html="""



下面演示嵌入圖片

""" text=MIMEText("

陳加兵


大家好

","html","utf-8") msg.attach(text) #添加一個正文信息,這里實在正文中顯示的信息 #創(chuàng)建一個文本附件,這里是從指定文本中讀取信息,然后創(chuàng)建一個文本信息 att1=MIMEText(open("/home/chenjiabing/文檔/MeiZi_img/full/file.txt","rb").read(),"plain","utf-8") att1["Content-Type"] = "application/octet-stream" #指定類型 att1["Content-Disposition"] = "attachment; filename="123.txt""#這里的filename可以任意寫,寫什么名字,郵件中顯示什么名字 msg.attach(att1) #向其中添加附件 ## 創(chuàng)建一個圖片附件 img_path="/home/chenjiabing/文檔/MeiZi_img/full/file.jpg" #圖片路徑 image=MIMEImage(open(img_path,"rb").read()) #創(chuàng)建一個圖片附件 image.add_header("Content-ID","<0>") #指定圖片的編號, image.add_header("Content-Disposition", "attachment", filename="test.jpg") image.add_header("X-Attachment-Id", "0") msg.attach(image) #添加附件 #創(chuàng)建第二個圖片附件 img_path_1="/home/chenjiabing/文檔/MeiZi_img/full/test.jpg" #圖片路徑 image1=MIMEImage(open(img_path,"rb").read()) #創(chuàng)建一個圖片附件 image1.add_header("Content-ID","<1>") #指定圖片的編號,這個就是在上面對應的cid:1的那張圖片,因此這里的編號一定要對應 image1.add_header("Content-Disposition", "attachment", filename="img.jpg") image1.add_header("X-Attachment-Id", "0") msg1.attach(image) #添加附件 stmp="smtp.163.com" server=smtplib.SMTP(stmp,port=25,timeout=30) #連接,設(shè)置超時時間30s server.login(from_addr,from_password) #登錄 server.set_debuglevel(1) #輸出所有的信息 server.sendmail(from_addr,to_email,msg.as_string()) #這里的as_string()是將msg轉(zhuǎn)換成字符串類型的,如果你想要發(fā)給多個人,需要講to_email換成一個列表
更多文章請移步本人博客https://chenjiabing666.github.io/

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44365.html

相關(guān)文章

  • 簡單三步,用 Python 發(fā)郵件

    摘要:使用腳本發(fā)送郵件并不復雜。以下為思路導圖模塊與發(fā)送郵件相關(guān)的模塊是關(guān)于簡單郵件傳輸協(xié)議的操作模塊,在發(fā)送郵件的過程中起到服務器之間互相通信的作用。 0. 前言 發(fā)送電子郵件是個很常見的開發(fā)需求。比如你寫了個監(jiān)控天氣的腳本,發(fā)現(xiàn)第二天要下雨,或者網(wǎng)站上關(guān)注的某個商品降價了,就可以發(fā)個郵件到郵箱來提醒自己。 使用 Python 腳本發(fā)送郵件并不復雜。不過由于各家郵件的發(fā)送機制和安全策略不同...

    haobowd 評論0 收藏0
  • 利用Python自動發(fā)送郵件

    摘要:自動發(fā)送郵件我們把報表做出來以后一般都是需要發(fā)給別人查看,對于一些每天需要發(fā)的報表或者是需要一次發(fā)送多份的報表,這個時候可以考慮借助來自動發(fā)送郵件。一份郵件的組成下圖是中發(fā)送一份郵件的界面,主要包含發(fā)件人收件人抄送人主題正文附件這幾部分。 ...

    leo108 評論0 收藏0
  • Python發(fā)送電子郵件

    摘要:是發(fā)送郵件的協(xié)議,內(nèi)置對的支持模塊和模塊可以發(fā)送純文本郵件郵件以及帶附件的郵件簡單郵件傳輸協(xié)議,是從源地址到目的地址傳送郵件的規(guī)則,由該協(xié)議控制信件的中轉(zhuǎn)方式的提供了一種很方便的途徑傳遞電子郵件,對進行了簡單的封裝發(fā)送純文本郵件導入模塊 SMTP是發(fā)送郵件的協(xié)議,Python內(nèi)置對SMTP的支持(smtplib模塊和email模塊),可以發(fā)送純文本郵件、HTML郵件以及帶附件的郵件 S...

    李世贊 評論0 收藏0
  • Python 發(fā)送 email 的三種方式

    摘要:本米撲博客先介紹幾個最簡單的發(fā)送郵件方式記錄下,像郵件,附件等也是支持的,需要時查文檔即可。特別注意命令發(fā)送郵件,默認用端口號,由于阿里云騰訊云等封禁了端口號,因此本示例需在開通端口機器上測試執(zhí)行命令收件結(jié)果 Python發(fā)送email的三種方式,分別為使用登錄郵件服務器、使用smtp服務、調(diào)用sendmail命令來發(fā)送三種方法 本文原文自米撲博客:Python 發(fā)送 email 的三...

    kun_jian 評論0 收藏0
  • Python 發(fā)送郵件

    摘要:程序人員對于郵件自動化的日常需求還是很高的。更是自帶一套模塊實現(xiàn)郵件發(fā)送。正是為了實現(xiàn)這個而生的,一句話就可以完成所有的登錄發(fā)送文字附件等功能。參考一句話發(fā)送郵件正常一點的發(fā)送郵件 程序人員對于郵件自動化的日常需求還是很高的。但是入過了Linux的命令行郵件客戶端如Sendmail, Mutt, Alpine等坑之后,發(fā)現(xiàn)現(xiàn)代其實很少人真的在用它們實現(xiàn)郵件自動化,根據(jù)搜索引擎里相關(guān)文章...

    tuomao 評論0 收藏0
  • python發(fā)送郵件

    摘要:郵箱傳輸協(xié)議簡單郵件傳輸協(xié)議由源地址到目的地址的傳輸規(guī)則郵箱服務器默認端口生成第三方登錄郵箱的密鑰,這樣從第三方登錄郵箱,不能輸入密碼,只需要輸入第三方密鑰就行需要使用到的庫主要是負責發(fā)送郵件,連接郵箱服務器,登錄郵箱構(gòu)造郵件,郵件顯示的內(nèi) QQ郵箱傳輸協(xié)議 SMTP:簡單郵件傳輸協(xié)議(由源地址到目的地址的傳輸規(guī)則) smtp.qq.com :QQ郵箱服務器 默認端口:25 生成第三...

    wyk1184 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<