Code:
# -*- coding: utf-8 -*-
import appuifw, contacts, e32, os, smtplib, sys, btsocket
class ContactList:
def __init__(self, sortable = None):
self.__db = contacts.open()
self.__contact = []
self.__number = {}
self.__load_contact(sortable)
def __load_contact(self, sortable = None):
for id in self.__db:
try:
name = self.__db[id].title
mobile = self.__db[id].find('mobile_number')
phone = self.__db[id].find('phone_number')
number_tmp = []
if mobile:
number_tmp.extend([field.value for field in mobile])
if phone:
number_tmp.extend([field.value for field in phone])
self.__number[name] = number_tmp
self.__contact.append(name)
if sortable:
self.__contact.sort(sortable)
except:
None
def select_multi(self):
index = appuifw.multi_selection_list(self.__contact, 'checkbox', 1)
if not index:
return None
multi_number = []
for i in index:
number_list = self.__number[self.__contact[i]]
if not number_list:
continue
if len(number_list) > 1:
ind = appuifw.popup_menu(number_list, u"Nummer wählen")
if ind == None:
continue
else:
ind = 0
multi_number.append(number_list[ind])
if multi_number:
return multi_number
else:
return None
#The Class ends the Program starts
def write_settings():
CONFIG_DIR="e:/"
CONFIG_FILE=os.path.join(CONFIG_DIR,'smstrade.txt')
if not os.path.isdir(CONFIG_DIR):
os.makedirs(CONFIG_DIR)
CONFIG_FILE=os.path.join(CONFIG_DIR,'smstrade.txt')
config={}
if key:
config['key']= key
if yournum:
config['yournum']= yournum
if type:
config['type']= type
if email:
config['email']= email
if em_user:
config['em_user']= em_user
if em_pass:
config['em_pass']= em_pass
if em_server:
config['em_server']= em_server
if apid:
config['apid']= apid
f=open(CONFIG_FILE,'wt')
f.write(repr(config))
f.close()
def read_settings():
CONFIG_FILE=os.path.join("e:/",'smstrade.txt')
try:
f=open(CONFIG_FILE,'rt')
try:
content = f.read()
config=eval(content)
f.close()
global key
key=config.get('key',None)
global yournum
yournum=config.get('yournum',None)
global type
type=config.get('type',None)
global email
email=config.get('email',None)
global em_user
em_user=config.get('em_user',None)
global em_pass
em_pass=config.get('em_pass',None)
global em_server
em_server=config.get('em_server',None)
global apid
apid=config.get('apid',None)
except:
print 'can not read file'
except:
print 'can not open file'
def set_accesspoint():
global apid
apid = btsocket.select_access_point()
apo = btsocket.access_point(apid)
btsocket.set_default_access_point(apo)
if apid:
write_settings()
else:
apid = None
def item1():
global key
global nums
global type
global yournum
global email
global em_user
global em_pass
global em_server
global apid
if key:
if nums:
if type:
if yournum:
if email:
if em_user:
if em_pass:
if em_server:
try:
try:
if not apid == None :
apo = btsocket.access_point(apid)
btsocket.set_default_access_point(apo)
else:
set_accesspoint()
except:
set_accesspoint()
SUBJECT = appuifw.app.body.get()
TO = ["email2sms@smstrade.de"]
FROM = email
TEXT = "#" + key + "#" + nums + "#" + type + "#" + yournum
message = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n%s" % (FROM, ", ".join(TO), SUBJECT, TEXT)
SERVER = em_server
server = smtplib.SMTP(SERVER)
server.login(em_user, em_pass)
server.sendmail(FROM, TO, message.encode("utf-8"))
server.quit()
appuifw.note(u"E-Mail2SMS Versand erfolgt.", "info")
global t
t.clear()
nums = None
except Exception, e:
appuifw.note(unicode(e), "error")
else:
appuifw.note(unicode("E-Mail Server nicht gesetzt"), "error")
else:
appuifw.note(unicode("E-Mail Passwort nicht gesetzt"), "error")
else:
appuifw.note(unicode("E-Mail Benutzer nicht gesetzt"), "error")
else:
appuifw.note(unicode("E-Mail Abesender nicht gesetzt"), "error")
else:
appuifw.note(unicode("Absender Nummer nicht gesetzt"), "error")
else:
appuifw.note(unicode("SMS Typ nicht gesetzt"), "error")
else:
appuifw.note(unicode("Empfänger nicht gesetzt"), "error")
else:
appuifw.note(unicode("Gateway Key nicht gesetzt"), "error")
def item2():
global nums
nums = ""
test = ContactList(lambda x, y:cmp(x, y))
if test:
mnum = test.select_multi()
try:
nums = ",".join(mnum)
except:
nums = None
else:
nums = None
def item3():
global yournum
yournum = appuifw.query(u"Absender:", "text")
if yournum:
write_settings()
else:
yournum = None
def item4():
global key
key = appuifw.query(u"Gateway-Key:", "code")
if key:
write_settings()
else:
key = None
def item5():
global type
types = [u"basic",u"economy",u"gold"]
type = types[appuifw.popup_menu(types)]
if type:
write_settings()
else:
type = None
def item6():
global email
email = appuifw.query(u"E-Mail:", "text")
if email:
write_settings()
else:
email = None
def item7():
global em_user
em_user = appuifw.query(u"E-Mail Benutzer:", "text")
if em_user:
write_settings()
else:
em_user = None
def item8():
global em_pass
em_pass = appuifw.query(u"E-Mail Passwort:", "code")
if em_pass:
write_settings()
else:
em_pass = None
def item9():
global em_server
em_server = appuifw.query(u"E-Mail Server:", "text")
if em_server:
write_settings()
else:
em_server = None
def numchars():
c = appuifw.app.body.len()
appuifw.app.title = u'SMSTrade Email2SMS (%d)' % c
appuifw.app.menu = [(u"Zählen", numchars),
(u"Abschicken", item1),
(u"Empfänger setzen", item2),
(u"SMS Einstellungen",
((u"Absender setzen", item3),
(u"Gateway-Key setzen", item4),
(u"SMS Typ setzen", item5))),
(u"EMail Einstellungen",
((u"E-Mail Adresse setzen", item6),
(u"E-Mail Benutzer setzen", item7),
(u"E-Mail Passwort setzen", item8),
(u"E-Mail Server setzen", item9))),
(u"AccessPoint setzen", set_accesspoint)]
app_lock = e32.Ao_lock()
appuifw.app.title = u'SMSTrade Email2SMS (0)'
appuifw.app.screen='normal'
key = None
nums = None
type = None
yournum = None
email = None
em_user = None
em_pass = None
em_server = None
apid = None
read_settings()
t = appuifw.Text()
appuifw.app.body = t
t.color = 0x000000
t.font = (u"Nokia Hindi S60", 25, None)
t.highlight_color = 0xC3C3C3
app_lock.wait()