12 stycznia 2009, 13:39:19
Bramka email2sms
Ostatnio zamówiłem kartę sim z sieci WPmobi ściągnęła mnie do niej ciekawość i 100MB darmowego transferu do wp.pl ;) Jednak sms'y poza sieć są dość drogie więc dlaczego by nie używać e-maili do komunikacji skoro są one w zasadzie za friko?
E-mail w telefonie nie jest niestety zbyt popularnym środkiem komunikacji jeśli chodzi o telefony komórkowe, na nich nadal królują sms'y. Więc jak wysłać e-mail żeby doszedł jako sms? Plus udostępnia darmową bramkę sms, wystarczy wysłać wiadomość na 48XXXYYYZZZ@text.plusgsm.pl, niewielu moich znajomych ma numer z tej sieci więc to nie rozwiązuje problemu w całości.
Nie wiem czy Era lub Orange oferują podobną usługę, gdyż mimo moich poszukiwań nie znalazłem informacji o czymś podobnym. Zacząłem więc szukać serwisów, które podobną funkcjonalność oferują, ku mojemu zdziwieniu znalazłem! Jednak ceny i brak kilku darmowych sms'ów skutecznie mnie odstraszyły.
Zainteresowałem się więc bramką smsfree.pl, oferuje ona 5 darmowych sms'ów dziennie doklejając do nich tylko "/smsfree.pl" na końcu. Dodatkowo można wykupić kredyty w stosunkowo niskiej cenie.
Mój pomysł wygląda następująco:
- wysyłamy e-mail na jakąś własną skrzynkę (o strukturze: tytuł: nr tel, treść: treść sms'a
- program odbiera e-mail
- program wysyła curlem zapytanie do bramki
Oczywiście to rozwiązanie ma swoje wady:
- potrzebny jest własny serwer (ew. konto shell)
- połączenie z internetem może czasem nawalić
- trochę długo trwa wysłanie sms'a
- reklama na końcu sms'a
Poniżej przedstawiam kod, który jakoś udało mi się wyklepać jestem pewien, że można to by napisać: lepiej, czytelniej, szybciej itp. (a na dodatek kod wchodzi trochę pod szablon ;p) ale mi w zupełności wystarcza bo jakoś działa. Jeśli komuś się pomysł spodoba (bo kod raczej nie ;) ) to bardzo dobrze, a jeśli nie to nic nie szkodzi bo robiłem to głównie dla siebie.
#!/usr/bin/python import poplib,os #login i haslo bramki Blogin = '' Bpass = '' #email, haslo i adres serwera pop3 Mmail = '' Mpass = '' Mserver = '' ########################################## def send_sms(number,text,id): curl = 'curl -s -d "numer_global='+Blogin + '&password_global='+Bpass curl = curl + '" http://www.smsfree.pl/index.php -c ciastek.txt > /dev/null' os.system(curl) curl = 'curl -s -b ciastek.txt -d "what=sms&kody=48&numer='+number +'&tariff=' curl = curl + id+'&podpis=48'+Blogin+'&submit=Przeslij sms\'a&text=' + text curl = curl + '" http://www.smsfree.pl/index.php > /dev/null' os.system(curl) def check(): m = poplib.POP3(Mserver) m.user(Mmail) m.pass_(Mpass) num = len(m.list()[1]) file= open('licznik','r') #licznik w trzymany w pliku na wypadek wyłączenia serwera etc.. if (int(file.read())==int(num)): # print 'pusto w tej skrzynce..' file.close() return 0 else: # print 'jest mail - wysylam sms' file.close() return 1 def send(): m = poplib.POP3(Mserver) m.user(Mmail) m.pass_(Mpass) num = len(m.list()[1]) numer = m.retr(num)[1][17][9:] # wycinanie numeru z tematu body = m.retr(num)[1][28] body = body[:len(body)-1] #wycinanie ostatniego znaku send_sms(numer,body,'1') # (z niewiadomych mi przyczyn dodaje się tam znak '=') # print 'sms poszedl..' file = open('licznik','w') file.write(str(num)) file.close() while(1): #pętla główna try: if(check()): send() except: pass os.system('sleep 15')
Prawdopodobnie jeśli ten skrypt będzie używany inaczej niż w konfiguracji: poczta wp -> poczta gery.pl to nie będzie działał prawidłowo. Trzeba metodą prób i błędów sprawdzić co jest zwracane w jakiej komórce: m.retr(num)[1][].
W kodzie nie mogłem użyć biblioteki pycurl ponieważ nie jest ona zainstalowana na serwerze na którym mam konto. Oczywiście nic nie szkodzi na przeszkodzie żeby z niej skorzystać.
Możesz przejść na koniec i zostawić komentarz.
Graffi powiedział(a):
12 stycznia 2009 o 14:04:34
jeżeli masz shella to pewnie masz tam też maila na tym serwerze, nie prościej więc jest procmaila "zatrudnić" do roboty, odpada problem sprawdzania poczty (a fuj... tak ruch między serwerami generować praktycznie na pusto) i wiadomo że jak do serwera doszedł mail (tzn. nie mamy zwrotu) to procmail załatwił już odpalenie skryptu :)
flegmatyk powiedział(a):
12 stycznia 2009 o 15:49:38
Bombus + transport SMS. Korzystam z tego od dłuższego czasu i polecam. Zwłaszcza, że w "transfer do WP" może także wliczać się transfer do jabber.wp.pl ;)
mdoff powiedział(a):
12 stycznia 2009 o 15:58:16
@Graffi: nie pomyślałem o tym :)
@flegmatyk: przez pewien czas to stosowałem, ale na moim telefonie łatwiej jednak się wysyła e-maile przez wbudowanego klienta ;) Edit:transfer do jabber.wp.pl wlicza się jako darmowy
Zal powiedział(a):
12 stycznia 2009 o 19:58:24
Ja korzystam z "Bombusa":http://blog.4zal.net/2008/07/08/lifehack-orange-jabber-xmpp-i-darmowe-sms-y/ tak samo, jak flegmatyk ;]
jrk powiedział(a):
13 stycznia 2009 o 15:41:37
> transfer do jabber.wp.pl wlicza się jako darmowy
Teraz tylko napisać dwa programy (serwer pośredniczący i klient na komórkę), które umożliwiałyby przesyłanie całego ruchu przez jabbera.
wariat powiedział(a):
15 stycznia 2009 o 11:01:51
Nie używam, ale tak długo jak mam telefon komórkowy, czyli pi razy drzwi tak długo jak istnieje +gsm działa tam bramka SMS<->e-mail ... zawsze myślałem, że każda sieć ma coś takiego, nie ma?
mdoff powiedział(a):
15 stycznia 2009 o 16:04:23
@wariat - z tego co wiem taką bramkę za darmo udostępnia tylko plus, era ma też coś takiego ale trzeba chyba za to płacić, ale jak próbowałem aktywować sobie taką usługę to wyskoczył komunikat, że jest czasowo niedostępna.
Natomiast nie wiem jak to wygląda u innych operatorów, szukałem jakiejś informacji ale nie znalazłem (choć może źle szukałem ;) )