web-dev-qa-db-ja.com

PythonローカルSMTPサーバーでDockerコンテナ内のメール送信)

Pythonでsmtp libでメールを送信したいです。私はそれがポート番号25でローカルのSMTPサービスを使用することを理解しています。私はコードを下回っています。これらのコードは問題なく私のローカル上で実行され、メールは正常に送信されます。しかし、それらをDockerコンテナに移動すると、メールは送信されず、エラーはありません。

私のコード:

from_mail = '[email protected]'
to_mail = '[email protected]'

s = smtplib.SMTP('localhost')
subject = 'Test Subject'
content = 'content test'

message = f"""\
      Subject: {subject}
      To: {to_mail}
      From: {from_mail}
      {content}"""
result = s.sendmail(from_mail, to_mail, message)
s.quit()
 _

これらのコードを実行した後は、result値として空のdict({})を取得します。 sendmailメソッドの説明にはこれがあります。

...エラーコード550で、4つのアドレスの3つのアドレスへの配信に対してメッセージが承認されました。すべてのアドレスが受け入れられた場合、メソッドは空の辞書を返します。

ネットワーク構成についてですか?ネットワーク設定を設定する必要がありますか?

6
kamilyrb

ホストマシンで動作する場合は、localhostの代わりにホストIPを使用してみてください。

_s = smtplib.SMTP(Host_IP)
_

またはArthurが推奨されるように、_--net=Host_を使用してホストネットワークでコンテナを実行してからlocalhostを使い続けることができます。

0
Shashank V