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

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

ただいまの
回答率

88.92%

pythonでyahooメールを送りたい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,766

basscl

score 12

 前提・実現したいこと

現在、python3.6(Spyderを使ってます)を使用してメール送信を送りたいと考えています。
送り元としてYahooメールを使用したいです。

エラー発生と書いたところを実行するとうまくいきません。
何か解決のヒントとなるアドバイスがいただけると助かります。

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

smtplib.SMTPNotSupportedError: STARTTLS extension not supported by server.

 該当のソースコード

import smtplib
from email.mime.text import MIMEText
SMTP_SERVER = "smtp.mail.yahoo.co.jp"
SMTP_PORT = 587
SMTP_USERNAME = "test@yahoo.co.jp"#送信元アドレス
SMTP_PASSWORD = "password"#パスワード
EMAIL_FROM ="test@yahoo.co.jp"#送信元アドレス
EMAIL_TO =   "test@gmail.com"#送信先アドレス
EMAIL_SUBJECT = "SUB"
co_msg = "msg"
msg = MIMEText(co_msg)
msg['Subject'] = EMAIL_SUBJECT 
msg['From'] = EMAIL_FROM 
msg['To'] = EMAIL_TO
debuglevel = True
mail = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
mail.set_debuglevel(debuglevel)
__**mail.starttls()**__#ここでエラー発生
mail.login(SMTP_USERNAME, SMTP_PASSWORD)
mail.sendmail(EMAIL_FROM, EMAIL_TO, msg.as_string())
mail.quit()

 試したこと

今回Yahooメールで送信したら失敗しましたが、Gmailで送信した場合はうまくできました。(Yahoo→Gmailはダメだが、Gmail→Yahooは成功)
それぞれYahooとGmailのセキュリティの設定は問題ないと思います。
(Gmailでうまくいってるので、最悪Gmailも利用します。自分の都合で申し訳ありませんが、できたらYahooが使いたいです。)

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • mather

    2018/10/09 15:32

    Pythonのソースコードはインデントが重要なので、ソースコードは必ずコードブロックを使って記載してください。もちろんそれ以外の言語もコードブロックを使うべきです。 https://teratail.com/help/question-tips#questionTips3-5-1

    キャンセル

  • basscl

    2018/10/09 16:49

    ご意見ありがとうございます。修正させていただきました。不慣れで申し訳ありません。

    キャンセル

回答 1

checkベストアンサー

+1

STARTTLS extension not supported by server.

「サーバー側でSTARTTLS拡張はサポートされていません」と書かれています。
STARTTLSが使えないので削除してはどうでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/09 16:52

    mail.starttls()の1文を単純に削除すればよいのでしょうか?
    試しにそこを削除して実行したら
    smtplib.SMTPAuthenticationError: (535, b'authorization failed (#5.7.0)')
    とでてしまいました。
    やり方が違ってるのでしょうか?

    キャンセル

  • 2018/10/09 17:02

    認証に失敗していますね。ログインID, パスワードの確認をお願いします。
    https://docs.python.jp/3/library/smtplib.html#smtplib.SMTPAuthenticationError

    キャンセル

  • 2018/10/09 17:05

    ehlo を実行していないのも気になりました。

    キャンセル

  • 2018/10/09 17:08

    すみません。最初に意見をいただいた、mail.starttls()の1文を削除でうまくいきました。
    その後失敗したのは、単純にパスワードが間違っていたからです。
    色々不手際がありましたが、無事解決いたしました。ありがとうございます。
    他に修正点がございましたら、後ほど追加させていただきます。

    キャンセル

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

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

関連した質問

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