15

電子メールを送信するビューが使用されても何も起こらない場合、Pythonシェルにsend_mail(...)を入力すると、1が返されましたが、電子メールを受信しませんでした。

これは私のsettings.pyです

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'workorbit@gmail.com'
EMAIL_HOST_PASSWORD = 'P@ssw0rd5'
EMAIL_USE_TLS = True

これはビューです:

def send_email(request):
    send_mail('Request Callback', 'Here is the message.', 'workorbit@gmail.com',
        ['charl@byteorbit.com'], fail_silently=False)
    return HttpResponseRedirect('/')
4

3 に答える 3

14

このように設定を調整します。

DEFAULT_FROM_EMAIL = 'workorbit@gmail.com'
SERVER_EMAIL = 'workorbit@gmail.com'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'workorbit@gmail.com'
EMAIL_HOST_PASSWORD = 'P@ssw0rd5'

コードを調整します。

from django.core.mail import EmailMessage

def send_email(request):
    msg = EmailMessage('Request Callback',
                       'Here is the message.', to=['charl@byteorbit.com'])
    msg.send()
    return HttpResponseRedirect('/')
于 2012-04-30T14:32:13.993 に答える
0

ヘッダーインジェクションの防止を気にしない 場合:(気にする必要があります:https ://docs.djangoproject.com/es/1.9/topics/email/#preventing-header-injection 、ただし続行しましょう)

settings.py:_

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'user@gmail.com'
EMAIL_HOST_PASSWORD = 'pass'
EMAIL_USE_TLS = True

views.py例):

from django.views.generic import View
from django.core.mail import send_mail
from django.http import HttpResponse, HttpResponseRedirect

class Contacto(View):
        def post(self, request, *args, **kwargs):
            data = request.POST
            name = data.get('name', '')
            subject = "Thanks  %s !" % (name)
            send_mail(subject, data.get('message', ''), 'user@gmail.com', [data.get('email', '')], fail_silently=False)
        return HttpResponseRedirect('/')

これはメールを送信する危険な方法です

最初にメールを送信しようとすると、送信しないようにアドバイスするGoogleメールが届きます。「安全性の低いアプリ」(https://www.google.com/settings/security/lesssecureapps)を「アクティブ化」して、再試行する必要があります。2回目は動作します。

于 2016-04-06T04:39:39.007 に答える
0

Googleは、メールを中継する必要のあるアプリケーションに使用できるパスワードを生成する方法を提供するようになりました。Webメールを介してログインするために使用するパスワードとは異なります。

Googleにログインして、アプリのパスワードの使用を開始します。これにより、16桁のパスワードを使用して、メール送信機能などのGoogleサービスにアクセスできます。以下を参照してください

https://support.google.com/accounts/answer/185833?hl=en

于 2019-03-24T04:33:04.817 に答える