# Antal mail till mobilen via SMS

## jahve

Jag har sparkat ingång linuxsms och fått det att fungera. I sig självt är det däremot ganska trist. Tanken är nu att få datorn att skicka ett SMS en gång om dagen med hur många mail jag har fått.

Det jag undrar är om någon känner till något klokt kommando eller ett motsvarande script som kan läsa in hur många nya mail som ligger i mailboxen (maildir-format) och kan pipe:a in det till linuxsms.

----------

## nemhain

http://pop3check.sourceforge.net

Jag har använt det för andra saker, men det skall nog gå att använda till ditt problem också.

----------

## ClaesBas

Antal nya mail i maildir:

```
ls -1 ~/.maildir/new|wc -l
```

Här råkade jag radera delar av mitt inlägg som beskrev hur maildir fungerar och vad mitt lilla "hobbyhack" skulle göra...

Ni hittar mitt Python-skript längre ned i "tråden" som skickar alla nyinkomna mail vidare i "strippad" form till mobilmejl.com = SMS på Telia abbonemang.

```
Se nyare kod insänt senare
```

Ni bör nog kontrollera ovanstående "Kodblocks" indrag innan ni testkör...

Kan det vara något att peta vidare på  :Question: 

Vad skall (färdiga) progget/utillityn heta tycker ni  :Question: 

Kan man "snika" SMS mot andra operatörer oxå  :Question: [/code]Last edited by ClaesBas on Sun Feb 09, 2003 2:11 am; edited 2 times in total

----------

## jahve

För att slippa uppfinna hjulet igen kan ju detta vara en idé kanske. Har tyvärr inte provat det själv.

http://www.contactor.se/~dast/mail2sms/

Det detta program inte gör är att använd telias sms-tjänst (mina sidor förmodar jag) - något som jag inte har hittat något annat program som gör men som faktiskt skulle behövas.

----------

## ClaesBas

Till Telia-abbonemang kan man skicke mha "Mobil Mejl"...

 *Quote:*   

> GSM-nummer@mobilmejl.com
> 
> Alla kan skicka mejl till din mobil.
> 
> Den som vill kunna skicka mejl till din mobil anmäler sig först på
> ...

 

Jag kommer nog pilla vidare på mitt Python-hack som skall "strippa" alla nyinkomna mail (de i ".maildir/new") och skicka dem till min MobilMejl-adress varefter mailfilerna flyttas (i orginal) till .maildir/cur

Just nu har jag mycket annat för mig, men kommer peta vidare när jag har lust för att lära mig Python (lite bättre)....

Idéer är alltid välkomna!

----------

## ClaesBas

Jag råkade peta vidare lite....

Nu har jag lyckats få mitt Python-skript att skicka till min Nalle.

Vad som inte verkar stämma är de av Telia utlovade 320 tecknen (jag har en T39 som skall klara det). Det blev 2 SMS av dem...

Det återstår lite innan jag är helt nöjd!

```
Se nyare kod insänt senare
```

Last edited by ClaesBas on Sun Feb 09, 2003 1:46 am; edited 1 time in total

----------

## ClaesBas

Jag börjar lära mig Python nu  :Very Happy: 

Eftersom jag lagt in mina "embryon" här tidigare gör jag det igen (för sista gången här)

Vad som inte är 100%-igt är mail som bara innehåller HTML med Stylesheets (inget "text/plain").....

Mobile Mejl verkar ej hantera långa SMS (320 tecken) som de påstår i sin PDF.

```
#! /usr/bin/env python

################################################

# Copyright (C) 2003 ....

#

# GPL2 bla bla bla

#############################################################

"""

Forward new mail stripped from maildir for SMS (cell phone)

Website: to come.. (maybe)

----

Kvar:

"HTML till text" biten hanterar ej style sheets!

Hålla reda på hur många skickade på ett dygn

Ev. ha flera avsändar adresser att skicka ifrån

Konfigurationsfil och/eller args  for avsändarna, destination m.m

'Counter fil' (/var/run/... eller?)

Ev. spamfilter

"""

############################################################

#

# Haer ligger instaellningarna (som senare kanske skall

# ligga i en conf-fil eller som args om inte overkill)

#

#----------------------------------------------------------

fromaddr = 'reggad@adress.com'

toaddr ='0701234567@mobilmejl.com'

debug_print = False

send_list_msgs = False

#----------------------------------------------------------

import os

import string

import time

import htmllib, formatter

import smtplib

import mimetypes

import rfc822

import email

from mailbox import Maildir

from email.Message import Message

from email.Header import decode_header

def dprint(in_string):

    "Debug Print"

    if debug_print:

        print in_string

def strip_ws(in_str):

    "Strip whitespace"

    out_str = ''

    for x in str(in_str).split('\n'):

        if x:

            out_str += string.join(string.split(x.strip())) + ' '

    return out_str[:-1]

def main():

    tmpfile = os.tmpfile() 

    myWriter = formatter.DumbWriter(tmpfile)

    myFormatter = formatter.AbstractFormatter(myWriter)

    myParser = htmllib.HTMLParser(myFormatter)

    

    md = Maildir(os.path.expanduser('~/.maildir'), email.message_from_file)

    

    dprint( '------ S T A R T -------' )

    

    while string.split( md.boxes[0], '/')[-2] == 'new':

        msgfile = md.boxes[0]  # OBS UPPDATERAT !!!!

        msg = md.next()

        

        # Should we send mailinglist messages

        if not send_list_msgs and msg['List-Id']:

            continue

        shortText = ''

        from_adr = rfc822.parseaddr(msg['From'])

        if from_adr[0]: 

            for t in decode_header(from_adr[0]):

                shortText += t[0]

        else:

            shortText = from_adr[1]

        shortText += '+' + decode_header(msg['Subject'])[0][0] + '+'

        counter = 0

        textFound = False

        files = ''

        for part in msg.walk():

            msgCType = part.get_content_type()

            dprint('--- ' + msgCType + ' ---')

            if msgCType[:9] == 'multipart':

                continue

            elif msgCType[:5] == 'image':

                continue

            elif msgCType == None:

                continue

            eliif msgCType[:10] == 'text/plain':

                shortText += strip_ws(part.get_payload(decode=1))

                textFound = True

            elif (msgCType[:9] == 'text/html'):

                if textFound == False:

                    myParser.feed(part.get_payload(decode=1))

                    myParser.close()

                    tmpfile.seek(0)

                    shortText += strip_ws(tmpfile.read())

                    tmpfile.seek(0)

                    tmpfile.truncate(0)

                    textFound = True

            else:

                filename = part.get_filename()

                if not filename:

                    counter += 1

                    ext = mimetypes.guess_extension(part.get_type())

                    if not ext:

                        filename = 'fil-%d' % (counter)

                if filename:

                    files += '<' + decode_header(filename)[0][0]

        newmail = Message()

        newmail['From'] = fromaddr

        newmail['To'] = toaddr

        newmail.set_payload(shortText[:152-len(fromaddr)-len(files)] + files, 'iso-8859-1') 

        

        dprint(newmail.as_string())

        

        server = smtplib.SMTP('localhost')

        if debug_print:

            server.set_debuglevel(1)

        server.sendmail(fromaddr, toaddr, newmail.as_string())

        server.quit()

        os.rename(msgfile, string.replace(msgfile, 'new', 'cur'))  # OBS UPPDATERAT!!

        

    dprint('------- S T O P --------')

if __name__ == '__main__':

    main()

# ----------------- #

# That's all folks! #

# ----------------- #

```

(Jag har fixat ett slarvfel se två raderna med # OBS UPPDATERAT)

----------

## ClaesBas

Ingen med Telia som provat?

----------

## ClaesBas

Felia har bestämt sig för att deras framtida tjänster för mobiltelefoni skall baseras på Ex$(spyljud)$change och slänga ut nuvarande inklusive "mobilemejl".

Det innebär att mitt lilla "hack" inte kommer fungera efter 30/6!

Men det var ju ingen som visade något intresse iaf ( = ingen respons).

PS

Nu är det verkligen dags att byta mobiloperatör!

----------

## pocke

Finns det ingen annastans man kan skicka gratis SMS då? Förr fanns ju hemsidor o dyl.

Nån som sett nåt?

----------

