寫了個發郵件的python代碼:

          # ?-*-?coding:?utf-8?-*-
          #
          =================================================
          #
          #
          ???描述:????KEmail?發送郵件類
          #
          #
          ???作者:????hechangmin
          #
          #
          ???時間:????2008-05-30?
          #
          #
          =================================================

          import ?email
          import ?mimetypes
          from ?email.MIMEMultipart? import ?MIMEMultipart
          from ?email.MIMEText? import ?MIMEText
          from ?email.MIMEImage? import ?MIMEImage
          import ?smtplib
          from ?logger? import ?klog

          def ?sendmail(paramMap):
          ????
          ????smtp?
          = ?smtplib.SMTP()
          ????msgRoot?
          = ?MIMEMultipart( ' related ' )
          ????msgAlternative?
          = ?MIMEMultipart( ' alternative ' )
          ????
          if ?paramMap.has_key( " server " )? and ?paramMap.has_key( " user " )? and ?paramMap.has_key( " password " ):
          ????????
          try :
          ????????????smtp.set_debuglevel(
          1 )
          ????????????smtp.connect(paramMap[
          " server " ])
          ????????????smtp.login(paramMap[
          " user " ],?paramMap[ " password " ])
          ????????
          except :
          ????????????klog.error(
          " smtp?login?exception! " )
          ????????????
          return ?False
          ????
          else :
          ????????klog.error(
          " Parameters?incomplete! " )
          ????????
          return ?False
          ????
          # 測試發現?郵件其頭部信息?比如標題?發送地址?還有抄送之類?和stmp發送的具體信息脫離。
          ???? if ?(paramMap.has_key( " subject " )? and ?paramMap.has_key( " from " )? and ?paramMap.has_key( " to " ))? == ?False:
          ????????klog.error(
          " Parameters?incomplete! " )
          ????????
          return ?False
          ????
          ????msgRoot[
          ' subject ' ]? = ?paramMap[ " subject " ]
          ????msgRoot[
          ' from ' ]? = ?paramMap[ " from " ]
          ????
          if ?paramMap.has_key( " cc " ):
          ????????msgRoot[
          ' cc ' ]? = ?paramMap[ " cc " ]
          ????
          ????msgRoot[
          ' to ' ]? = ?paramMap[ " to " ]
          ????msgRoot.preamble?
          = ? ' This?is?a?multi-part?message?in?MIME?format. '
          ????msgRoot.attach(msgAlternative)
          ????TempAddTo?
          = ?paramMap[ " to " ]
          ????
          ????
          if ?paramMap.has_key( " text " ):
          ????????msgText?
          = ?MIMEText(paramMap[ " text " ]?,? ' plain ' ,? ' utf-8 ' )
          ????????msgAlternative.attach(msgText)
          ????
          if ?paramMap.has_key( " html " ):
          ????????msgText?
          = ?MIMEText(paramMap[ " html " ],? ' html ' ,? ' utf-8 ' )
          ????????msgAlternative.attach(msgText)
          ????
          if ?paramMap.has_key( " image " ):
          ????????fp?
          = ?open(paramMap[ " image " ],? ' rb ' )
          ????????msgImage?
          = ?MIMEImage(fp.read())
          ????????fp.close()
          ????????msgImage.add_header(
          ' Content-ID ' ,? ' <image1> ' )
          ????????msgRoot.attach(msgImage)
          ????
          if ?paramMap.has_key( " cc " ):
          ????????TempAddTo?
          = ?paramMap[ " to " ]? + ? " , " ? + ?paramMap[ " cc " ]
          ????
          ???????
          ????
          if ?TempAddTo.find( " , " )? != ? - 1 :
          ????????FinallyAdd?
          = ?TempAddTo.split( " , " )
          ????
          else :
          ????????FinallyAdd?
          = ?TempAddTo
          ????????
          ????
          # stmp?發送郵件.?發現群發地址用‘,’相隔的字符串,只有一個成功,所以改用列表。
          ????smtp.sendmail(paramMap[ " from " ],?FinallyAdd,?msgRoot.as_string())
          ????smtp.quit()
          ????
          return ?True

          # ===Test?=========================================
          if ? __name__ ? == ? ' __main__ ' ?:
          ????
          ????
          from ?mailconf? import ?mailmap
          ????sendmail(mailmap)
          ????

          其中日志記錄器,當然你可以不用。
          而mailmap的內容:
          mailmap = { }
          mailmap['server']?? = 郵件服務器
          mailmap['user']???? = 用戶名
          mailmap['password'] = 密碼
          mailmap["from"]???? =? 發郵件人地址
          #mailmap["cc"]?????? = 抄送地址,以逗號分隔
          mailmap["to"]?????? = 接收人地址
          mailmap["subject"]? = 標題
          mailmap["text"]???? = 信息內容
          mailmap["html"]???? = '<font color = red ><b>信息內容!??</b></font>'

          其中比較有意思的是,發信信息是可以亂寫的。而真正和stmp有密切關系的是 :
          ?smtp.sendmail(paramMap["from"], FinallyAdd, msgRoot.as_string())
          也就是上面的什么發信人地址 ,收信人地址 ,抄送人地址都可以是假的。。。

          當然愚人節用用還是比較好玩。對高手失效。因為高手覺得奇怪的時候,會去看看郵件的原始屬性。。。

          哈哈,剛剛我就收到了我夢中情人給我的情書。。。太yy了。改天通知所有同事到樓下集合。我想應該有不少人會上當。

          posted on 2008-06-05 13:25 -274°C 閱讀(5715) 評論(3)  編輯  收藏 所屬分類: python


          FeedBack:
          # re: python發郵件的代碼
          2008-06-05 15:40 | 流浪
          不錯  回復  更多評論
            
          # re: python發郵件的代碼
          2008-09-19 11:11 | zhaiyujia
          需要login發件人的郵箱么 公司以前就有一個python發郵件的框架
          但是我照著寫一個的時候我老是發送不出去 能幫下忙么
          我的msn zhaimail@qq.com
            回復  更多評論
            
          # re: python發郵件的代碼[未登錄]
          2012-07-02 01:03 | a
          啊  回復  更多評論
            

          常用鏈接

          留言簿(21)

          隨筆分類(265)

          隨筆檔案(242)

          相冊

          JAVA網站

          關注的Blog

          搜索

          •  

          積分與排名

          • 積分 - 916110
          • 排名 - 40

          最新評論

          主站蜘蛛池模板: 永寿县| 宜兰县| 临桂县| 当涂县| 凉城县| 棋牌| 措美县| 南陵县| 沈丘县| 四会市| 巴林左旗| 开鲁县| 永吉县| 沅江市| 古丈县| 石门县| 汝南县| 太仓市| 湖北省| 凌源市| 山东| 夹江县| 仙居县| 嘉黎县| 博罗县| 左权县| 邵东县| 乐清市| 大竹县| 通辽市| 德兴市| 太白县| 齐河县| 吴忠市| 乌审旗| 浙江省| 徐州市| 乌苏市| 本溪| 河间市| 密山市|