<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

    # ?-*-?coding:?utf-8?-*-
    #
    =================================================
    #
    #
    ???描述:????KEmail?發(fā)送郵件類(lèi)
    #
    #
    ???作者:????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ā)送地址?還有抄送之類(lèi)?和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']???? = 用戶(hù)名
    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ā)信信息是可以亂寫(xiě)的。而真正和stmp有密切關(guān)系的是 :
    ?smtp.sendmail(paramMap["from"], FinallyAdd, msgRoot.as_string())
    也就是上面的什么發(fā)信人地址 ,收信人地址 ,抄送人地址都可以是假的。。。

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

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

    posted on 2008-06-05 13:25 -274°C 閱讀(5709) 評(píng)論(3)  編輯  收藏 所屬分類(lèi): 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ā)郵件的框架
    但是我照著寫(xiě)一個(gè)的時(shí)候我老是發(fā)送不出去 能幫下忙么
    我的msn zhaimail@qq.com
      回復(fù)  更多評(píng)論
      
    # re: python發(fā)郵件的代碼[未登錄](méi)
    2012-07-02 01:03 | a

    常用鏈接

    留言簿(21)

    隨筆分類(lèi)(265)

    隨筆檔案(242)

    相冊(cè)

    JAVA網(wǎng)站

    關(guān)注的Blog

    搜索

    •  

    積分與排名

    • 積分 - 914346
    • 排名 - 40

    最新評(píng)論

    主站蜘蛛池模板: 亚洲午夜久久久久久久久电影网| 黄色短视频免费看| 亚洲综合久久综合激情久久| 亚洲成AⅤ人影院在线观看| 在线观看免费人成视频| 国产三级在线免费| 国产99久久久久久免费看| 亚洲精品久久无码| 亚洲va乱码一区二区三区| 亚洲第一中文字幕| 中文字幕亚洲综合久久菠萝蜜| 精品剧情v国产在免费线观看| 中文字幕亚洲免费无线观看日本 | 免费视频成人国产精品网站| 亚洲人配人种jizz| 亚洲国产精品成人综合久久久| 亚洲精品无码AV人在线播放| 亚洲精品无码AV中文字幕电影网站| 免费高清在线影片一区| 免费无码又黄又爽又刺激| 99re这里有免费视频精品| 今天免费中文字幕视频| 99久久婷婷免费国产综合精品| h视频免费高清在线观看| 免费一级全黄少妇性色生活片| 爱情岛亚洲论坛在线观看| 亚洲国产精品自在自线观看| 亚洲色大成网站www久久九| 亚洲无mate20pro麻豆| 亚洲香蕉久久一区二区三区四区| 亚洲女人影院想要爱| 亚洲av日韩av综合| 亚洲午夜无码毛片av久久京东热 | 女人张开腿给人桶免费视频 | 亚洲精品福利视频| 久久精品亚洲综合| 久久久久久久亚洲Av无码| 97亚洲熟妇自偷自拍另类图片| 亚洲网红精品大秀在线观看| 亚洲成aⅴ人片在线影院八| 亚洲三级在线免费观看|