Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

pyton3でのメールアドレス生存確認方法について

解決したいこと

python3にて、メールアドレスの生存確認を勉強しております。
存在しないメールアドレスを指定しても、存在するコード(250)が返ってきます。
こちら何故なのでしょうか。ご教示いただけると幸いです。

import smtplib
username = 'xxxx@gmail.com'
password = 'xxxx'
try:
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.login(username, password)
server.ehlo()
code,message = server.mail('xxxx@gmail.com') # MAIL FROMに指定するアドレス
print("mail.code:" + str(code))
print("mail.message:" + str(message))

  ※存在しないアドレスを指定
code,message = server.rcpt('xxxx@gmail.com') # RCPT TOに指定するアドレス
server.quit()
print("rcpt.code:" + str(code))
print("rcpt.message:" + str(message))
if code == 250:
print('Address exists') # 250 OK
else:
print('Address does not exists')
except Exception as e:
print(e)

発生している問題・エラー

【ターミナル実行結果】
mail.code:250
mail.message:b'2.1.0 OK g4sm16481578pfu.134 - gsmtp'

rcpt.code:250 →存在しないメールアドレスなのに250が返ってくる。
rcpt.message:b'2.1.5 OK g4sm16481578pfu.134 - gsmtp'

Address exists →存在しないメールアドレスなのに、存在ありになってしまう。

該当するソースコード

code,message = server.rcpt('xxxx@gmail.com') # RCPT TOに指定するアドレス

自分で試したこと

ここに問題・エラーに対して試したことを記載してください。

0

1Answer

SMTPサーバーはメールアドレスが存在しているかのチェックはなく、
ただ指定したメールアドレス宛にメールを送信するだけのサーバーとなります。

存在しないメールアドレスを指定したにもかかわらず250 ok が返ってくるのは
SMTPサーバーとの通信がうまく行ったよ(250)という意味となります。

メールアドレスが存在しない場合はメールを受け取ったサーバーが存在しない
メールアドレスとしてfromアドレスに対してメールを返却します。

fromアドレスに適切なメールアドレスを入力していれば、メールが届くはずです。
そもそも存在しないドメインの場合はサーバー自体が存在しないので、
メールは届かないとは思います。

0Like

Your answer might help someone💌