es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Django produce un error cuando intento enviar un correo electrónico. Mensaje de error: [Errno 61] Conexión rechazada.

Estoy tratando de enviar correos electrónicos desde Django. Mis configuraciones de Django son las siguientes:

# Configuraciones de SMTP
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.gmail.com"
EMAIL_HOST_USER = "miemail@gmail.com" # mi dirección de correo electrónico va aquí
EMAIL_HOST_PASSWORD = "clavegenerada" # contraseña generada
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = "fmk@gmail.com"

Sin embargo, cuando intento enviar correos electrónicos desde él, ya sea usando Celery o directamente desde las vistas, muestra el siguiente error: “[Errno 61] Conexión rechazada”.

N.B: Estoy usando una máquina Mac para el desarrollo. ¿Hay alguna razón de seguridad para enviar correos electrónicos usando Mac?

Muestra de código de las vistas:

def enviar_correo_a_todos(request):
    send_mail('Asunto de prueba de Celery',
        'Cuerpo del correo de prueba',
        from_email='remitente@gmail.com',
        recipient_list=['correo_destinatario@gmail.com'],
        fail_silently=False
    )
    return HttpResponse('Enviado')

Muestra de código de la tarea programada de Celery:

@shared_task(bind=True)
def enviar_correo_func(self):
    usuarios = get_user_model().objects.all()
    for usuario in usuarios:
        asunto_correo = "Prueba de Celery"
        mensaje = f"Este es el mensaje de prueba de Celery a las {datetime.now()}"
        correo_destino = usuario.email
        send_mail(asunto_correo,
            mensaje,
            from_email=settings.EMAIL_HOST_USER,
            recipient_list=[correo_destino],
            fail_silently=False
        )
    return 'Hecho'
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error que estás recibiendo, “[Errno 61] Conexión rechazada,” generalmente significa que hay un problema con el servidor SMTP o la conectividad de red. No es específico de macOS ni de ningún otro sistema operativo.

    Aquí tienes algunas cosas que puedes comprobar:

    1. Asegúrate de poder conectarte al servidor SMTP. Intenta conectarte al servidor SMTP usando una herramienta de línea de comandos como telnet o openssl s_client. Por ejemplo, para conectarte al servidor SMTP de Gmail, ejecuta openssl s_client -connect smtp.gmail.com:587 -starttls smtp en tu terminal. Si la conexión tiene éxito, deberías ver la información del certificado del servidor. Si la conexión falla, es posible que debas comprobar la configuración de tu cortafuegos o proxy.
    2. Comprueba tu configuración SMTP. Asegúrate de tener los valores correctos para EMAIL_HOST, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD y EMAIL_PORT. También puedes intentar establecer EMAIL_BACKEND como django.core.mail.backends.console.EmailBackend para ver si los correos electrónicos se envían correctamente. Este backend simplemente escribe el contenido del correo electrónico en la consola en lugar de enviarlo.

    3. Comprueba la configuración de tu cuenta de correo electrónico. Algunos proveedores de correo electrónico (como Gmail) pueden requerir que habilites “aplicaciones menos seguras” o generes una “contraseña de aplicación” para usar SMTP. Asegúrate de que la configuración de tu cuenta sea correcta.

    4. Comprueba la configuración de tu red. Si estás en una red corporativa, asegúrate de que no estás detrás de un cortafuegos que bloquee el tráfico SMTP saliente. Si estás utilizando una VPN, intenta desactivarla temporalmente para ver si eso está causando el problema.

    5. Comprueba la configuración de tu aplicación. Asegúrate de que tu aplicación Django se esté ejecutando correctamente y de que no te falte ninguna dependencia. Verifica los registros de depuración de Django en busca de errores o advertencias relacionados con el envío de correos electrónicos.

    También es importante tener en cuenta que Gmail tiene un límite en la cantidad de correos electrónicos que puedes enviar por día, por lo que si estás intentando enviar muchos correos electrónicos de prueba, es posible que encuentres problemas.

    ¡Espero que esto te ayude a solucionar el problema!

Comments are closed.