🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

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

SMTP

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

Q&A

解決済

2回答

3113閲覧

DjangoからXserverを経由してメールを送信する方法

Kirby2000

総合スコア24

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

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

SMTP

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

0グッド

0クリップ

投稿2018/05/01 17:37

編集2018/05/02 02:50

お世話になっております。
DjangoからXserverに登録しているメールアドレスを使ってメールの送信をしたいのですが、下記のプログラムを実行すると処理中のまま一向に終わらなくなります。
どのようにすればメールが送信できるようになりますか?
分かる方がいらっしゃいましたらご回答をお願い致します。
どうぞよろしくお願い致します。

Xserver SMTP設定マニュアル

#環境
Django 2.0.4
Python 3.6

#ソース

Python

1from django.core.mail import send_mail 2from django.conf import settings 3 4settings.EMAIL_HOST_USER = email 5settings.EMAIL_HOST_PASSWORD = password 6settings.EMAIL_HOST = "sv***.xserver.jp" 7settings.EMAIL_USE_TLS = True 8settings.EMAIL_PORT = 465 9 10send_mail(SUBJECT, BODY, email, [toaddrs] )

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

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

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

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

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

guest

回答2

0

自己解決

現在私が海外にいるためホットスポットシールドで日本のIPアドレスに切り替えていたのですが、エックスサーバー側では国内と判定されているにも関わらず「SMTP認証の国外アクセス制限設定」の対象となってしまっていました。

国外アクセス制限を解除したところ無事にメールの送信ができました。

投稿2018/05/02 06:35

Kirby2000

総合スコア24

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

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

kawakawa2018

2018/05/02 06:37

さっき自己解決のメール見ました。 ネットワーク側の問題ということで、こちらも安心しました。
guest

0

usernameは宛先アドレスに変えてください。

send_mail(SUBJECT, BODY, addess, [toaddrs] )

参考


こちら

send_mail(
...: 'Subject here_mailhub',
...: 'Here is the message.',
...: 'fromアドレスを指定',
...: ['toアドレスを指定'],
...: )

Djangoのサイト公式マニュアルにも
send_mailの内容があったと思います。
そちらも確認してみてください。

投稿2018/05/01 17:52

kawakawa2018

総合スコア1195

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

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

Kirby2000

2018/05/02 02:52

ご回答いただきありがとうございます。ややこしい変数名をつけてしまい申し訳ございません。usernameの変数には送信元メールアドレスが入っています。 再度確認しましたが、送信できませんでした。 ※ソースコードを修正いたしました。
kawakawa2018

2018/05/02 03:17

seing.py はsettings.pyでした。 settings.EMAIL_USE_TLS = True これを settings.EMAIL_USE_TLS = False にして再度試してください。 SMTP/POP3/IMAP over SSLにおけるSSL3.0無効化について https://www.xserver.ne.jp/manual/man_mail_setting.php SSLを利用しない接続での利用をご検討 ともあるので SMTP 465 (SSLを利用しない場合は 587) ==>> 587 でも試してください。 settings.EMAIL_PORT = 587
Kirby2000

2018/05/02 04:00 編集

早速返信ありがとうございます! ポートを587 TLSをFalseに設定し実行したところ SMTPRecipientsRefused: {'***@***': (554, b'5.7.1 <unknown[103.23.170.***]>: Client host rejected: Access denied')} とエラーが返ってきました。パスワードが間違っているかと思いプログラムに書いているパスワードをコピーし、Xserver側のパスワードを更新しましたが同じエラーが返ってきました。 その他試すことがありましたがご教示いただけますと幸いです。 どうぞよろしくお願い致します。
kawakawa2018

2018/05/02 03:31

誤解を与えてすみません。 ポートを587 TLSをFalseに設定し実行 まず ・settings.EMAIL_USE_TLS = False ・settings.EMAIL_PORT = 465 の組み合わせで実行してください。 どうなりますか?
Kirby2000

2018/05/02 06:34

ご連絡いただきありがとうございます。 >・settings.EMAIL_USE_TLS = False >・settings.EMAIL_PORT = 465 こちらの組み合わせでも同じく処理中のままとなってしまいました。 ーーー エックスサーバーに問い合わせをし、問題が解決いたしました。 現在私が海外にいるためホットスポットシールドで日本のIPアドレスに切り替えていたのですが、エックスサーバー側では国内と判定されているにも関わらず「SMTP認証の国外アクセス制限設定」の対象となってしまっていました。 国外アクセス制限を解除したところ無事にメールの送信ができました。 色々アドバイスいただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問