2013-09-23 54 views
2

下面是我用來通過Python發送帶有附件的電子郵件的代碼,但它不適用於tumblr,基本上,腳本發送的電子郵件經過了好的,但tumblr不承認它是照片文章,任何人都可以請讓我知道如何解決它?謝謝你這麼多,如何通過Python腳本發佈tumblr照片文章

from email.MIMEMultipart import MIMEMultipart 
from email.MIMEText import MIMEText 
from email.MIMEImage import MIMEImage 

import smtplib 
import os 

user_name = 'username' 
password = 'password' 

msg = MIMEMultipart() 
msg['Subject'] = 'photo post via email' 
msg['From'] = '[email protected]' 
msg['To'] = '[email protected]' 

file_path = os.path.join('A_smile_a_day_keeps_the_pain_and_the_doctor_away.jpg') 
fp = open(file_path, 'rb') 
img = MIMEImage(fp.read()) 
fp.close() 
msg.attach(img) 

server = smtplib.SMTP('smtp.gmail.com:587') 
server.starttls() 
server.login(user_name, password) 
server.sendmail(msg['From'], msg['To'], msg.as_string()) 
server.quit() 

回答

0

我測試你的代碼,我得到了一條信息只是文本'photo post via email',但沒有圖像。

我測試了下面的代碼,我得到了一個帖子,圖片和文字'photo post via email'

from email.MIMEMultipart import MIMEMultipart 
from email.MIMEText import MIMEText 
from email.MIMEImage import MIMEImage 
from email.MIMEBase import MIMEBase 
from email import Encoders 

import smtplib 
import os 

user_name = 'username' 
password = 'password' 

msg = MIMEMultipart() 
msg['Subject'] = 'photo post via email' 
msg['From'] = '[email protected]' 
msg['To'] = '[email protected]' 

file_path = os.path.join('A_smile_a_day_keeps_the_pain_and_the_doctor_away.jpg') 
fp = open(file_path, 'rb') 
part = MIMEBase('image', 'jpeg') 
part.set_payload(fp.read()) 
Encoders.encode_base64(part) 
part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file_path)) 
fp.close() 
msg.attach(part) 

server = smtplib.SMTP('smtp.gmail.com:587') 
server.starttls() 
server.login(user_name, password) 
server.sendmail(msg['From'], msg['To'], msg.as_string()) 
server.quit() 

的關鍵點是使用MIMEBase代替MIMEImage然後適當地編碼所述圖像,並添加適當的報頭。

我的代碼基於auto_tumblr.py written by Petri Purho