Bonjour à tous,
Je viens car je commence a ne plus vraiment savoir ou ni quoi chercher... J'ai installer en docker un IA pour surveiller mes impressions 3D (Obico Server : https://www.obico.io/docs/server-guides/install/). D'un point de vue techno, au dela de l'IA, il y a un Django qui sert à héberger le site + envoyer les mails. C'est cette dernière fonctionnalité qui ne fonctionne pas (et à priori, uniquement chez moi... vu qu'on ne doit pas etre nombreux a utiliser un DSM pour ca).
Côté Container, l'install est fait full SSH (je ne pense pas qu'il y ait un docker dispo sur la commu).
Ce qui ne fonctionne pas:
- Les envois de mails qui utilisent les fonctionnalités de Django, voici la def de la fonction:
def send_emails(self,
user: UserContext,
subject: str,
mailing_list: str,
template_path: str,
ctx: Dict,
img_url: str = None,
verified_only: bool = True,
attachments: Optional[List] = None)
Et celle du UserContext:
def get_user_context(self, user: User) -> UserContext:
return UserContext(
id=user.id,
email=user.email,
syndicate_name=user.syndicate.name if user.syndicate else '',
first_name=user.first_name,
last_name=user.last_name,
dh_balance=user.dh_balance,
is_pro=user.is_pro,
unsub_token=user.unsub_token,
)
A priori, rien de bien sorcier la dedans...
- Ce qui fonctionne:
Lancer une commande sudo docker-compose exec web ./manage.py shell
taper la commande: from django.core.mail import send_mail
taper la commande: from django.conf import settings
taper la commande
send_mail(
'Test Email from Obico',
'This is a test email sent manually from the Django shell.',
settings.EMAIL_HOST_USER,
['youemail@gmail.com'],
fail_silently=False,
)
Le mail est correctement envoyé et reçu
Après avoir pas mal échangé avec les devs, ils pensent que le problème vient de docker (donc de container manager). Après avoir pas mal cherché sur le net, j'ai rajouté un EXPOSE 587 (pour pouvoir joindre le SMTP google en TLS), rajouté les ports dans la config du container... Mais toujours rien ne part via Django.
Autre précision qui a certainement son importance: je n'ai aucune erreur dans les logs applicatives. Je suppose donc que le script est correctement exécuté mais qu'il y a en effet une configuration de container manager qui bloque l'envoi des mails, mais je ne sais pas laquelle...
Je vous met l'exemple de l'envoi du mail de test depuis l'interface Django:
def send_test_email(modeladmin, request, queryset):
for u in queryset.all():
user_ctx = handler.get_user_context(u)
EmailNotificationPlugin().send_emails(
user=user_ctx,
subject='Test email - it worked!',
mailing_list='test',
template_path='email/test_email.html',
ctx={},
verified_only=False,
)
messages.success(request, 'Test email sent. Check your server logs if you do not see test email in your inbox.')
Et j'ai bien le message Test email sent. Check your server logs if you do not see test email in your inbox. qui est affiché dans Django quand j'exécute la commande d'envoi du mail de test...
Merci d'avance pour votre aide sur ce sujet