Messagerie Smtp Ovh sur un projet Symfony

:slight_smile: Bonjour,

Configuration messagerie de l’application via Smtp de l’hébergeur Ovh.

J’ai essayé tous les configurations recommandées des guides de Symfony et celui de l’hébergeur Ovh, j’ai toujours ce message d’erreur quand on souhaite envoyer un message par le formulaire de l’URL Contact de l’appli, on a ce message :

Error
A problem occored while sending the contact request. Please try again later.

Seul le fichier de configuration, Parameters.yml à été modifié pour le moment.

J’ai vu l’existence d’un autre fichier contenant les éléments nécessaires pour la connexion messagerie hébergeur :

XOAuthen2Authenticator.php , qui se trouve dans le :

vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth.

Je me demande si c’est pas dans ce fichier qui devrait être modifier, déclarer les éléments pour le bon fonctionnement de la messagerie de l’application.

Je me pose aussi la question s’Il est nécessaire d’installer, d’ajouter un bundle sylius/mailer, peut être qu’il est déjà inclus, installé dans l’installation initiale ?

J’ai pu mettre ce projet en ligne, ça l’air tous fonctionner, reste la partie Messagerie via formulaire de contact.

Pour que vous ayez une idée, je me permet de vous partager, de vous envoyer les contenus de ces 2 fichiers.

Parameters.yml :

   mailer_transport: smtp
   mailer_host: ssl0.ovh.net #NS0.OVH.NET  #ssl0.ovh.net
   mailer_port: 587 #465 ou 25
   mailer_user: ###########################
   mailer_password: ###########################

XOAuthen2Authenticator.php :

<?php

/*
 * This file is part of SwiftMailer.
 * (c) 2004-2009 Chris Corbyn
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

/**
 * Handles XOAUTH2 authentication.
 *
 * Example:
 * <code>
 * $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls')
 *   ->setAuthMode('XOAUTH2')
 *   ->setUsername('YOUR_EMAIL_ADDRESS')
 *   ->setPassword('YOUR_ACCESS_TOKEN');
 * </code>
 *
 * @author xu.li<AthenaLightenedMyPath@gmail.com>
 *
 * @see        https://developers.google.com/google-apps/gmail/xoauth2_protocol
 */
class Swift_Transport_Esmtp_Auth_XOAuth2Authenticator implements Swift_Transport_Esmtp_Authenticator
{
    /**
     * Get the name of the AUTH mechanism this Authenticator handles.
     *
     * @return string
     */
    public function getAuthKeyword()
    {
        return 'XOAUTH2';
    }

    /**
     * Try to authenticate the user with $email and $token.
     *
     * @param Swift_Transport_SmtpAgent $agent
     * @param string                    $email
     * @param string                    $token
     *
     * @return bool
     */
    public function authenticate(Swift_Transport_SmtpAgent $agent, $email, $token)
    {
        try {
            $param = $this->constructXOAuth2Params($email, $token);
            $agent->executeCommand('AUTH XOAUTH2 '.$param."\r\n", array(235));

            return true;
        } catch (Swift_TransportException $e) {
            $agent->executeCommand("RSET\r\n", array(250));

            return false;
        }
    }

    /**
     * Construct the auth parameter.
     *
     * @see https://developers.google.com/google-apps/gmail/xoauth2_protocol#the_sasl_xoauth2_mechanism
     */
    protected function constructXOAuth2Params($email, $token)
    {
        return base64_encode("user=$email\1auth=Bearer $token\1\1");
    }
}

Peut on modifier, déclarer ce fichier dans la balise

   $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls')
   ->setAuthMode('XOAUTH2')
   ->setUsername('YOUR_EMAIL_ADDRESS')
   ->setPassword('YOUR_ACCESS_TOKEN');

Je suis un peu perdu, j’ai cru comprendre que Smtp n’est plus accepté par Ovh, qu’il est recommandé de passer par la fonction phpmail(), l’appli est conçu en Smtp pour l’ensemble de la messagerie de l’application. Et je n’ai pas très envie de m’aventurer, de modifier les codes d’origine de l’application.

J’ai besoin d’une confirmation, la possibilité d’utiliser Smtp d’Ovh et trouver la faille de cette liaison de la messagerie smtp Ovh avec l’application.

Merci d’avance,

Oui tu peux passé par gmail pour envoyer tes mails mais attention à la mise en spam (il faut autoriser les serveurs gmail à envoyer des mails en ton nom, SPF et DKIM sont tes amis).

Sinon tu peux passer par la fonction mail de php avec swiftmailer
La doc de Symfony le dit ici : https://symfony.com/doc/current/email.html
Le paramètre transport défini à mail fait ça