zoukankan      html  css  js  c++  java
  • 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模块。

  • 相关阅读:
    Dubbo-admin管理平台搭建
    Zabbix监控Zookeeper健康状况
    Redis-stat 的安装与使用
    Jenkins配置基于角色的项目权限管理
    云计算的三种服务模式:IaaS,PaaS和SaaS
    PRC远程过程调用
    解决linux中ssh登录Warning:Permanently added (RSA) to the list of known hosts
    Maven仓库—Nexus环境搭建及使用
    SecureCRT使用本地公钥 SSH 免密码登录Linux
    Linux内存管理机制
  • 原文地址:https://www.cnblogs.com/xloogson/p/2478673.html
Copyright © 2011-2022 走看看