国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python模塊smtplib學習

2020-02-23 00:11:18
字體:
來源:轉載
供稿:網友

python的smtplib提供了一種很方便的途徑發送電子郵件。它對smtp協議進行了簡單的封裝。

smtp協議的基本命令包括:
    HELO 向服務器標識用戶身份
    MAIL 初始化郵件傳輸 mail from:
    RCPT 標識單個的郵件接收人;常在MAIL命令后面,可有多個rcpt to:
    DATA 在單個或多個RCPT命令后,表示所有的郵件接收人已標識,并初始化數據傳輸,以.結束
    VRFY 用于驗證指定的用戶/郵箱是否存在;由于安全方面的原因,服務器常禁止此命令
    EXPN 驗證給定的郵箱列表是否存在,擴充郵箱列表,也常被禁用
    HELP 查詢服務器支持什么命令
    NOOP 無操作,服務器應響應OK
    QUIT 結束會話
    RSET 重置會話,當前傳輸被取消
    MAIL FROM 指定發送者地址
    RCPT TO 指明的接收者地址

    一般smtp會話有兩種方式,一種是郵件直接投遞,就是說,比如你要發郵件給zzz@163.com,那就直接連接163.com的郵件服務器,把信投給zzz@163.com; 另一種是驗證過后的發信,它的過程是,比如你要發郵件給zzz@163.com,你不是直接投到163.com,而是通過自己在sina.com的另一個郵箱來發。這樣就要先連接sina.com的smtp服務器,然后認證,之后在把要發到163.com的信件投到sina.com上,sina.com會幫你把信投遞到163.com。

    第一種方式的命令流程基本是這樣:

      1. helo
      2. mail from
      3. rcpt to
      4. data
      5. quit

    但是第一種發送方式一般有限制的,就是rcpt to指定的這個郵件接收者必須在這個服務器上存在,否則是不會接收的。 先看看代碼:

 #-*- encoding: gb2312 -*-import os, sys, stringimport smtplib# 郵件服務器地址mailserver = "smtp.163.com"# smtp會話過程中的mail from地址from_addr = "asfgysg@zxsdf.com"# smtp會話過程中的rcpt to地址to_addr = "zhaoweikid@163.com"# 信件內容msg = "test mail"svr = smtplib.SMTP(mailserver)# 設置為調試模式,就是在會話過程中會有輸出信息svr.set_debuglevel(1)# helo命令,docmd方法包括了獲取對方服務器返回信息svr.docmd("HELO server")# mail from, 發送郵件發送者svr.docmd("MAIL FROM: <%s>" % from_addr)# rcpt to, 郵件接收者svr.docmd("RCPT TO: <%s>" % to_addr)# data命令,開始發送數據svr.docmd("DATA")# 發送正文數據svr.send(msg)# 比如以 . 作為正文發送結束的標記,用send發送的,所以要用getreply獲取返回信息svr.send(" . ")svr.getreply()# 發送結束,退出svr.quit()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尚义县| 辛集市| 昌黎县| 仁化县| 湾仔区| 金沙县| 霸州市| 蒙山县| 仙居县| 安义县| 揭西县| 龙山县| 五常市| 常德市| 长治市| 五原县| 莫力| 东莞市| 奉新县| 湖北省| 滕州市| 沽源县| 陆丰市| 赞皇县| 宝清县| 东乡族自治县| 临沧市| 定远县| 法库县| 芮城县| 莱州市| 南通市| 安宁市| 伊川县| 大新县| 清水县| 泗阳县| 巴林右旗| 会泽县| 拉萨市| 泰来县|