Envoi de mail depuis un SMTP Office365

Bonjour,

J’essaie d’envoyer des mails via un SMTP Office365, mais j’obtiens des erreurs, que j’utilise « SMTP/SMTPS socket library » ou « Swift Mailer socket library ».

Mon environnement :

  • Version: 9.0.0, 8.0.2, 8.0.3, 8.0.4 (I didn’t test with 8.0.1)
  • OS: Debian 9/Stretch (from docker image)
  • Web server: nginx
  • PHP: 7.1.26 (from docker image)
  • Database: MySQL Percona 5.7
  • Docker image: monogramm/docker-dolibarr:9.0-fpm

Quand je choisis la méthode « SMTP/SMTPS socket library », j’obtiens une erreur du serveur SMTP Office365 :

Failed to send mail (sender=My Company , [email protected])
Error [120]: Ran into problems sending Mail. Response: 501 5.5.4 Invalid domain name [AM6PR03CA0010.eurprd03.prod.outlook.com] Error [126]: 'tls://smtp.office365.com' does not support authenticated connections.

La première méthode ne fonctionnant pas, je choisis la méthode « Swift Mailer socket library », mais j’obtiens une nouvelle erreur :

 Fatal error: Uncaught Error: Class 'Egulias\EmailValidator\Exception\CharNotAllowed' not found in /var/www/html/includes/swiftmailer/egulias/email-validator/EmailValidator/Parser/DomainPart.php:178
Stack trace:
#0 /var/www/html/includes/swiftmailer/egulias/email-validator/EmailValidator/Parser/DomainPart.php(135): Egulias\EmailValidator\Parser\DomainPart->checkNotAllowedChars(Array)
#1 /var/www/html/includes/swiftmailer/egulias/email-validator/EmailValidator/Parser/DomainPart.php(60): Egulias\EmailValidator\Parser\DomainPart->doParseDomainPart()
#2 /var/www/html/includes/swiftmailer/egulias/email-validator/EmailValidator/EmailParser.php(49): Egulias\EmailValidator\Parser\DomainPart->parse('1550585019.swif...')
#3 /var/www/html/includes/swiftmailer/egulias/email-validator/EmailValidator/Validation/RFCValidation.php(30): Egulias\EmailValidator\EmailParser->parse('1550585019.swif...')
#4 /var/www/html/includes/swiftmailer/egulias/email-validator/EmailValidator/EmailValidator.php(37): Egulias\EmailValidator\Validation\RFCVali in /var/www/html/includes/swiftmailer/egulias/email-validator/EmailValidator/Parser/DomainPart.php on line 178

Si je rafraîchis la page (F5), j’obtiens une autre erreur :

Failed to send mail (sender=My Company , [email protected])
Expected response code 250 but got code '554', with message '554 5.2.0 STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied; Failed to process message due to a permanent exception with message Cannot submit message. 16.55847:3A130000, 17.43559:0000000094000000000000000100000000000000, 20.52176:140F5686000010103C050000, 20.50032:140F56867F17101041050000, 0.35180:0A00AA80, 255.23226:46050000, 255.27962:0A000000, 255.27962:0E000000, 255.31418:0A000000, 16.55847:84000000, 17.43559:00000000A0010000000000001300000000000000, 20.52176:140F56860000101003000136, 20.50032:140F56867F1710100A00DA36, 0.35180:44000000, 255.23226:4800D13D, 255.27962:0A000000, 255.27962:32000000, 255.17082:DC040000, 0.27745:0A003A66, 4.21921:DC040000, 255.27962:FA000000, 255.1494:64000000, 0.38698:77090000, 0.37692:0F010480, 0.44092:00000000, 0.41232:00000000, 0.60208:05000780, 0.37136:05000780, 0.34608:00000000, 0.55056:05000780, 0.42768:37003032, 0.56112:00000000, 0.52807:31373242, 4.33016:DC040000, 7.40748:010000000000010B31343743, 7.57132:000000000000000000000000, 1.63016:32000000, 4.39640:DC040000, 8.45434:8CE098808326DC4CA7B470EECC7FFBF600373A34, 5.10786:0000000031352E32302E313632322E3030303A414D345052303830324D42323330373A34396166623264302D346339342D343935392D626235332D3664643032613033313437620000000000, 255.1750:AF000000, 255.31418:03000336, 0.22753:B4000000, 255.21817:DC040000, 4.60547:DC040000, 0.21966:0A003267, 4.30158:DC040000 [Hostname=AM4PR0802MB2307.eurprd08.prod.outlook.com] '

Voici ma config mail :


Notez aussi que le domaine de l’email n’est pas standard Microsoft (pas « admin @ outlook.com » or « admin @ office365.com »)

Je ne pense pas que c’est un bug de Dolibarr, probablement une config chez moi qui est mal entrée.

Si vous avez des idées ou des pistes pour débugger, n’hésitez pas :slight_smile: .
Merci d’avance !

Bonjour,
Il faut utiliser SwiftMailer
Le nom du smtp est mondomaine.extension.mail.protection.outlook.com
Exchange utilise STARTTLS sur le port 25
Il faut autoriser une application tiers à envoyer des mails dans la console Exchange.
@+

3 « J'aime »

Bonjour,

Merci pour la réponse.
Cependant, j’ai une nouvelle erreur :

example.com est bien sûr le remplacement de mon vrai domaine.

Bonjour,

Voici les paramètres que j’utilise avec succès :

Méthode d’envoi des emails Swift Mailer socket library
Nom d’hôte ou adresse IP du serveur SMTP/SMTPS (Par défaut dans php.ini: localhost) smtp.office365.com
Port du serveur SMTP/SMTPS (Par défaut dans php.ini: 25) 587
Identifiant d’authentification SMTP si authentification SMTP requise (adresse mail d’envoi)
Mot de passe d’authentification SMTP si authentification SMTP requise ********
Utilisation du chiffrement TLS (SSL) Non
Utiliser le cryptage TTS (STARTTLS) Oui
MAIN_MAIL_EMAIL_DKIM_ENABLED Non
Adresse email de l’émetteur pour l’envoi d’emails automatiques (Par défaut dans php.ini: Non défini) (adresse mail d’envoi)
Expéditeur par défaut des e-mails pour les envois manuels (e-mail utilisateur ou de la société) Email institution <(adresse mail d’envoi)>
E-mail utilisé les retours d’erreur (champ « Errors-To » dans les e-mails envoyés) (adresse mail d’envoi)
Envoyer systématiquement une copie cachée des emails envoyés à (adresse mail d’envoi)

Attention, l’adresse mail utilisée ici « (adresse mail d’envoi) » doit être une adresse qui dispose d’une licence Office 365, ça ne peut pas être une adresse générique ou une boite partagée, car elle doit disposer de son propre mot de passe.
Du coup, nous avons pris une licence « Exchange Plan 1 » pour cette adresse générique d’expédition.
Et c’est cette adresse "(adresse mail d’envoi)"qui est répétée dans tous les champs, car l’adresse de l’expéditeur doit être identique à l’adresse d’authentification sur les serveurs d’Office 365.

Cordialement,
Marc

Je vais vérifier quelle licence a ce compte. Merci en tout cas pour la nouvelle piste !

Enfin ! (presque)

Merci vous deux, vos réponses m’ont bien fait avancé.

J’ia essayé avec le SMTP « domain-tld.mail.protection.outlook.com » (et non « domain.tld.mail.protection.outlook.com », « - » -> « . »), ça semble mieux fonctionner :slight_smile: .
Je suis resté sur le port 587 avec STARTTLS.

Seul hic, j’obtiens maintenant le message « No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS ».

C’est un paramètre de sécurité. Regardez du coté de la configuration mail si vous autorisez l’envoi de mail voir dans les constantes accueil/configuration/divers.
@+

Bonjour,

Je me permet un update :

J’ai bien tout configuré comme ci-dessus mais les mails ne partent qu’une fois sur trois.

2 fois sur 3, j’ai ce message d’erreur :

Fatal error: Uncaught Error: Class ‹ Egulias\EmailValidator\Exception\CharNotAllowed › not found in /htdocs/vm.mh-consult.be/htdocs/includes/swiftmailer/egulias/email-validator/EmailValidator/Parser/DomainPart.php:178 Stack trace: #0 /htdocs/vm.mh-consult.be/htdocs/includes/swiftmailer/egulias/email-validator/EmailValidator/Parser/DomainPart.php(135): Egulias\EmailValidator\Parser\DomainPart->checkNotAllowedChars(Array) #1 /htdocs/vm.mh-consult.be/htdocs/includes/swiftmailer/egulias/email-validator/EmailValidator/Parser/DomainPart.php(60): Egulias\EmailValidator\Parser\DomainPart->doParseDomainPart() #2 /htdocs/vm.mh-consult.be/htdocs/includes/swiftmailer/egulias/email-validator/EmailValidator/EmailParser.php(49): Egulias\EmailValidator\Parser\DomainPart->parse(‹ 1570116550.swif… ›) #3 /htdocs/vm.mh-consult.be/htdocs/includes/swiftmailer/egulias/email-validator/EmailValidator/Validation/RFCValidation.php(30): Egulias\EmailValidator\EmailParser->parse(‹ 1570116550.swif… ›) #4 /htdocs/vm.mh-consult.be/htdocs/includes/swiftmai in /htdocs/vm.mh-consult.be/htdocs/includes/swiftmailer/egulias/email-validator/EmailValidator/Parser/DomainPart.php on line 178

Quelqu’un aurait une piste ?

Merci,

Si je rafraîchis la page, ça fini par passer au bout de 3 - 4 fois. Bizarre bizarre :happy:

Bonsoir,
Sur quoi est installé votre Dolibarr ? Apparement LWS. :wink:
Le Uncaught Error:Class … not found semble dire qu’il ne trouve pas des choses.
Avez vous vérifié les logs sur votre serveur pour voir si des fichiers ne sont pas introuvables ou illisibles ?
@+

Bonsoir philazerty et merci pour la réponse.

C’est hébergé sur un mutualisé starter.

Je n’ai pas accès aux logs du serveur…

Merci.

solution dans mon cas :
Swift Mailer socket library
smtp.office365.com
587
STARTTLS

changer la valeur de la constante MAIN_MAIL_ENABLED_USER_DEST_SELECT
mettre « 1 »

mettre votre email (celui utilisé pour la connexion) PARTOUT (copie cachée, retour sur erreur,…)

Bonjour,

Je me permet de relancer le sujet car complètement bloqué, même après avoir essayé les différentes propositions citées ci-dessus.

Je vous expose mon problème : ma configuration de mail est celle présentée ci-dessus :

|Méthode d’envoi d’email | Swift Mailer socket library|
||
|Nom d’hôte ou adresse IP du serveur SMTP/SMTPS | smtp.office365.com|
|Nom d’hôte ou adresse IP du serveur SMTP/SMTPS | 587|
|ID SMTP (si le serveur d’envoi nécessite une authentification) | [email protected]|
|Mot de passe SMTP (si le serveur d’envoi nécessite une authentification) | ********|
|Utilisation du chiffrement TLS (SSL) | Non|
|Utiliser le cryptage TTS (STARTTLS) | Oui|
|Utiliser DKIM pour signer les emails | Non|
|Nom de domaine pour la signature DKIM | |
|Nom du sélecteur DKIM | |
|Clé privée pour générer la signature DKIM | |
||
|Adresse email de l’émetteur pour l’envoi d’emails automatiques | [email protected]|
|Expéditeur par défaut des e-mails pour les envois manuels | Email organization [email protected]|
||
|E-mail utilisé les retours d’erreur (champ « Errors-To » dans les e-mails envoyés) | [email protected]|
|Envoyer systématiquement une copie cachée (Bcc) des emails envoyés à | [email protected]|

L’envoi d’email se passe plutôt bien, tant que l’utilisateur à l’origine de l’envoi d’email est celui dont les credentials sont « [email protected] ».

Le problème réside surtout dans le fait que certains modules de Dolibarr (‹ Demandes de congés › par exemple) envoient des emails au nom de l’utilisateur qui a créé la demande de congés. Et dans ce cas là, ça bloque, car Dolibarr essaie d’envoyer le mail en utilisant l’adresse de l’utilisateur. Et ce, malgré le fait que le champ « Adresse email de l’émetteur pour l’envoi d’emails automatiques » et « Expéditeur par défaut des e-mails pour les envois manuels » soient bien renseignés en utilisant l’adresse email par défaut.

J’ai fait un certain nombre de tests : changé cette adresse par défaut (qui est une boite aux lettres partagée) par mes propres credentials, modifié les autorisations de délégations de boites aux lettres dans la configuration d’Office365 mais rien n’y fait.

Quelqu’un aurait il une bonne méthode pour se sortir de se pétrin ?

Je vous remercie par avance

Bonjour
Il faut bien paramétrer le compte smtp et lui permettre d’envoyer en tant que… dans la console exhange.
A noter que office365 a un service de support !
@+

Bonjour,

Oui, c’est d’ailleurs grâce au service support de Microsoft que j’ai pu correctement configurer mon O365 en SMTP, j’ai publié une procédure étape par étape:

2 « J'aime »

Bonjour

J’ai un module sur le dolistore qui permet d’envoyer les mails avec l’api microsoft et donc sans stocker de mot de passe dans dolibarr. Il permet aussi la synchro bidirectionnelle de l’agenda et des contacts privés.
Il intègre un collecteur de mail semblable à celui de dolibarr qui est en voie de finalisation.

Fred

Bonjour . SVP ou est ce que je me rend pour changer cette valeure

Configuration/divers

Merci pour cette reponse rapise .
j’ai modifié mais helas voici le retour de test :

Échec de l’envoi de l’email (émetteur=Er[email protected], destinataire=xxxxxx)
Failed to authenticate on SMTP server with username ‹ [email protected] › using 2 possible authenticators

SVP pouvez vous partager les details de votre configuration ?