Bonjour,
je viens demander un peu d'aide SVP,
car je débute avec Laravel, et j'ai un problème avec mon formulaire de contact :
Lorsque je reçois le mail, ça ne m'écris pas la bonne adresse mail de l'expéditeure.

Par exemple si dans le formulaire, le visiteur tape cette adresse mail :
test@test.fr
en image :

Dans ma boite de réception ça ne me l'affiche pas. ça m'affiche mon adresse mail à moi.
Pourquoi ?
Et si je clique sur répondre, je me répond à moi même...
en image :

Dans l'image ci-dessus, à De: ça devrai normalement m'afficher l'adresse mail de l'expéditeur, pas la mienne.

Pour déboguer, mon .env :

MAIL_USERNAME=sweb@live.fr
MAIL_PASSWORD=mypassword

j'ai essyé de mettre un autre email (au lieu de cellui de ci-dessus),
et ça m'affiche l'autre adresse qui est renseignée dans mon .env...
Je souhaiterai que dans mes réceptions de mail, que ce soit l'adresse mail de l'expéditeur qui soit affichée, pas l'adresse mail qui est dans mon .env.
Comment résoudre ce problème SVP ?

Voici mon code :

/**
* Traitement du formulaire de contact
* (Dans une closure on a pas acces aux var externes)
*/
public function executeContact(ContactFormRequest $request)
{
    $data = [
        'receiver' => 'sb@live.fr',
        'sender' => $request->get('nom'),
        'sender_email' => $request->get('email'),
        'exp_message' => $request->get('message')
    ];

    //dd($data);

    Mail::send( 
                ['emails/contact', 'emails/contact-text'],
                ['data' => $data],
                function($message) use ($data) {
                    $message->from($data['sender_email'], 'Name')  // ici ça ne marche pas
                            ->to($data['receiver'], 'Nom')  // ici ça marche
                            ->subject('Sujet test');
                    //$message->attach(public_path() . '/medias/images/fleche-haut.png');
                }
            );

    return \Redirect::route('contact')->with('message', 'Merci pour votre message !');
}

Si je décomante le dd() de ci-dessu, ça m'affiche ceci:

array:4 [▼
  "receiver" => "eb@live.fr"
  "sender" => "Mr Dupond"
  "sender_email" => "test@test.fr"
  "exp_message" => """
    Bonjour;\r\n
    Alo
    """
]

Merci beaucoup

3 réponses


Lartak
Réponse acceptée

Bonjour.
Ensuite, c'est tout à fait normal, si c'est toi qui envoi l'e-mail, il est tout à fait logique que tu apparaisses en tant qu'expéditeur.
Sinon il serait trop facile de contrefaire des e-mails et de se faire passer pour quelqu'un d'autre.
C'est ton serveur de messagerie avec tes identifiants qui sont utilisés pour l'envoi, et non celui et ceux de l'utilisateur, il est donc logique que tu apparaisses en tant qu'expéditeur de l'e-mail.

Salut,

Déjà logiquement ta méthode $request devrait faire appel à input ($request->input('key')) et non à get

stephweb
Auteur

A ok merci. je ne connaissais pas smtp.
Je viens de régler mon driver en 'mail' au lieu de 'smtp', et ça fonctionne maitenant (sauf en local). Et on peut meme faire un système de pièce jointe facilement avec Laravel, ce que je n'était jamais arrivé à faire en procédural à l'époque.

@SquallX : request->input('key') et request->get('key') me renvoi exactement la mem chose. j'avais mu dans un tuto get(), donc voila pourquoi j'utilisais lui. Mais dans la Doc de Laravel je viens de voir que eux ils suggèrent request->input('key'). Merci de me l'avoir dit.