2017-04-10 48 views
14

Chcę otrzymywać powiadomienia przez SMS-y, gdy pewne rzeczy się zdarzą. Wygląda na to, że powinna być dość prosta. Ale kiedy nadejdzie wiadomość SMS, ma nadawcę i temat w wiadomości, a ja nie mogę wymyślić, jak dostosować wiadomość, aby się jej pozbyć.Jak sformatować wiadomość e-mail do wysyłania jako 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) 

Tworzy coś takiego:

[email protected]/FOOBAR!/ Hello, world!, a wszystko, co chcę zobaczyć to Hello, world!

+3

To naprawdę zależy od formatu wiadomości e-mail obsługiwanych przez bramę SMS, nie ma standardowego odwzorowania zdefiniowanego między wiadomościami e-mail i SMS. Osobiście polecam zrezygnowanie z bramek e-mail-SMS i skorzystanie z usługi Twilio, która oferuje łatwiejsze i bardziej spójne interfejsy API JSON do wysyłania wiadomości SMS. –

+1

Tak, skończyłem używając Twilio, ale teraz jest to zasada rzeczy. – Batman

Odpowiedz

3

Po robi trochę badań, wydaje się, że za pomocą bramki SMS do wysyłania wiadomości SMS jest ograniczenie, że masz tylko taką kontrolę nad formatem tekstu.

Jednak ta zmiana w strukturze tekstu wysyłane prace dla mnie na Sprint w formacie chcesz:

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 = ("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) 

Zauważ, że wziąłem ten format treść wiadomości od this wątku i dostosowanego go do sprawy .