08年用Python写的一个塞班S60V3上免费发短信的小程序

#-*-coding:utf-8-*-
import appuifw2 as appuifw
import e32
import urllib
import key_codes
import uitricks
import contacts
import messaging
import envy
import socket
import inbox
import time
def cn(str):
    return str.decode("utf-8")

class main:

    def __init__(self):
        self.ap=socket.access_point(1)
        socket.set_default_access_point(self.ap)
        self.names = []
        self.numbers=[]
        self.number=appuifw.Text()
        self.msg=appuifw.Text(0)
        self.box = inbox.Inbox()
        self.box.bind(self.receivemsg)
        self.db = contacts.open()
        for i in self.db:
            self.names.append(self.db[i].title)
            num=self.db[i].find('mobile_number')[0].value
            if len(num)==11:
                self.numbers.append(num)
            elif num[:3]==cn("+86"):
                self.numbers.append(num[3:])
            elif num[:3]==cn("125"):
                self.numbers.append(num[5:])
            else :
                self.numbers.append(num)
        self.names=self.names[2:]
        self.numbers=self.numbers[2:]
        self.number.set_case(appuifw.ELowerCase)

    def hide(self):
        envy.set_app_hidden(1)
        e32.start_exe('z:\\sys\\bin\\phone.exe',"")
        self.writemessage()
    def send(self,snumber,smessage):

        for i in snumber:
            if i=='':
                continue
            try:
                url='http://fetionapi.appspot.com/api/?from=15996945532&pw=459320480&to=%s&msg=%s' %(urllib.quote(i),urllib.quote(smessage))
                answer=urllib.urlopen(url)
                if answer.read()[:3]!='Yes':
                    appuifw.note(cn("网络发送失败,启用短信模式"),"conf",1)
                    messaging.sms_send(i,cn(message),'UCS2')
            except:
                appuifw.note(cn("网络连接失败,启用短信模式"),"conf",1)
                messaging.sms_send(i,cn(smessage),'UCS2')
                continue

    def search_contact(self):

        index=appuifw.multi_selection_list(self.names,style='checkbox',search_field=1)
        for i in index:
            phonenumber=self.numbers[i]
            if   self.number.len()==0:
                self.number.add(phonenumber+';')
            elif self.number.get()[-1]==';':
                self.number.add(phonenumber+';')
            else:
                self.number.add(';'+phonenumber+';')

    def addreciver(self):

        appuifw.app.body=self.number
        appuifw.app.title=cn("添加联系人")
        appuifw.app.menu=[(cn("立即发送"),self.sendnow),(cn("延迟发送"),self.senddelay),(cn("添加联系人"),self.search_contact),(cn("退出程序"),self.app_exit)]
        appuifw.app.body.bind(key_codes.EKeySelect,self.search_contact)
        appuifw.app.body.bind(key_codes.EKeyYes,self.sendnow)
        appuifw.app.exit_key_handler=self.writemessage
        uitricks.set_text(cn("返回"),3009)

    def writemessage(self):

        appuifw.app.body=self.msg
        appuifw.app.title=cn("写短息")
        appuifw.app.menu=[(cn("添加联系人"),self.addreciver),(cn("退出程序"),self.app_exit)]
        appuifw.app.exit_key_handler=self.hide
        self.msg.bind(key_codes.EKeySelect,self.addreciver)
        self.msg.bind(key_codes.EKeyYes,self.addreciver)
        uitricks.set_text(cn("隐藏"),3009)

    def sendnow(self):
        if len(self.number.get())==0:
	    appuifw.note(cn("号码不能为空"),'error',1)
	    return
        self.hide()
        sendto=self.getsendnumber()
        self.msg.add(cn("\n"))
        sendmsg=self.msg.get().encode("utf-8")
        self.msg.clear()
        self.send(sendto,sendmsg)
        self.ap.stop()

    def senddelay(self):
        if len(self.number.get())==0:
            appuifw.note(cn("号码不能为空"),'error',1)
            return
        after_time=appuifw.query(cn("输入时延:"),'time')
        self.hide()
        sendto=self.getsendnumber()
        self.msg.add(cn("\n"))
        sendmsg=self.msg.get().encode("utf-8")
        self.msg.clear()
        e32.ao_sleep(after_time,lambda:self.send(sendto,sendmsg))
        self.ap.stop()

    def getsendnumber(self):
        sendnumber=self.number.get().split(';')
        if len(sendnumber[0])<11:
            for j in range(0,len(self.names)-1):
                 if self.names[j]==sendnumber[0]:
                     sendnumber[0]=self.numbers[j]
        self.number.clear()
        return sendnumber

    def app_exit(self):
        appuifw.app.set_exit()

    def receivemsg(self,msgid):
        envy.set_app_hidden(0)
        box = inbox.Inbox()
        msgcontent=box.content(msgid)
        msgaddress=box.address(msgid)
        msgtime=box.time(msgid)
        box.set_unread(msgid,0)
        rmsg=appuifw.Text()
        rmsg.add(cn("发件人:%s\n\n%s\n") %(msgaddress,msgcontent))
        rtime=time.strftime("时间:%m-%d-%X",time.localtime(msgtime)).decode("utf-8")
        rmsg.add(rtime)
        rmsg.read_only=1
        appuifw.app.body=rmsg
        appuifw.app.title=cn("收件箱")
        try:
            appuifw.app.menu=[(cn("回复"),lambda:self.reply(msgaddress)),(cn("转发"),lambda:self.transform(msgcontent))]
        except :
            appuifw.note(cn("oh"))
            appuifw.query(traceback.print_exc(),"query")
        e32.start_exe('C:\\sys\\bin\\mysms_0x11111111.exe',"")

    def reply(self,rnumber):
        try:
            self.number.add(rnumber)
            self.writemessage()
        except Exception,data:
            print Exception,",",data
    def transform(self,rmsg):
        self.msg.add(rmsg)
        self.addreciver()

if __name__ == '__main__':
    start=main()
    envy.set_app_system(1)
    e32.ao_sleep(0,start.hide)

时间: 2024-08-07 21:16:33

08年用Python写的一个塞班S60V3上免费发短信的小程序的相关文章

Python写了一个WC命令

Python 写了一个收发数据用的一个wc命令,更多学习交流请加365534424 ,直接上代码 #!/usr/bin/env python # coding:utf-8 # author: 51reboot.com # QQ群:365534424 from optparse import OptionParser import os class Wc(object):     def __init__(self):         self.n = 0              # line 

Python写的一个优美的定时器,定时精度可调

# -* coding: utf-8 -*- import sys import os import getopt import threading import time def Usage(): usage_str = '''说明: \t定时器 \timer.py -h 显示本帮助信息,也可以使用--help选项 \timer.py -d num 指定一个延时时间(以毫秒为单位) \t 也可以使用--duration=num选项 ''' print(usage_str) def args_p

python写个简单的文件上传是有多难,要么那么复杂,要么各种,,,老子来写个简单的

def upload(url,params): ''' 上传文件到服务器,不适合大文件 @params url 你懂的 @params {"action":"xxx","@file","file_path"} 普通参数 key:value 文件key头部加@ ''' import os import urllib2 BOUNDARY = "0450de9528f040078csuxianbaozic06"

让小米路由器变成一个聪明的WIFI(1):有人回家,它就发短信告诉你

我想让我的小米路由器变成一个聪明的WIFI,idea是这样的:当老婆回到家,小米路由器就自动发一条短信告诉我. 折腾了几天,搞定,分享一下: 我的路由器型号:小米路由器mini (129元在官网淘的) 步骤一:首先要开启小米路由器SSH, 获得root 这个方面小米是开放的,操作方法网上有,不详述了,见 点击打开链接 步骤二:用SSH登录进去, 了解小米路由器是什么样 在你的电脑上输入以下命令,登录小米路由器 (我的路由器IP是192.168.31.1) ssh [email protected

简洁的写日志发短信

以后写日志,发短信什么的,统一集合到一份!虽然代码超简单.但是我的思维总是不够面向对象,写代码如果感觉到了麻烦,就要考虑方式了. 提醒我这个猪脑子... private static void monitoring() { //监控是否有数据 //监控是否有数据 var strbuilder = new StringBuilder(); var networkerrorbuilder = new StringBuilder(); networkerrorbuilder = null; for (

【PYTHON】创蓝253云通讯平台国际短信API接口DEMO

#!/usr/local/bin/python#-- coding:utf-8 -- Author: jacky Time: 14-2-22 下午11:48 Desc: 短信http接口的python代码调用示例 import httplibimport urllibimport json#服务地址 host = "intapi.253.com" #端口号port = 80 #版本号version = "v1.1" #查账户信息的URIbalance_get_uri

python学习之最简单的获取本机ip信息的小程序

文章是从我的个人博客粘贴过来的,大家可以直接访问我的个人博客哦 http://www.iwangzheng.com 获取本机ip信息的命令ifconfig总是在用,这次拿到pyhton代码里,感觉python好麻烦啊,每次都要import. 可以在程序里直接read出来,也可以先在命令行执行ifconfig > xx.txt,这样可以直接访问倒入后的文本信息. 这个小程序有个问题,与朋友讨论了还没解决彻底,如果用findall是可以匹配所有的,但是怎么解决用match只匹配一次的问题呢,当然如果

python发短信

车牌摇号想给自己手机发个短信通知,百度了 python sms api,随意看了看,发现国内一般都是面向大企业(每个月短信量上千上万)提供的短信服务,收费较贵.个人的开发测试用的不多,很不划算,就尝试了下twilio.确实是免费的,新注册账户大概可以免费发送短信500多条,以1年摇号6次发6次短信来看可以用80年+,哎,这就很爽了. 1.twilio,免付费的 注册->创建test项目->免费获取twilio number 免付费规则:注册以后默认是trail account(体验账户),创建

分享一个免费接收短信验证码的网站

PS:给大家分享一个免费接收短信验证码的网站:https://www.becmd.com/ 现在我给大家说这个网站的作用,当我们需要用自己手机号在一些网站或平台 APP注册账号的时候,你考虑过自己的手机号就被一些不法分子利用,经常性 的会给你手机号发送一些垃圾信息和经常给你打推销广告,这个网站上就提供 两个用于接收短信的手机号本人亲自测试过,我也经常用这个网站提供的手机 注册一些账号,这样以来就会避免自己的手机号泄露,造成不必要的麻烦. 原文地址:https://www.cnblogs.com/