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

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

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

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

解決済

pythonで添付ファイル付きのメール送信を行っていますが一部の送信先から添付ファイルがないとの指摘を受けています。

Miyamiya3
Miyamiya3

総合スコア0

Python 3.x

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

2回答

0評価

1クリップ

1725閲覧

投稿2021/06/11 12:06

編集2021/06/11 23:27

前提・実現したいこと

python3で添付ファイルをつけてメールの送信を行いたい。

発生している問題・エラーメッセージ

30件の送り先に個別にメール送信でエクセルの添付ファイル(xxx.xlsx)を送信しています。
自身にCCをつけて送信していて自分自身へのメールでは添付ファイルが確認できますが、
2件の送付先から添付ファイルが無いとの指摘を受けています。また、一度限りではなく何度再送を行っても同様の現象が発生しています。
不具合の起きている送り先はyahooメールとocn.ne.jpです。

受信先でのメール設定などに起因する可能性もあるのではないかとも考えていますがよろしくお願いいたします。

尚、全く同じ内容のメールを同じSMTPサーバー経由でサンダーバードから送信をした場合には添付ファイルは問題なく届いたと報告がありました。

1.サンダーバードからのメール送信では正常に添付ファイルが届く(smtpサーバは同じ)
2.gmailからのメール送信では正常に添付ファイルが届く

pythonから送信のメールを転送してもらったところ以下の通り。

xxx.xlsxの場合は調査中です。(下記ではaaa.pdfの場合です。)

aaa.pdfをpythonで送信した場合も質問同様に添付ファイルが届かないという報告でした。報告のメールをそのまま転送してもらったところPart 1.2というファイルが添付されていました。ファイルサイズはもとの644,486 バイトと同じで、拡張子を.pdfに変更すると問題なく開くことができました。

該当のソースコード

python3

import smtplib from email.mime.text import MIMEText from email.header import Header from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email.utils import formatdate from email import encoders #smtpサーバ情報 smtp_ad = smtp_po = smtp_id = smtp_ps = i = 0 for index in dic.keys(): time.sleep(1) i += 1 #メール情報 ml_jp = 'utf-8' ml_from = ml_bcc = ml_title = ml_to = ml_text = メール本文 #メッセージ編集 message = MIMEMultipart() #添付があるのでMultipart message['Date'] = formatdate() message['Subject'] = str(Header(ml_title,ml_jp)) message['From'] = ml_from message['To'] = ml_to if ml_cc !=None: message['Cc'] = ml_cc message.attach(MIMEText(ml_text)) #本文(テキスト)をattach for k in range(len(dic[index])): ##dic[index]は "xxxx.xlsx"です。 #エクセルファイルを添付 attachment = MIMEBase('application','vnd.openxmlformats-',name = dic[index][k]) file = open(dic[index][k],'rb') attachment.set_payload(file.read()) file.close() encoders.encode_base64(attachment) #base64でエンコード attachment.add_header('Content-Dispotion','attachment',filename = dic[index][k]) message.attach(attachment) try: #メール送信 print(str(i)+'件目: '+index[1]+'様' +'に送信中...{}...{}様:Cc:{}'.format(index[2],index[3],index[4])) smtp_obj = smtplib.SMTP_SSL(smtp_ad,smtp_po)#SSLを利用の場合はSMTP_SSL smtp_obj.ehlo() smtp_obj.login(smtp_id,smtp_ps) smtp_obj.sendmail(ml_from,[ml_to]+[ml_bcc],message.as_string(),) smtp_obj.close() except Exception as E: print("***** エラー内容 *****") print("type: "+ str(type(E))) print("args: " + str(E.args)) print("message: " + E.message) print("E自体: " + str(E)) print('送信完了') ### 試したこと 自分自身でyahooメールを取得して送信したところ添付ファイルが確認できた。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

takasima20

2021/06/11 12:28

とりあえず、相手のメーラーとメール表示形式(設定)の確認かなあ。
Miyamiya3

2021/06/11 12:39

お返事ありがとうございます。 受信者はメーラーが何かもわかっていないので厳密には確認が取れていません。 恐らくoutlookのデフォルト設定だと思われます。調べたところoutlookのデフォルト設定ではhtmlメールとなっているようなのですが、このあたりが影響するということはありますでしょうか。
hope_mucci

2021/06/11 16:23

ウィルス対策ソフトの有無も確認してください。 Excelファイルはマクロ実行で悪さすることができるので自動削除対象になっているかもしれません。
takasima20

2021/06/11 20:34

outlook ではある現象らしいですが、お話の状況では対策(メーラー環境の設定変更など)はむずかしそうですねえ。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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