2017-09-12 25 views
1

私はDjangoを使い慣れていますが、50ページ(大部分はSOとDjangoのドキュメント)を読み、私の状況のた​​めに。Django - 電子メールはシェルでは動作しますが、localhost上では動作しません - ConnectionRefusedError

私は単にDjangoのsend_mail関数を使って電子メールを送信しようとしています。私はGmail上でSMTPを使ってこれを動作させることを望んでいますが、今はlocalhost経由で動作しません。私はこのsend_mail機能をテストしています私のtest_email.pyファイルを実行すると、私は次のエラーを取得する:

ConnectionRefusedError:[WinError 10061]ターゲットマシンが積極的に

それを拒否したため接続していません

私はこのsend_mail呼び出しを(python manage.pyシェルを介して)シェルで実行すると、それは完全にうまくいっていて、期待通りにメールを表示します。私がDjangoでエラーをポップアップして実行しようとすると一度だけです。私はまた私のsettings.pyに次のように周りにプレイした

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 
EMAIL_HOST = 'localhost' 
EMAIL_PORT = 1025 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = '' 
EMAIL_USE_TLS = False 

:私は私は私のsettings.pyファイルに入れて設定には次の2セットのどの順列に関係なく、上記のエラーを取得していないことに注意してください前のセット(私は先に自分がローカルホストが動作していないか見てきてると思いますが)を持つファイル、およびこれらの設定の様々なミックス:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 587 
EMAIL_HOST_USER = '[email protected]' # Note I'm using my actual gmail address here in real life 
EMAIL_HOST_PASSWORD = '****' # Note I'm using my actual gmail password here in real life 

DEFAULT_FROM_EMAIL = '[email protected]' # Note I'm using my actual gmail address here in real life 
SERVER_EMAIL = '[email protected]' # Note I'm using my actual gmail address here in real life 

私はCMDプロンプトで次のコマンドを実行していますよ私がlocalhostルートに行くことを試みるときに側にオフ:

python -m smtpd -n -c DebuggingServer localhost:1025 

ここで私は、私は、接続がエラーを拒否しますジャンゴ、で実行しようとしているtest_email.pyファイルです:これもローカルホストを経由して動作していない理由について

from django.core.mail import send_mail,EmailMessage 

from django.conf import settings 
settings.configure() 

# Create your tests here. 

# Email test #1: send email from my personal email to myself 
send_mail(
    'Email Test #1', 
    'Test if I can send email from my personal Gmail account to another email account via Django project.', 
    settings.EMAIL_HOST_USER, 
    ['[email protected]'], 
    fail_silently=False 
    ) 

任意の考えや試してみるべき他のものに対する提案は非常に高く評価されます。

ありがとうございます!

+0

Telnetまたは同様のを使用してsmtp.gmail.com:587に接続することはできますか?一部のポートをブロックするプロキシ/ファイアウォールの背後にいる可能性があります。 – Selcuk

+0

@Selcuk:私もtelnetを使い慣れていますが、「o smtp.gmail.com 587」と入力すると接続できるようです。 –

+0

@Selcuk:localhost:1025へのtelnet接続を開こうとしたが、接続に失敗したことに注意してください... –

答えて

0

gmail smtpサービスに何らかの問題があると思います。 smtpサービスフォームsendgridをお試しください。基本的な使用方法は無料です。私も以前に同じ問題に直面していました。

プロジェクトのsettings.pyで

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_HOST = 'smtp.sendgrid.net' 
EMAIL_HOST_USER = 'sendgridusername' 
EMAIL_HOST_PASSWORD = 'sedgridpasseord' 
EMAIL_PORT = 587 
EMAIL_USE_TLS = True 
DEFAULT_FROM_EMAIL = '[email protected]' 

still error

Try if `smtp` service is working on your your server. 
+0

ありがとう!私はsendgridでアカウントを設定し、あなたが提案した設定で試しましたが、私はまだ同じエラーが発生しています。しかし、私はtelnet経由でsendgridへの接続を開くことができました(Gmailに似ています - 私はTelnet経由で接続できますが、Djangoでは接続できません)。 –

関連する問題