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

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

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

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

1105閲覧

Gmailを使ってアプリケーションからメールを送信する

RT1003

総合スコア0

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/08/14 09:09

編集2022/08/14 12:59

前提

ここに質問の内容を詳しく書いてください。
(例)
Flaskフレームワークとpythonを使い簡単なお問い合せフォームを作っています。
フォームを送信すると同時に自分のGmailアカウントにメールが送信されるようにしたいのですが、
smtplib.SMTPSenderRefused: Must issue a STARTTLS command first.
のようなエラーが出てしまいます。

解決策はMust issue a STARTTLS command firstであると分かったのですが、どうすればSTARTTLSコマンドを実行できるかが分かりません。

初心者でどんな情報を提示したら良いのかも分からないので、足りない情報がありましたらご質問いただけると助かります。

実現したいこと

  • フォームを送信すると同時に自分のGmailアカウントにメールが送信されるようにしたい。

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

smtplib.SMTPSenderRefused: (530, b'5.7.0 Authentication Required. Learn more at\n5.7.0 https://support.google.com/mail/?p=WantAuthError 63-20020a620542000000b0052d50e14f1dsm4771447pff.78 - gsmtp', '=?utf-8?q?Flaskbook?= <ryotatakeuchi11@gmail.com>')

該当のソースコード

言語名: python ソースコード: #(app.py) from cProfile import run from flask import Flask, render_template, url_for, current_app, g, request, redirect, flash from email_validator import validate_email, EmailNotValidError import os import logging from flask_debugtoolbar import DebugToolbarExtension from flask_mail import Mail, Message app = Flask(__name__) #アプリの設定 app.config['SECRET_KEY'] = '2AZSMss3p5QPbcY2hBsJ' #ログレベルの設定 app.logger.setLevel(logging.DEBUG) app.logger.critical('fatal error') app.logger.error('error') app.logger.warning('warning') app.logger.info('info') app.logger.debug('debug') #リダイレクトを中断しないようにする app.config['DEBUG_TB_INTERCEPT_REDIRECTS'] = False #DebugToolbarextensionにアプリケーションをセットする toolbar = DebugToolbarExtension(app) #Mailクラスのコンフィグを追加する app.config['MAIL_USE_TLS'] = os.environ.get('MAIL_USE_TLS') app.config['MAIL_SERVER'] = os.environ.get('MAIL_SERVER') app.config['MAIL_PORT'] = os.environ.get('MAIL_PORT') app.config['MAIL_USERNAME'] = os.environ.get('USERNAME') app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD') app.config['MAIL_DEFAULT_SENDER'] = os.environ.get('MAIL_DEFAULT_SENDER') #flask-mial拡張を登録する mail = Mail(app) # アプリケーションコンテキストを取得してスタックへpushする ctx = app.app_context() ctx.push() # current_appにアクセスが可能になる print(current_app.name) g.connection = 'connection' print(g.connection) @app.route('/contact') def contact(): return render_template('contact.html') @app.route('/contact/complete', methods=['GET','POST']) def contact_complete(): if request.method == 'POST': username = request.form['username'] email = request.form['email'] description = request.form['description'] is_valid = True if not username: flash('ユーザ名は必須です') is_valid = False if not email: flash('メールアドレスは必須です') is_valid = False try: validate_email(email) except EmailNotValidError: flash('メールアドレスの形式で入力してください') is_valid = False if not description: flash('問い合わせ内容は必須です') is_valid = False if not is_valid: return redirect(url_for('contact')) flash('問い合わせ内容はメールにて送信しました。問い合わせありがとうございます。') #メールを送る send_email(email, '問い合わせありがとうございました。', 'contact_mail', username=username, description=description,) return redirect(url_for('contact_complete')) return render_template('contact_complete.html') #メールを送信する関数 def send_email(to, subject, template, **kwargs): msg = Message(subject, recipients=[to]) msg.body = render_template(template + '.txt', **kwargs) msg.html = render_template(template + '.html', **kwargs) mail.send(msg)

該当のソースコード

#(.env) # flask-mailコンフィグ設定 MAIL_SERVER = smtp.gmail.com MAIL_PORT = 587 MAIL_USE_TLS = True MAIL_USERNAME = [ryotatakeuchi11@gmail.com] MAIL_PASSWORD = [djnmvupcusvigbwq] MAIL_DEFAULT_SENDER = Flaskbook <ryotatakeuchi11@gmail.com>

試したこと

Gmailの設定を変えたりportの値を変えたりした。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

meg_

2022/08/14 10:03

> 色々試したのですがお手上げ状態です。 「色々」とは何でしょうか?重複回答を避けるためにも試したことを質問に追記しましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問