2017-04-10 1 views
14

Ich möchte per SMS benachrichtigt werden, wenn bestimmte Dinge passieren. Scheint so, als sollte es ziemlich geradlinig sein. Aber wenn die SMS ankommt, hat sie die Absender- und Betreffzeile in der Nachricht, und ich kann nicht herausfinden, wie ich die Nachricht anpassen kann, um sie los zu werden.So formatieren Sie E-Mails zum Senden als SMS

import smtplib 
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 

message = MIMEMultipart() 
message['From'] = "[email protected]" 
message['To'] = "[email protected]" 
message['Subject'] = "FOOBAR!" 

text = "Hello, world!" 
message.attach(MIMEText(text.encode("utf-8"), "plain", "utf-8")) 

server = smtplib.SMTP("smtp.gmail.com", 587) 
server.starttls() 
server.login(message["From"], "SuperSecretString") 

server.sendmail(message["From"], [message["To"]], text) 

Produziert etwas wie:

[email protected]/FOOBAR!/ Hello, world!, und alles, was ich sehen will, ist Hello, world!

+3

Dies hängt wirklich davon ab, welches Format Ihr E-Mail-zu-SMS-Gateway unterstützt, es ist kein Standard-Mapping zwischen E-Mail und SMS definiert. Ich würde persönlich empfehlen, E-Mail-zu-SMS-Gateways aufzugeben und etwas wie Twilio zu verwenden, die einfachere und konsistentere JSON-APIs zum Senden von SMS anbieten. –

+1

Ja, ich habe Twilio benutzt, aber das ist jetzt das Prinzip der Sache. – Batman

Antwort

3

Nach einem wenig Forschung zu tun, es scheint, dass in der Begrenzung mit Hilfe von SMS-Gateways SMS-Nachrichten senden ist Sie haben nur so viel Kontrolle über das Format Ihres Textes.

jedoch diese Änderung an der Struktur des Textes im Format funktioniert bei mir auf Sprint gesendet werden wollen Sie:

import smtplib 
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 

message = MIMEMultipart() 
message['From'] = "myemail[email protected]" 
message['To'] = "[email protected]" 
message['Subject'] = "FOOBAR!" 

text = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" 
     % (message['From'], ", ".join(message['To']), message['Subject'])) 
text += "Hello World!\r\n" 

message.attach(MIMEText(text.encode("utf-8"), "plain", "utf-8")) 

server = smtplib.SMTP("smtp.zoho.com", 587) 
server.starttls() 
server.login(message["From"], "**********") 

server.sendmail(message["From"], [message["To"]], text) 

Bitte beachte, dass ich dieses Nachrichtentext-Format von this Fäden nahm und angepasst, um sie Ihren Fall .