IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Laravel PHP Discussion :

Envoie de mail


Sujet :

Laravel PHP

  1. #21
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Les routes, l'une est un GET l'autre est un POST :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Route::get('mail', ['as' => 'mail', function()
    {
      return view('mail');
    }]);
    Route::post('send/email', 'Controller@mail');
    Ensuite le contrôleur mail() (que j'aurait appelée sendMailConfirm()) c'est lui qui récupère les données de ton formulaire grâce à $request :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function mail(Request $request)
    {
       $sujet = $request->get('sujet'); // l'équivalent de $_POST['sujet']
       Mail::to('andreani.patrice@net-c.fr')->send(new SendMailable($sujet));
     
       return 'Email envoyé';
    }
    Puis dans SendMailable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function __construct($sujet)
        {
            $this->sujet = $sujet;
        }
     
     
        public function build()
        {
            return $this->from('expediteur@gmail.com')->view('email.name')->with('sujet', $this->sujet);
        }

  2. #22
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    D'accord, c'est plus clair.
    Pourquoi request au lieu de get ?

    J'ai modifié le controller (et complété sendmailable) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function mail(Request $request)
    {
       $sujet = $request->get('sujet');
       $destinataire = $request->get('destinataire');
       $message = $request->get('message');
       Mail::to($destinataire)->send(new SendMailable($sujet, $message));
     
       return 'Email envoyé';
    }
    Mais j'ai une erreur bizarre : 419 Sorry, your session has expired. Please refresh and try again.
    Je ne vois pas ce que sa vient faire là cette erreur...
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  3. #23
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Citation Envoyé par lostsoul Voir le message
    Pourquoi request au lieu de get ?
    Parce que c'est le standard de PHP https://www.php-fig.org/psr/psr-7/

  4. #24
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Pour le message de la session qui expire tu dois mettre le token csrf dans ton formulaire.

    Soit :
    Soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="_token" value="{{ csrf_token() }}" >

  5. #25
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    D'accord, merci, je ne savais pas...

    Nouveau msg d'erreur :
    Too few arguments to function App\Mail\SendMailable::__construct(), 2 passed in /5project/app/Http/Controllers/Controller.php on line 79 and exactly 3 expected

    Pourtant, je récupère bien les 3 variables du formulaire et je passe bien 3 variables.

    Le controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function mail(Request $request)
    {
       $sujet = $request->get('sujet');
       $destinataire = $request->get('destinataire');
       $message = $request->get('message');
       Mail::to($destinataire)->send(new SendMailable($sujet, $message));
     
       return 'Email envoyé';
    }
    Et sendmailable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public function __construct($sujet, $destinataire, $message)
        {
            $this->sujet = $sujet;
            $this->destinataire = $destinataire;
            $this->message = $message;
        }
     
    public function build()
        {
            return $this->from('andreani.patrice@net-c.fr')->view('email.name')->with('sujet', $this->sujet)->with('destinataire', $this->destinataire)->with('message', $this->message);
        }
    Il y a un truc que j'ai raté ?
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  6. #26
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    __construct($sujet, $destinataire, $message)
    Tu passes deux variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new SendMailable($sujet, $message)

  7. #27
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Ok, j'ai pensé que mailto avec $destinataire était bon, mais effectivement, je ne récupère pas la variable comme ça...

    Bon, ça veut tjs pas...

    Expected response code 354 but got code "554", with message "554 5.5.1 Error: no valid recipients "
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  8. #28
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Ok, moi je fais comme ceci :

    Je crée une classe qui extends de Mailable dans App\Mail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <?php
     
    namespace App\Mail;
     
    use App\Models\Taches;
    use Illuminate\Bus\Queueable;
    use Illuminate\Mail\Mailable;
    use Illuminate\Queue\SerializesModels;
     
    class TachesMail extends Mailable
    {
        use Queueable, SerializesModels;
        public $tache;
     
        /**
         * Create a new message instance.
         *
         * @return void
         */
        public function __construct($idTache)
        {
            $taches = new Taches();
            $this->tache = $taches->getTache($idTache);
        }
     
        /**
         * Build the message.
         *
         * @return $this
         */
        public function build()
        {    
     
                $this->to($this->tache->email)
                    ->subject($this->tache->nom.' : '.$this->tache->libelle)
                    ->view('mail.taches', ['tache' => $this->tache]);
     
            return;
        }
    }
    Voila dans mon code je récupère des infos en db, notament le mail et différents option, mais cela n'est pas important

    ce qui est intéressant c'est que dans build(), je lui passe un email, un sujet et une vue qui va correspondre à mon mail

    ensuite dans mon controller je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    use App\Mail\TachesMail;
    use Illuminate\Support\Facades\Mail;
     
    public function bidule(){
     
    ....
     
    Mail::send(new TachesMail($taches->id));
     
    ......
    dans mon .env

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    MAIL_FROM_ADDRESS=toto@carambar.be
    MAIL_FROM_NAME=MaitrePylos
    MAIL_DRIVER=mail
    Et ça roule tout seul.

  9. #29
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Je ne comprends pas ce que je fais de mal... Tout me semble correct là. J'ai bien mes 3 variables et mon mail d'envoi.

    Le controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function mail(Request $request)
    {
       $sujet = $request->get('sujet');
       $destinataire = $request->get('destinataire');
       $message = $request->get('message');
       Mail::to($destinataire)->send(new SendMailable($sujet, $destinataire, $message));
     
       return 'Email envoyé';
    }

    Et sendmalaible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public function __construct($sujet, $destinataire, $message)
        {
            $this->sujet = $sujet;
            $this->destinataire = $destinataire;
            $this->message = $message;
        }
     
     
        public function build()
        {
            return $this->from('patrice@net-c.fr')->view('email.name')->with('sujet', $this->sujet)->with('destinataire', $this->destinataire)->with('message', $this->message);
        }
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  10. #30
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Pour ne pas enchaîner les with() tu peux faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function build()
        {
            return $this->from('patrice@net-c.fr')->view('email.name')->with(['sujet'=>$this->sujet, 'destinataire'=>$this->destinataire, 'message'=>$this->message]);
        }

  11. #31
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Malheureusement, tjs le même msg :

    Expected response code 354 but got code "554", with message "554 5.5.1 Error: no valid recipients "

    Je ne comprends pas. Mon .env est configuré avec mailjet et tout semble correct dans les adresses mails...
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  12. #32
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    L'erreur vient maintenant je pense de la configuration du mail et non plus du code.

  13. #33
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    C'est bien ce qu'il me semble aussi, mais je ne vois pas du tout comment corriger ça...
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  14. #34
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Après pas mal de recherches, j'ai trouvé le soucis. Dans config/mail.php

    'username' => env('name'),
    'password' => env('pass'),

    Il faut que ce soit comme ça :
    'username' => env('MAIL_USERNAME', 'name'),
    'password' => env('MAIL_PASSWORD', 'pass'),


    Par contre, le mail que je reçois... En fait, c'est ma page d'accueil semble-t-il que j'ai dans le mail, et pas du tout ce que je met dans le formulaire.
    Nom : mail.png
Affichages : 224
Taille : 16,8 Ko

    Et la page de confirmation, j'ai ça :

    Return [ 'email' => 'patrice@net-c.fr', 'name' => 'patrice', ]; Email envoyé
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  15. #35
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    C'est ma page email/name qui est envoyé en fait...
    Alors que dans le controller, fonction mail, j'ai bien les bonnes infos : sujet, destinataire et message.
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  16. #36
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    Quelqu'un pour m'aider à compendre pourquoi c'est ma page de confirmation qui est envoyée par mail svp ?
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  17. #37
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Tu veux vraiment pas essayer de faire comme moi, je t'ai montré ?

  18. #38
    Membre habitué Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 759
    Points : 184
    Points
    184
    Par défaut
    J'aurais voulu comprendre pk il m'envoie ma page, c'est quand même bizarre...

    Je n'utilise pas de BDD encore, je n'en suis pas là...

    A quoi correspond tâche ? mail.taches c'est la vue où il y a le formulaire d'envoi ?
    ANDRE Ani
    GNU/Linux et Informatique Libre
    https://andre-ani.fr

  19. #39
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    mail.taches correspond bien à une vue, mais pas à celle de mon formulaire, mais bien a ce que je veux envoyer comme mail, c'est le template du mail, ce que le client reçoit.

Discussions similaires

  1. Envoi de mail au format html
    Par Mephyston dans le forum C++Builder
    Réponses: 2
    Dernier message: 22/01/2004, 12h29
  2. Envoi de mail au format Rich-Text
    Par LineLe dans le forum ASP
    Réponses: 4
    Dernier message: 29/10/2003, 16h27
  3. envoi de mail avec attachement de fichier
    Par GMI3 dans le forum Modules
    Réponses: 2
    Dernier message: 24/09/2003, 11h22
  4. Outlook ne se ferme pas après un envoi de mail
    Par Joke dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/06/2003, 17h32
  5. envoi de mail, protocol SMTP langage C
    Par Heimdall dans le forum Développement
    Réponses: 2
    Dernier message: 23/05/2003, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo