2

Python経由で添付ファイル付きのメールを送信するために使用しているコードは次のとおりですが、tumblrではうまく機能しません。基本的に、スクリプトによって送信されたメールは問題なく通過しましたが、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'] = 'from@gmail.com'
msg['To'] = 'to@tumblr.com'

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()
4

1 に答える 1

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'] = 'from@gmail.com'
msg['To'] = 'to@tumblr.com'

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してから、画像を適切にエンコードし、適切なヘッダーを追加することです。

私のコードは、Petri Purho によって書かれた auto_tumblr.pyに基づいています。

于 2014-02-09T09:17:58.200 に答える