質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

2096閲覧

Python Gmail添付ファイルがdat化してしまう

AbcdefgFirst

総合スコア33

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/04/13 07:59

編集2021/04/14 01:19

お世話になっております。

Gmailからファイルを複数添付して送信するコードがあるのですが、Windows Live メールで受信すると「.dat」というファイルに化けてしまいます。
WebのGmailやOutlook等では正常に添付出来ています。
添付ファイルの拡張子は「.xlsx」です。

Python

1from email.mime.text import MIMEText 2from email.mime.application import MIMEApplication 3from email.mime.multipart import MIMEMultipart 4 5def send_mail_attach(attach_files): 6 msg = MIMEMultipart() 7 msg['Subject'] = 'subject' 8 msg['To'] = 'to@domain.com' 9 msg['From'] = 'from@domain.com' 10 msg.attach(MIMEText('body')) 11 12 for attach_file in attach_files: 13 with open(attach_file, 'rb') as f: 14 part = MIMEApplication(f.read(), Name=basename(attach_file)) 15 msg.attach(part) 16 17 server = smtplib.SMTP('smtp.gmail.com', 587) 18 server.starttls() 19 server.login('address', 'password') 20 server.send_message(msg) 21 server.quit() 22 23send_mail_attach(['sample.xlsx', 'さんぷる.xlsx'])

そもそも受信するソフトが古すぎるかとは思うのですがそこは変えれないため、何か修正方法等あればご教示いただけますと幸いです。

よろしくお願い致します。

追記

ここが原因かは不明ですが、メールソースのDiffで異なっていた点を書きます。

・GMail側(成功側)

text

1Content-Type: multipart/mixed; boundary="===============2028351794590306117==" 2MIME-Version: 1.0 3Subject: 【{日本語}】 {日本語} 2021-04-14 4 5--===============2028351794590306117== 6Content-Type: text/plain; charset="utf-8" 7MIME-Version: 1.0 8Content-Transfer-Encoding: base64 9 10{文字列} 11--===============2028351794590306117== 12Content-Type: application/octet-stream; Name="{日本語}【{日本語}】20210414.xlsx" 13MIME-Version: 1.0 14Content-Transfer-Encoding: base64 15 16--===============2028351794590306117==--

・Windows Live メール側(失敗側)

text

1Content-Type: multipart/mixed; boundary="===============2028351794590306117==" 2MIME-Version: 1.0 3Subject: =?utf-8?b?{アルファベットと数値の文字列}=?= 4=?utf-8?b?{アルファベットと数値の文字列}=?= 5 6(GmailにはあるBoundaryで区切られた境界がまるまる無い。)

また1点書き忘れていたのですが、プログラムから自動で送信された場合Windows Live メールでdatになってしまいますが、Gmailから手動でファイルを添付してメールを送信した場合はWindows Live メールでも正常に添付出来ていましたので、コードの中で何か必要なパラメータが足りないのかなと推測しております。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

投稿2021/04/13 08:59

mather

総合スコア6753

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AbcdefgFirst

2021/04/13 09:51

ご回答ありがとうございます。 説明不足ですみません。 受信側のメールソフトはWindows Live メールですが、送信側はGMailになります。 こちらのリンクですと送信側の設定のようですので適用が出来ませんでした。。
AbcdefgFirst

2021/04/13 10:24

ご回答ありがとうございます。 _sybtype この部分を追加してみましたが結果は変わらずでした。。
mather

2021/04/13 10:31 編集

受信側でのソースの表示ではどのようになっていますか? https://www.fmworld.net/cs/azbyclub/qanavi/jsp/qacontents.jsp?PID=1908-2247 この記事ではヘッダの表示ですが、「メッセージのソース」が確認できるはずです。 できれば、同じメールを別々のソフトで受信したときのソースの違いを確認したほうが良いです。
AbcdefgFirst

2021/04/14 01:19

ご回答ありがとうございます。 質問分を追記しました。よろしくお願い致します。
mather

2021/04/14 01:23

> Gmailから手動でファイルを添付してメールを送信した場合はWindows Live メールでも正常に添付出来ていました こちらは自動で添付したものと全く同じファイルですか?
AbcdefgFirst

2021/04/14 02:21

はい、同じファイルになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問