• python操作http,smtp协议。


    需要帮人写一段代码,代码很简单,就是读写文件,加上操作http和smtp,自然选择了库一大堆的python实现。

    代码如下。感谢google。

    gmail的貌似要调用starttls函数才能成功。

    import os
    import sys
    import urllib
    import httplib
    import string
    import smtplib
    import email
    import mimetypes
    from email.MIMEMultipart import MIMEMultipart
    from email.MIMEText import MIMEText
    from email.utils import COMMASPACE,formatdate
    
    import smtplib
    
    def getRemoteIp(httpurl):
        page = urllib.urlopen(httpurl)
        if 200 != page.getcode():
            return None
        strContent = page.read()
        i = string.find(strContent,"[")
        if i == -1:
                return None
        j = string.find(strContent,"]",i)
        if j == -1:
                return None
        return strContent[i+1:j]
    
    def readFile(filename):
        file = open(filename,'rb')
        if file == None:
            return ""
        strIp = file.readline()
        file.close()
        return strIp
    
    def writeFile(filename,str):
        file = open(filename,'w')
        if file == None:
                return ""
        file.write(str)
        file.close()
    
    def sendMail(authInfo, fromAdd, toAdd, subject, plainText):
        strFrom = fromAdd
        strTo = toAdd
        server = authInfo.get('server')
        user = authInfo.get('user')
        passwd = authInfo.get('password')
        port = authInfo.get('port')
    
        if not (server and user and passwd) :
            return
    
        msgRoot = MIMEMultipart('related')
        msgRoot['Subject'] = subject
        msgRoot['From'] = strFrom
        msgRoot['To'] = strTo
        msgRoot['Date'] = formatdate(localtime=True)
    
        msgAlternative = MIMEMultipart('alternative')
        msgRoot.attach(msgAlternative)
    
        msgText = MIMEText(plainText,'plain','utf-8')
        msgAlternative.attach(msgText)
    
        smtp = smtplib.SMTP(server,port)
        smtp.ehlo()
        smtp.starttls()
        smtp.login(user,passwd)
        smtp.sendmail(strFrom, strTo, msgRoot.as_string())
        smtp.quit()
        return
    
    
    if __name__ == "__main__":
        httpurl = "http://city.ip138.com/ip2city.asp"
        strIP1 = getRemoteIp(httpurl)
        if strIP1 == None:
            print strIP1
            sys.exit()
        strIP2 = readFile("tmpip.dat")
        if strIP2 == None:
                sys.exit()
        writeFile("tmpip.dat",strIP1);
        strIP1 = "234.234.234.234"
        fromaddr = "xloogson@gmail.com"
        toaddr = "xloogson@qq.com"
        authInfo={}
        authInfo['server'] = "smtp.gmail.com"
        authInfo['user'] = "xloogson@gmail.com"
        authInfo['password'] = ""
        authInfo['port'] = 587
        if  strIP2 != "" and strIP1 != "" and strIP1 != strIP2 :
            subject = "check ip"
        	plainText = "ip change!!!" + "before=" + strIP1 + "now:" + strIP2;
        	sendMail(authInfo,fromaddr,toaddr,subject,plainText);
    

      

    参考链接:

      http://blog.csdn.net/JGood/article/details/4317416 http模块

      http://blog.donews.com/maverick/archive/2007/04/22/1159142.aspx smtp模块

      http://fayaa.com/code/view/11311/full/ smtp模块。

  • 相关阅读:
    JDK7与JDK8环境共存与切换:先安装jdk7,配置好环境变量后再安装jdk8
    Maven环境配置
    JDK的安装
    Access2010打开系统表MSysObjects的控制权限
    Spring aop 简单示例
    redis集群搭建
    springmvc中拦截器与springmvc全局异常处理器的问题
    自定义springmvc统一异常处理器(实现HandlerExceptionResolver接口)不起作用的一种情况
    一句SQL实现MYSQL的递归查询
    2002年的决战坦克,重新玩一遍。qq群号:1035127306
  • 原文地址:https://www.cnblogs.com/xloogson/p/2478673.html
Copyright © 2020-2023  润新知