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

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

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

SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Python

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

Q&A

1回答

1643閲覧

Pythonでメール送信エラー

yuu2002

総合スコア0

SMTP

SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Python

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

0グッド

0クリップ

投稿2020/10/11 02:15

前提・実現したいこと

さくらVPSのCentOS7からPython3.8でGmailを使ってメール送信を行いたい。

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

Winodwsでは動作しているが、VPSで動かしたところエラーになった。

File "xxxx.py", line 543, in send_mail server.login(self.smtp_user_id, self.smtp_password) File "/root/.pyenv/versions/3.8.5/lib/python3.8/smtplib.py", line 734, in login raise last_exception File "/root/.pyenv/versions/3.8.5/lib/python3.8/smtplib.py", line 723, in login (code, resp) = self.auth( File "/root/.pyenv/versions/3.8.5/lib/python3.8/smtplib.py", line 646, in auth raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials u15sm15137394pfl.215 - gsmtp') During handling of the above exception, another exception occurred:

該当のソースコード

def send_mail(self, title, msg): body = MIMEText(msg) body['Subject'] = self.subject body['From'] = self.from_addr body['To'] = self.to_addr server = smtplib.SMTP_SSL(self.smtp_server, self.smtp_port, context=ssl.create_default_context()) server.login(self.smtp_user_id, self.smtp_password) server.send_message(body) ※self.xxxxxの設定値 smtp_server=smtp.gmail.com smtp_port=465 smtp_user_id=xxxx@gmail.com smtp_password=xxxx from_addr=xxxxx@gmail.com to_addr=xxxxx@gmail.com subject=xxxxxx

試したこと

・gmail以外での確認(yahoo, outlook)
・SSLを使わずsmtplib.SMTPでポート587を使って送信
・Pythonの別バージョン(Python3.7.3, Python3.8.0, Python3.8.5)での確認
・サクラVPS以外での確認(Kagoya VPS CentOS7)
・サーバーの環境設定(ポートの確認)
[root@ik1-427-45876 market_check]# cat /etc/sysconfig/iptables
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
COMMIT

補足情報

プログラムはWindowsで動作しており、ネットでの公開情報から間違っていない気がしています。
サーバーの設定だとは思うのですが、まったくわかりません。

ご教示の程、何卒宜しくお願い致します。

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

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

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

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

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

otn

2020/10/11 03:28

「試したこと」の結果も書いてください。
yuu2002

2020/10/11 12:21

ご回答ありがとうございます。 ①通信が届いていることを確認する。 実施済で結果に問題ありません。 $ telnet smtp.gmail.com 587 Trying 2404:6800:4008:c07::6d... Connected to smtp.gmail.com. Escape character is '^]'. 220 smtp.gmail.com ESMTP p62sm1604543pfb.180 - gsmtp ②Googleアカウント側(Gmail)を確認する。 メールは届いておりません。 ですが、ID、PWDはgoogleログインし合っていることを確認しております。 ③非推奨*Google側のアクセス許可を"有効"にする。 有効にしております。 ④Google側の二段階認証を有効にし、アプリパスワードを発行する。 未実施です。これはセキュリティ対策の認識です。 もしかして②が原因ですかね・・・。 WindowsとLinuxの文字コードの違いが少し気になりました。改行や記号などが問題となっていないか確認します。
otn

2020/10/11 12:25

質問文中の「試したこと」は本当は試していないと言うことですか??
yuu2002

2020/10/11 12:36

質問文中の試したことも試しております。 先ほど、ご教示頂いたサイトの④を試し、メール送信できることを確認致しました。 ご教示ありがとうございました。
otn

2020/10/11 12:47 編集

> 質問文中の試したことも試しております。 その結果を聞いたのですが。。。 私の質問への回答で無く、yasutakatouさんの回答にコメントするのを間違えてこちらにコメントを書いてしまったという事みたいですね。 なお、④のアプリパスワードによる認証は、Gmailの企業向け版(GSuite)では2021/2に廃止されます。個人向けのGmailでの廃止は対応できないユーザが多いと思うのでおそらく無いと思いますが。
yuu2002

2020/10/11 13:04

ご教示ありがとうございます。 Guiteではないので、いったんは動いたものを使う予定です。 情報ありがとうございました。
guest

回答1

0

お手数ですけど一応確認です。
Windowsでは同じプログラムで動作したという事で宜しかったでしょうか。
https://qiita.com/kassy51/items/7a6dc2683862e6da3aa7
こちらのようなアクセス許可の手順も実施済みで宜しかったでしょうか。

投稿2020/10/11 02:24

yasutakatou

総合スコア446

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

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

meg_

2020/10/11 03:10

質問者への質問は「回答」ではなく、「追記・修正依頼」に書くべきかと思います。
yasutakatou

2020/10/11 03:59

失礼しました。仰る通りですね!以後気を付けます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問