• <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)

            我參與的團隊

            搜索

            •  

            積分與排名

            • 積分 - 328479
            • 排名 - 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服務器發送指令??蛇x參數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服務器?,F在幾乎所有的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)  編輯 收藏 引用
            久久99精品久久久久久噜噜| 久久受www免费人成_看片中文| 亚洲人成精品久久久久| 一本色道久久HEZYO无码| 久久成人国产精品| 国产午夜电影久久| 久久久这里有精品| 99久久人妻无码精品系列蜜桃| 四虎国产精品免费久久5151| 一本一本久久a久久精品综合麻豆| 无码人妻久久一区二区三区免费丨 | 亚洲精品国精品久久99热| 亚洲va久久久噜噜噜久久狠狠| 国产日韩欧美久久| 91精品国产综合久久久久久| 尹人香蕉久久99天天拍| 国产精品一区二区久久精品无码| 97久久国产综合精品女不卡| 久久人妻少妇嫩草AV蜜桃| 国产精品久久国产精品99盘| 国产激情久久久久久熟女老人| 久久男人AV资源网站| 亚洲国产成人久久综合一| 激情伊人五月天久久综合| 欧洲成人午夜精品无码区久久 | 国内精品久久久久久久久电影网| 亚洲色婷婷综合久久| 国产精品久久久久免费a∨| 国产精品伊人久久伊人电影 | 久久精品aⅴ无码中文字字幕不卡| 国产精品99久久精品爆乳| 国内精品伊人久久久久| 精品久久久久久久无码| 欧美一区二区三区久久综| 亚洲精品乱码久久久久久久久久久久 | 久久一本综合| 久久无码一区二区三区少妇| 久久精品国产亚洲AV不卡| 国产农村妇女毛片精品久久| 久久久久九九精品影院| 久久久久亚洲AV无码去区首|