寫了個(gè)發(fā)郵件的python代碼:

          # ?-*-?coding:?utf-8?-*-
          #
          =================================================
          #
          #
          ???描述:????KEmail?發(fā)送郵件類
          #
          #
          ???作者:????hechangmin
          #
          #
          ???時(shí)間:????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
          ????
          # 測(cè)試發(fā)現(xiàn)?郵件其頭部信息?比如標(biāo)題?發(fā)送地址?還有抄送之類?和stmp發(fā)送的具體信息脫離。
          ???? 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?發(fā)送郵件.?發(fā)現(xiàn)群發(fā)地址用‘,’相隔的字符串,只有一個(gè)成功,所以改用列表。
          ????smtp.sendmail(paramMap[ " from " ],?FinallyAdd,?msgRoot.as_string())
          ????smtp.quit()
          ????
          return ?True

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

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

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

          當(dāng)然愚人節(jié)用用還是比較好玩。對(duì)高手失效。因?yàn)楦呤钟X得奇怪的時(shí)候,會(huì)去看看郵件的原始屬性。。。

          哈哈,剛剛我就收到了我夢(mèng)中情人給我的情書。。。太yy了。改天通知所有同事到樓下集合。我想應(yīng)該有不少人會(huì)上當(dāng)。

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


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

          常用鏈接

          留言簿(21)

          隨筆分類(265)

          隨筆檔案(242)

          相冊(cè)

          JAVA網(wǎng)站

          關(guān)注的Blog

          搜索

          •  

          積分與排名

          • 積分 - 914066
          • 排名 - 40

          最新評(píng)論

          主站蜘蛛池模板: 肥城市| 海原县| 蒲城县| 图片| 丹寨县| 从江县| 阳谷县| 佳木斯市| 五河县| 宝兴县| 威宁| 准格尔旗| 黔江区| 克拉玛依市| 琼海市| 柯坪县| 威宁| 都安| 融水| 股票| 武山县| 沁水县| 伊吾县| 米林县| 东方市| 汝阳县| 乌拉特后旗| 建宁县| 嘉定区| 盐池县| 扶绥县| 泊头市| 炎陵县| 万荣县| 台山市| 兴安盟| 余江县| 永寿县| 大名县| 上栗县| 兰考县|