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

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

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

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

Q&A

解決済

1回答

1701閲覧

Pythonで添付ファイル付きのメールを送るようにしたら、メール届くも 必ず異常を検知するようになった

saya24

総合スコア247

Python

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

0グッド

0クリップ

投稿2020/06/16 15:08

以下コードはこちらを参考にコーディングしたメールを送信するための関数です。

添付ファイルを付けるようにしたら、添付ファイル付きで 指定した宛先へメールが届くことは確認できるのですが
かならず smtp.sendmail の部分で 「(501, b'5.1.3 Bad recipien...ss syntax')」という戻り値がもどるようになりました。

メールが届いているだけに、解せません。

何かお心当たりの方・対策をご存じの方 いらっしゃるようであればご教示をお願い申し上げます。

Python

1def send_Mail(self, toaddress, ccaddress, bccaddress, subject, body, parent): 2 try: 3 4 cset = 'utf-8' 5 msg = MIMEMultipart() 6 msg["Subject"] = subject 7 msg["From"] = self.mlsrv_fraddress 8 msg["To"] = toaddress 9 msg["Cc"] = ccaddress 10 msg["Bcc"] = bccaddress 11 msg["Date"] = formatdate() 12 body = MIMEText(body.encode(cset), 'plain', cset) 13 msg.attach(body) 14 15 16 path = "./readme.txt" 17 with open(path, "r") as f: 18 part = MIMEApplication( 19 f.read(), 20 Name=basename(path) 21 ) 22 23 part['Content-Disposition'] = 'attachment; filename="%s"' % basename(path) 24 msg.attach(part) 25 26 27 to_cc_bcc = [toaddress, ccaddress, bccaddress] 28 delindex = to_cc_bcc.index("") 29 del to_cc_bcc[delindex] 30 31 smtp = smtplib.SMTP(self.mlsrv, self.mlsrv_port) 32 smtp.login(self.mlsrv_id, self.mlsrv_pw) 33 34 result = smtp.sendmail(self.mlsrv_fraddress, tuple(to_cc_bcc), msg.as_string()) 35 36 except Exception as e: 37 tkmb.showerror("Abort", e, parent=parent) 38 result = 500 39 finally: 40 return result

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージからメールアドレスに不正があることが読み取れます。可能性は2つあり

  1. メール本文にあるTo,Cc,Bccに不正がある
  2. メールアドレスそのものがRFCに従っていない

のどちらかだと思います。

1の場合、例えばmsg["To"], msg["Cc"], msg["Bcc"]のどれかが空の文字列の可能性があります。アドレスが存在しない場合は辞書からキーワードそのものを削除してください。

2の場合、print(to_cc_bcc)等で送信先のアドレス一覧を表示して、メールアドレスに問題がないか確認してください。

投稿2020/06/16 21:15

yymmt

総合スコア1615

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

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

saya24

2020/06/17 00:02

すみません、添付ファイルなしでもたしかに失敗しますねぇ。あたかも添付ファイルを付けるようにしたらエラーになりだした、みたいな問合せをしてしまいましたが。 まさに仰られる要因が疑われますので 確認させて頂きます。
saya24

2020/06/17 01:01

仰られるように、TO/CC/BCCの中でアドレスが指定されていない部分をリストから除去するようにしました。 していたにはしていたのですが、1しか度当該操処理を実施していなかったので、2枠未指定があると失敗するオチだったようです、気が付かせて頂きありがとうございました! to_cc_bcc = [toaddress, ccaddress, bccaddress] while True: if ("" in to_cc_bcc): delindex = to_cc_bcc.index("") del to_cc_bcc[delindex] else: break
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問