0

MIMEMultipart を使用して生成した .xlsx ファイルを添付したメールを送信する Python 3 スクリプトがあります。以前は Py2 で同じスクリプトを使用して同じ生成ファイルを送信していましたが、唯一の違いは、Py2 スクリプトが MySQL から情報を収集して .xlsx を作成し、Py3 スクリプトが代わりに PostgreSQL を使用したことです。

msg = MIMEMultipart('alternative')
msg.attach(MIMEText("""HTML stuff""", 'html'))

with open(analysis_file, "rb") as fil:
  msg.attach(MIMEApplication(
                    fil.read(),
                    Content_Disposition='attachment; filename="%s"' % os.path.basename(analysis_file),
                    Name=os.path.basename(analysis_file)
                ))

msg['Subject'] = "SUBJECT"
msg['From']="Me <me@me.com>"
msg['To']= "You <you@you.com>"

server.sendmail(FROMADDR, ["you@you.com"], msg.as_string())

しかし、スクリプトの Py3 バージョンに切り替えたところ、添付ファイルが Microsoft の mail.live に表示されなくなりました。メッセージに添付ファイルがあることを示すクリップの記号がまだ表示されますが、見つかりません。

- 編集:

Gmail アカウントへの自動転送を設定すると、.xlsx 添付ファイルが正常にそこに表示されます。ただし、手動で転送すると転送されません。

4

2 に答える 2

7

変化

msg = MIMEMultipart('alternative')

msg = MIMEMultipart('html')

それを修正しました。

于 2016-03-14T17:46:56.490 に答える
0

yagmailで動作するかテストしてください。HTML/添付ファイルを処理する場合、これは非常に便利だと思います。デフォルトでは HTML で送信され、パスを指定するだけで添付ファイルを送信できます。

すべてのコード:

import yagmail
yag = yagmail.SMTP('me@me.com', 'password')
yag.send("you@you.com", "SUBJECT", analysis_file)

の 3 番目のフィールドsendはコンテンツで、文字列のリストまたは単なる文字列にすることができます。文字列をファイルとしてロードできる場合は、単に添付されます。

詳細については、githubページをご覧ください。私は開発者/メンテナーです。

于 2016-03-10T21:53:59.117 に答える