• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            為生存而奔跑

               :: 首頁 :: 聯系 :: 聚合  :: 管理
              271 Posts :: 0 Stories :: 58 Comments :: 0 Trackbacks

            留言簿(5)

            我參與的團隊

            搜索

            •  

            積分與排名

            • 積分 - 328415
            • 排名 - 74

            最新評論

            閱讀排行榜

            評論排行榜

            在基于互聯網的應用中,程序經常需要自動地發送電子郵件。如:一個網站的注冊系統會在用戶注冊時發送一封郵件來確認注冊;當用戶忘記登陸密碼的時 候,通過郵件來取回密碼。smtplib模塊是python中smtp(簡單郵件傳輸協議)的客戶端實現。我們可以使用smtplib模塊,輕松的發送電 子郵件。下面的例子用了不到十行代碼來發送電子郵件:
            1. #coding=gbk  
            2.   
            3. import smtplib   
            4.   
            5. smtp = smtplib.SMTP()   
            6. smtp.connect("smtp.yeah.net""25")   
            7. smtp.login('用戶名''密碼')   
            8. smtp.sendmail('from@yeah.net''to@21cn.com''From: from@yeah.net\r\nTo: to@21cn.com\r\nSubject: this is a email from python demo\r\n\r\nJust for test~_~')   
            9. smtp.quit()  

              這個例子夠簡單吧^_^!下面詳細介紹stmplib模塊中的類和方法。

            smtplib.SMTP([host[, port[, local_hostname[, timeout]]]])

              SMTP類構造函數,表示與SMTP服務器之間的連接,通過這個連接我們可以向smtp服務器發送指令,執行相關操作(如:登陸、發送郵件)。 該類提供了許多方法,將在下面介紹。它的所有參數都是可選的,其中host參數表示smtp服務器主機名,上面例子中的smtp主機 為"smtp.yeah.net";port表示smtp服務的端口,默認是25;如果在創建SMTP對象的時候提供了這兩個參數,在初始化的時候會自動 調用connect方法去連接服務器。
              smtplib模塊還提供了SMTP_SSL類和LMTP類,對它們的操作與SMTP基本一致。
            smtplib.SMTP提供的方法:

            SMTP.set_debuglevel(level)

              設置是否為調試模式。默認為False,即非調試模式,表示不輸出任何調試信息。

            SMTP.connect([host[, port]])

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

            SMTP.docmd(cmd[, argstring])

              向smtp服務器發送指令。可選參數argstring表示指令的參數。下面的例子完全通過調用docmd方法向服務器發送指令來實現郵件的發 送(在smtp.yeah.net郵件服務器上試驗通過。其他郵件服務器沒有試過):

            1. import smtplib, base64, time  
            2. userName = base64.encodestring('from').strip()  
            3. password = base64.encodestring('password').strip()  
            4. smtp = smtplib.SMTP()  
            5. smtp.connect("smtp.yeah.net:25")  
            6. print smtp.docmd('helo''from')  
            7. print smtp.docmd('auth login')  
            8. print smtp.docmd(userName)  
            9. print smtp.docmd(password)  
            10. print smtp.docmd('mail from:''<from@yeah.net>')  
            11. print smtp.docmd('rcpt to:''<from@yeah.net>')  
            12. #data 指令表示郵件內容  
            13. print smtp.docmd('data')  
            14. print smtp.docmd('''''from: from@yeah.net 
            15. to: from@yeah.net 
            16. subject: subject 
            17. email body 
            18. . 
            19. ''')  
            20. smtp.quit()  

            SMTP.helo([hostname])

              使用"helo"指令向服務器確認身份。相當于告訴smtp服務器“我是誰”。

            SMTP.has_extn(name)

              判斷指定名稱在服務器郵件列表中是否存在。出于安全考慮,smtp服務器往往屏蔽了該指令。

            SMTP.verify(address)

              判斷指定郵件地址是否在服務器中存在。出于安全考慮,smtp服務器往往屏蔽了該指令。

            SMTP.login(user, password)

              登陸到smtp服務器。現在幾乎所有的smtp服務器,都必須在驗證用戶信息合法之后才允許發送郵件。

            SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

              發送郵件。這里要注意一下第三個參數,msg是字符串,表示郵件。我們知道郵件一般由標題,發信人,收件人,郵件內容,附件等構成,發送郵件的 時候,要注意msg的格式。這個格式就是smtp協議中定義的格式。在上面的例子中,msg的值為:

            1. '''''From: from@yeah.net 
            2. To: to@21cn.com 
            3. Subject: test 
            4.  
            5. just for test'''  

              這個字符串的的意思表示郵件發件人為"from@yeah.net",收件人為" to@21cn.com",郵件標題為"test",郵件內容為"just for test"。細心的你可能會疑問:如果要發送的郵件內容很復雜,包含圖片、視頻、附件等內容,按照MIME的格式來拼接字符串,將是一件非常麻煩的事。不 用擔心,python已經考慮到了這點,它為我們提供了email模塊,使用該模塊可以輕松的發送帶圖片、視頻、附件等復雜內容的郵件。在介紹完 smtplib模塊之后,我會簡單介紹email模塊的基本使用。

            SMTP.quit()

              斷開與smtp服務器的連接,相當于發送"quit"指令。

            email及其相關子模塊

              emial模塊用來處理郵件消息,包括MIME和其他基于RFC 2822 的消息文檔。使 用這些模塊來定義郵件的內容,是非常簡單的。下面是一些常用的類:

            class email.mime.multipart. MIMEMultipart: 多個MIME對象的集合。

            class email.mime.audio. MIMEAudio: MIME音頻對象。

            class email.mime.image. MIMEImage: MIME二進制文件對象。

            class email.mime.text. MIMEText: MIME文本對象。

              看上面的解釋可能會覺得云里霧里,其實我對smtp, MIME的理解也很膚淺。但在大多數時候,我們只要會用就可以了。下面是一個簡單的例子來演示如何使用這些類來發送帶附件的郵件:

            1. #coding=gbk  
            2. import smtplib, mimetypes  
            3. from email.mime.text import MIMEText  
            4. from email.mime.multipart import MIMEMultipart  
            5. from email.mime.image import MIMEImage  
            6.   
            7. msg = MIMEMultipart()  
            8. msg['From'] = "from@yeah.net"  
            9. msg['To'] = 'to@21cn.com'  
            10. msg['Subject'] = 'email for tesing'  
            11.   
            12. # 添加郵件內容  
            13. txt = MIMEText("這是郵件內容~~")  
            14. msg.attach(txt)  
            15.   
            16. #添加二進制附件  
            17. fileName = r'e:\PyQt4.rar'  
            18. ctype, encoding = mimetypes.guess_type(fileName)  
            19. if ctype is None or encoding is not None:  
            20.     ctype = 'application/octet-stream'  
            21. maintype, subtype = ctype.split('/'1)  
            22. att1 = MIMEImage((lambda f: (f.read(), f.close()))(open(fileName, 'rb'))[0], _subtype = subtype)  
            23. att1.add_header('Content-Disposition''attachment', filename = fileName)  
            24. msg.attach(att1)  
            25.   
            26. #發送郵件  
            27. smtp = smtplib.SMTP()  
            28. smtp.connect('smtp.yeah.net:25')  
            29. smtp.login('from''密碼')  
            30. smtp.sendmail('from@yeah.net''to@21cn.com', msg.as_string())  
            31. smtp.quit()  
            32. print '郵件發送成功'  

              是不是很簡單。簡單就是美,用最少的代碼把問題解決,這就是Python。更多關于smtplib的信息,請參考Python手冊 smtplib模塊。

            posted on 2010-05-10 22:20 baby-fly 閱讀(974) 評論(0)  編輯 收藏 引用
            一级A毛片免费观看久久精品| 99久久99久久精品国产| 久久久精品久久久久影院| 亚洲精品无码久久久| 亚洲精品乱码久久久久久| 69久久夜色精品国产69| 久久综合色区| .精品久久久麻豆国产精品 | 国产精品久久久久影院色| 国产精品综合久久第一页| 亚洲精品白浆高清久久久久久| 热re99久久精品国产99热| 久久天天躁夜夜躁狠狠躁2022 | 国内精品久久久久久麻豆| 久久亚洲AV无码精品色午夜| 91超碰碰碰碰久久久久久综合| 一日本道伊人久久综合影| 久久久久中文字幕| 中文字幕久久精品无码| 青青久久精品国产免费看| 7777久久亚洲中文字幕| 日韩精品久久无码中文字幕| 久久久WWW成人| 91精品国产高清久久久久久91 | av无码久久久久久不卡网站| 久久精品无码一区二区app| 久久久久中文字幕| 99久久精品久久久久久清纯| 99精品久久精品| 999久久久无码国产精品| 东京热TOKYO综合久久精品| 99精品国产综合久久久久五月天| 久久人搡人人玩人妻精品首页| 久久婷婷国产麻豆91天堂| 精品999久久久久久中文字幕| 久久综合香蕉国产蜜臀AV| 久久久一本精品99久久精品88| 久久精品免费大片国产大片| 精品久久久久一区二区三区| 久久久久国产日韩精品网站| 欧美伊人久久大香线蕉综合69|