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

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

ただいまの
回答率

89.99%

pythonでgmail送信するときのアプリパスワードのログインが拒否される原因

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 204

satoshi.

score 6

前提・実現したいこと

gmailにExcelファイルを添付して送信するプログラムをpythonで作成したいと考えています。

gmailアカウントAでは作成したプログラムが問題なく動きましたが、
gmailアカウントBでは以下のエラーメッセージが発生しました。

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

Traceback (most recent call last):

  File "<ipython-input-12-d47c9bac69af>", line 1, in <module>
    runfile('C:/Users/******/.spyder-py3/cancellation_report.py', wdir='C:/Users/******/.spyder-py3')

  File "C:\Users\******\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 786, in runfile
    execfile(filename, namespace)

  File "C:\Users\******\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/******/.spyder-py3/cancellation_report.py", line 76, in <module>
    server.login(username, password)

  File "C:\Users\******\AppData\Local\Continuum\anaconda3\lib\smtplib.py", line 730, in login
    raise last_exception

  File "C:\Users\******\AppData\Local\Continuum\anaconda3\lib\smtplib.py", line 721, in login
    initial_response_ok=initial_response_ok)

  File "C:\Users\******\AppData\Local\Continuum\anaconda3\lib\smtplib.py", line 642, in auth
    raise SMTPAuthenticationError(code, resp)

SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8  https://support.google.com/mail/?p=BadCredentials x26sm4079741pfq.69 - gsmtp')

該当のソースコード

# 以下にGmailの設定を書き込む★ --- (*1)
username = '**********'
password = '**********'

# メールの送信先 --- (*2)
to_addrs = '**********'
cc_addrs = '**********'

# 添付ファイルのパス(ZIPファイルで指定) --- (*3)
file_path = "./**********.xlsx"

# メールデータ(MIME)の作成 --- (*4)
subject = '*************'
body ='テスト'

encoding = 'utf-8'
msg = MIMEMultipart()
msg["Subject"] = Header(subject, encoding)
msg["To"] =to_addrs
if cc_addrs != '':
    msg["Cc"] = cc_addrs
msg["From"] = username
msg.attach(MIMEText(body, 'plain', encoding))

# 添付ファイル(xlsx)をメールに追加 --- (*5)
attach = MIMEBase('application','vnd.ms-excel')
with open(file_path, "br") as f:
    attach.set_payload(f.read())
encoders.encode_base64(attach)
attach.add_header('Content-Disposition', 'attachment', filename='********************')
msg.attach(attach)

# メールサーバーへアクセス
smtp_host = 'smtp.gmail.com'
smtp_port = 587

server = smtplib.SMTP(smtp_host, smtp_port)
server.ehlo()
server.starttls()
server.ehlo()
server.login(username, password)
sendToList = to_addrs.split(','), cc_addrs.split(',')
server.sendmail(username, sendToList, msg.as_string())
server.quit()

試したこと

gmailの二段階認証を設定の上、アプリパスワードをgmailアカウントA,Bともに取得して、まったく同じ環境にて動作確認を行いました。
ログインが拒否されたgmailアカウントBでは、アプリパスワードを再取得、再度動作確認をしましたが改善しませんでした。
"安全性の低いアプリへのアクセスを許可"は、Gsite管理者(社内システムを利用のため)によって操作ができなくなっています。
※gmailアカウントA,Bは、どちらも 同じドメインの「 G Suite 」アカウントとなります。

gmailアカウントAでは動作確認ができているために、gmailアカウントBの設定に原因があることまではわかっていますが、
アプリパスワードを取得しているにもかかわらずgmailにログイン拒否される理由がわかりません。
gmailアカウントA,Bの動作確認時に変更した箇所は、username,passwordのみです。

補足情報(FW/ツールのバージョンなど)

window7,10
anaconda3 2019.03(python3.7.3 64-bit)

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • CHERRY

    2019/07/09 16:33

    質問に記載されている gmailアカウント A と B というのは、どちらも 同じドメインの「 G Suite 」アカウントですか?

    キャンセル

  • satoshi.

    2019/07/09 17:02

    ご質問下さいまして誠にありがとうございます。また、アカウントの所属ドメインが同一であるという状況を記載する必要性を認識できておりませんでした。ご指摘いただけましたこと重ねてお礼申し上げます。

    キャンセル

  • CHERRY

    2019/07/09 17:30

    G Suite と記載がありましたか、Gmail アカウントという表記だと 無料版の gmail.com アカウントの可能性も考えられるので確認させていただきました。

    キャンセル

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

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

  • ただいまの回答率 89.99%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

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