2016-05-18 6 views
2

私はGmailでsmtpを設定しました。私がsend_mailを使用すると、from電子メールは、その電子メールを受信したアカウントに表示されません。'from_email'が 'send_mail'で表示されないsmtp

Djangoのsettings.py

$ python manage.py shell 

を使用して

# DEFAULT_FROM_EMAIL = '[email protected]' 
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 587 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = '**********' 
EMAIL_USE_TLS = True 

次のように私はメールを送信、

>>> from django.core.mail import send_mail 
>>> send_mail('subject is', 'message is and is not 12342', '[email protected]', ['[email protected]']) 
1 
>>> 

私はある(、Gmailアカウントにこのメールを受信して​​いますsmtpに使用されているのと同じGmailアカウント)が、送信元のメールはsendTo @ gmail.comとして表示されており、fromEmai [email protected]

答えて

1

私は、このビューを使用して問題を解決:

def contact(request): 
    form = ContactForm(data=request.POST or None) 

    if form.is_valid(): 
     subject = form.cleaned_data['sujet'] 
     message = form.cleaned_data['message'] 
     sender = form.cleaned_data['envoyeur'] 

     msg_mail = str(message) + " " + str(sender) 

     send_mail(sujet, msg_mail, sender, ['[email protected]'], fail_silently=False) 

    return render(request, 'blog/contact.html', locals()) 

私が実際にメッセージを送信者の電子メールを追加します。 send_mailから送信者の引数を削除することもできます。送信者の電子メールアドレスを確実に取得するために、EmailFieldを必須にするだけです。

2

GoogleのSMTPサーバーからメールを送信するときは、[送信元]フィールドを変更することはできません。認証用に指定したのと同じアドレスが使用されます。

変更する場合は、独自のメールサーバーか、利用可能な多数のメールAPI /サーバーのいずれかを使用する必要があります。 Sendgrid、MailGunなどが気になる。

+0

この設定は、電子メールの送信者がわからないため、サイトの連絡フォームには使用しません。あれは正しいですか? –

+0

はい、それはgmail smtpサーバーの意図された用途の1つではないためです。 ThunderbirdやAndroid以外の携帯電話のようなサードパーティの電子メールクライアントから電子メールを送信できるのは、それだけです。ウェブサイトには使用しないでください。そのためには、Google Appsサービスを取得する必要があります。 – e4c5

+0

送信者の電子メールを表示する方法は、追加することです。 sendmailオプションのheaders = {'Reply-To':contact_email} –

関連する問題