2017-04-10 97 views
14

我想在某些事情發生時通過短信通知人們。似乎它應該是非常直接的。但是,當短信到達時,郵件中有發送者和主題行,我無法弄清楚如何調整郵件以擺脫郵件。如何將電子郵件的格式作爲短信發送

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) 

可生產類似:

[email protected]/FOOBAR!/ Hello, world!,而我希望看到的是Hello, world!

+3

這實際上取決於您的電子郵件到SMS網關支持的格式,電子郵件和SMS之間沒有定義標準映射。我個人建議放棄電子郵件到SMS網關,並使用Twilio等提供更簡單和更一致的JSON API來發送短信。 –

+1

是的,我最終使用Twilio,但現在它是原理。 – Batman

回答

3

做了一些研究之後,似乎使用SMS網關發送SMS消息是在限制你只能控制文本的格式。

但是在文本的結構此修改的格式發送的作品,我在Sprint你想:

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) 

注意,我把這個消息體格式從this線程,它適用於你的情況。

相關問題