Как отправить электронное письмо из формы django - PullRequest
2 голосов
/ 07 июля 2019

Как видно из названия, я пытаюсь отправить электронное письмо из формы, но не работает:

Как видите:

<form method="POST" action=''>
      {% csrf_token %}
      <div class="control-group form-group">
        <div class="controls">
          <label>Nombre completo:</label>
          <input type="text" class="form-control" id="nombre" required data-validation-required-message="Introduzca su nombre.">
          <p class="help-block"></p>
        </div>
      </div>
      <div class="control-group form-group">
        <div class="controls">
          <label>Asunto:</label>
          <input type="text" class="form-control" id="asunto" required data-validation-required-message="Introduzca el asunto del correo.">
        </div>
      </div>
      <div class="control-group form-group">
        <div class="controls">
          <label>Correo Electrónico:</label>
          <input type="email" class="form-control" id="email" required data-validation-required-message="Introduzca su correo electrónico.">
        </div>
      </div>
      <div class="control-group form-group">
        <div class="controls">
          <label>Mensaje:</label>
          <textarea rows="10" cols="100" class="form-control" id="contenido" required data-validation-required-message="Escriba su mensaje" maxlength="999" style="resize:none"></textarea>
        </div>
      </div>
      <button type="submit" class="btn btn-primary">Enviar mensaje</button>
    </form>

Это мое мнение:

def contact(request):

contactdata = contactData.objects.get()
members = teamMembers.objects.filter(existencia=True)
templates = Templates.objects.get(isSelected=True)
categoria = Clasificacion.objects.filter(existencia=True)
enterprise = enterprisedata.objects.get()
content = request.POST.get('contenido', '')
name = request.POST.get('nombre', '')
email = request.POST.get('email', '')
subject = request.POST.get('asunto', '')
if request.method == 'POST' and email and name:
    send_mail(subject, content, email, ['kike1996@hotmail.com'], fail_silently=False)
contexto = {'categoria':categoria,'templates':templates,'members':members,
            'contactdata':contactdata,'enterprise':enterprise}
return render(request, 'contact/contact.html', contexto)

Я звоню в форму с запросом POST, но ничего не отправляю!.

Надеюсь, вы мне поможете, спасибо!.

Ответы [ 2 ]

2 голосов
/ 08 июля 2019

Если вы хотите отправлять почту, вам необходимо настроить этот параметр в settings.py файле

вашего проекта. Например, если вы хотите отправлять электронную почту через учетную запись Gmail:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = "your gmail address"
EMAIL_HOST_PASSWORD = 'your password'
EMAIL_PORT = '587'

А также не забудьте enable less secure apps в вашей учетной записи Google для отправки электронной почты.И в представлении вы можете попробовать так:

if request.method == 'POST' and email and name:
    send_mail(subject, content, settings.EMAIL_HOST_USER, ['kike1996@hotmail.com'], fail_silently=False)
0 голосов
/ 07 июля 2019

По сути, это строка кода, которая отправляет электронное письмо от djagno.

from django.core.mail import send_mail

send_mail(subject, content, from_email, to_list, fail_silently=False)

Сюжетная и контентная части интуитивно понятны, тогда остается только настроить from_email и to_list (которые могут быть даже 1 электронным письмом в списке).

Вы должны определить следующие переменные в вашем файле настроек.

EMAIL_USE_TLS = True
EMAIL_HOST = smtp.gmail.com
EMAIL_HOST_USER = user@gsuiteaccount.com
EMAIL_HOST_PASSWORD = password
EMAIL_PORT = 587

Django разрешает использовать учетные записи gsuite для отправки электронных писем. Чтобы настроить gsuit, перейдите в настройки своей учетной записи Google, найдите «Безопасность» -> «Разрешения учетной записи» -> «Доступ к менее защищенным приложениям», включите эту опцию.

Об этой опции: https://support.google.com/accounts/answer/6010255 Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...