J'essaie d'envoyer un e-mail depuis mon application django dans docker et j'obtiens l'erreur suivante :
OSError at /accounts/mail/
[Errno 99] Address not available
Request Method: GET
Request URL: https://localhost:8000/accounts/mail/
Django Version: 2.2.5
Exception Type: OSError
Exception Value:
[Errno 99] Address not available
Journal du serveur Web :
web\_1 | OSError: \[Errno 99\] Address not available
web\_1 | \[17/Sep/2019 19:21:35\] **"GET /accounts/mail/ HTTP/1.1" 500 108369**
Mon environnement : Ubuntu 18.04 Docker Django + Gunicorn Postfix
Je n'ai aucun problème pour envoyer un e-mail en dehors de Docker, en local. Je suppose qu'il pourrait y avoir un problème avec le port smtp à l'intérieur de docker, mais je ne sais pas comment le résoudre. J'ai essayé avec postfix - même erreur.
Voir le code de django :
from django.core.mail import EmailMessage # didn't work also with send_mail
def email(request):
mail_subject = 'Activate your account'
message = 'test'
to_email = 'mail@mail'
email = EmailMessage(
mail_subject, message, to=[to_email]
)
email.send()
return redirect('index')
Une partie de mon fichier docker-compose.
version: '3.3'
services:
web:
build: ./app
command: python manage.py runsslserver 0.0.0.0:8000
...
ports:
- 8000:8000
- 587:587
- 25:25
env_file: .envdev
...
postfix:
image: juanluisbaptiste/postfix:latest
expose:
- "25"
env_file:
- .envpostfix
restart: always
volumes:
- "/etc/localtime:/etc/localtime:ro"
...
Fichier .env de Docker :
EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_USE_TLS=True
EMAIL_HOST=smtp.gmail.com
EMAIL_HOST_USER=***
EMAIL_HOST_PASSWORD=***
EMAIL_PORT=587
Mes paramètres postfix :
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=***
SMTP_PASSWORD=***
SERVER_HOSTNAME=127.0.0.1