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

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

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

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

Q&A

解決済

1回答

1847閲覧

CSVの添付ファイル付きメールをPythonで送付したら、OUTLOOK側で、datファイルで表示される

saya24

総合スコア222

Python

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

0グッド

0クリップ

投稿2020/06/17 05:18

編集2020/06/19 11:41

OUTLOOK
自分のメールアドレス宛に、以下Pythonのコード(抜粋)で 添付ファイル付きメールを送り、アウトルックで確認した結果が この画像です。
抜粋したコードは以下となりますが、datファイルになってしまう原因は何でしょう....

ファイルが仕上がる前に メール配信がされている ということでしょうか?
原因とできましたら 対策をご教示頂けたら 幸いです、よろしくお願い致します。

Python

1 if (output_data): #☆データが存在した場合Trueになる☆ 2 if task[10] == 1: #★添付ファイル送信希望★ 3 #メールで送信されるファイル名 4 fname = task[3] + "_" + dt_now.strftime('%Y%m%d%H%M%S') + ".csv" 5 6 #送信されるファイルを作る  ★☆★このプログラムと同じ場所にちゃんとできています★☆★ 7 header = list(output_data[0].keys()) 8 with open(fname, "w", newline="") as f: 9 writer = csv.DictWriter(f, fieldnames=header, quoting=csv.QUOTE_NONNUMERIC) 10 writer.writeheader() 11 writer.writerows(output_data) 12 13 mail = email() 14 #6個目の引数が 添付ファイル名です。一応「./」を付けてみるもだめ 15 result = mail.send_Mail(task[4], task[5], task[6], task[12], task[13], "./" + fname, self.dialog) 16 if not (result): #正常処理は何も返らずFalseになる 17 result = True 18 else: 19 result = False 20 21 else: 22 mail = email() 23 result = mail.send_Mail(task[4], task[5], task[6], task[12], task[13], "", self.dialog) 24 if not (result): #正常処理は何も返らずFalseになる 25 result = True 26 else: 27 result = False 28 29 else: 30 31 32###########################~省略、如何が実際にメールを送信する関数です####################################### 33 34def send_Mail(self, toaddress, ccaddress, bccaddress, subject, body, filepath, parent): 35 try: 36 37 cset = 'utf-8' 38 msg = MIMEMultipart() 39 msg["Subject"] = subject 40 msg["From"] = self.mlsrv_fraddress 41 msg["To"] = toaddress 42 msg["Cc"] = ccaddress 43 msg["Bcc"] = bccaddress 44 msg["Date"] = formatdate() 45 body = MIMEText(body.encode(cset), 'plain', cset) 46 msg.attach(body) 47 48 49 if not (filepath == ""): 50 with open(filepath, "r") as f: 51 part = MIMEApplication( 52 f.read(), 53 Name=basename(filepath) 54 ) 55 56 part['Content-Disposition'] = 'attachment; filename="%s"' % basename(filepath) 57 msg.attach(part) 58 59 60 to_cc_bcc = [toaddress, ccaddress, bccaddress] 61 while True: 62 if ("" in to_cc_bcc): 63 delindex = to_cc_bcc.index("") 64 del to_cc_bcc[delindex] 65 else: 66 break 67 68 69 70 smtp = smtplib.SMTP(self.mlsrv, self.mlsrv_port) 71 smtp.login(self.mlsrv_id, self.mlsrv_pw) 72 73 result = smtp.sendmail(self.mlsrv_fraddress, to_cc_bcc, msg.as_string()) 74 75 except Exception as e: 76 tkmb.showerror("Abort", e, parent=parent) 77 result = 500 78 finally: 79 return result

20200619 2040追記
こんな記事を見つけました。

私は どうすべきでしょ

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

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

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

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

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

guest

回答1

0

自己解決

日本語を含むファイル名の添付ファイルにしていた場合に生じる問題のようでした。

半角英数字の添付ファイル名にしたら、無事OUTLOOK側で CSVファイルの添付ファイルとして表示されました。

内部を確認すると日本語が文字化けが発生しているので、この点及び、日本語を含む添付ファイルを送るための対策へ 着手してまいります。

達成したい課題が明確になりましたので、ある程度ネット上を模索しチャレンジしてみます。
また自分で解決できない場合は 皆さまのお力添えを頂ければ幸いです。

投稿2020/06/20 03:32

saya24

総合スコア222

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問