Está en la página 1de 2

🔓

Enviar emails
Para enviar correos electrónicos a través de Django, primero se deben añadir las
siguientes variables de configuración en el archivo de configuración del proyecto.

# settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = 'app.email@gmail.com'
EMAIL_HOST_PASSWORD = 'password'

Después se crea el formulario en la plantilla correspondiente. Recuerde definir el


atributo name= en cada etiqueta de entrada, ya que ese será el nombre que se usará
para acceder a los valores ingresados por el usuario.

<form action="{% url 'contact' %}" method="POST">


{% csrf_token %}
<label for="subject">Subject</label>
<input type="text" name="subject" id="subject">

<label for="email">Email</label>
<input type="email" name="email" id="email">

<label for="message">Message</label>
<textarea name="message" id="message"></textarea>

<input type="submit" value="Submit"/>


</form>

Luego, si la solicitud de la vista es POST, es porque se ha enviado el formulario. En


este caso, podemos obtener los valores del formulario por medio de request.POST['key']
en donde la clave corresponde al atributo name= de una etiqueta <input> del formulario.

Enviar emails 1
Para enviar el mensaje por correo electrónico, se debe usar el método send_mail() del
módulo django.core.mail . Este método recibe como parámetros el asunto del mensaje,
el cuerpo del mensaje, el email desde donde se envía el mensaje y una lista con los
emails de destino.

# app/views.py

from django.conf import settings


from django.core.mail import send_mail

def contact(request):
if request.method == 'POST':
subject = request.POST['subject']
message = request.POST['message']
email_from = settings.EMAIL_HOST_USER
email_to = [request.POST['email']]
send_mail(subject, message, email_from, email_to, fail_silently=False)
return render(request, 'academia/success_contact.html')
return render(request, 'academia/contact.html')

Enviar emails 2

También podría gustarte