2017-08-01 16 views
1

私は2つのドメインを持つDjangoプロジェクトを持っています。私は両方の電子メールからメッセージを送信できるようにしたい電子メールの送信に2つの異なる電子メールアドレスを使用するにはどうすればよいですか?

<h1>Welcome to {% if site.id==1 %}Domain1{% else %}Domain2</h1> 

send_email(user, '[email protected]' if site.id==1 else '[email protected]', message...) 

私はfrom_emailを追加しようとした私はのように、これら二つのアドレス間で異なることSitesアプリケーションを使用

domain1.com 
domain2.com 

EmailMessageでも動作しません。送信者は '[email protected]'です。

mail = EmailMessage(subject, message, from_email='[email protected]', to=[user_email]) 
mail.send() 

settings.pyは1つだけなので、おそらく1つのSMTPしか設定できません。

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]' 
EMAIL_HOST_PASSWORD = 'pswd' 

これを動作させる方法は分かりますか?

編集:だから私はこの試みた:

with get_connection(
     host=settings.EMAIL_HOST, 
     port=settings.EMAIL_PORT, 
     username='[email protected]', 
     password='mypasswd', 
     use_tls=settings.EMAIL_USE_TLS) as connection: 
    EmailMessage(subject, message, [user.email], 
       connection=connection).send() 

を私はそれをチェックしました - このコードが呼び出されています。 Exceptionは返されませんが、電子メールは送信されません。

私はこのアドレスをテストして、settings.pyの中にグローバル接続として電子メールを送りました。

答えて

2

あなたは自動的に接続を閉じますと使用この

from django.core.mail import get_connection, send_mail 
from django.core.mail.message import EmailMessage 

with get_connection(
    host=<host>, 
    port=<port>, 
    username=<username>, 
    password=<password>, 
    use_tls=<True/False> 
) as connection: 
    EmailMessage(subject, body, from, [to], 
       connection=connection).send() 

ようget_connectionを使用して、settings.pyの設定を上書きすることができます。あなたはconnection.close()

ドキュメントを使って手動で接続を終了する必要がありますあなたと一緒に使用していない場合はここにある - >https://docs.djangoproject.com/en/dev/topics/email/#email-backends

+0

感謝。残念ながら、これは動作しません。 Exceptionは返されませんが、電子メールは送信されません。質問の最後にコードを追加しました。私はそれが呼ばれていると確信していると私は信任状が大丈夫だと確信している。 –

+0

奇妙なことに、私は最近これを使ったプロジェクトでこれを使ってきました。 – Colwin

+1

さて、これで動作します。私は何も変えなかったと思う...おそらく問題を引き起こしたのはgmailだろう。いつものように... –

関連する問題