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

Symfony PHP Discussion :

Swiftmailer piece jointe générée dynamiquement


Sujet :

Symfony PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Swiftmailer piece jointe générée dynamiquement
    Bonjour à tous, j'ai une petite question, j'essaie de créer un modèle qui permet d'imprimer une lettre standard avec à l'intérieur les informations du client. J'ai déjà fait une action pour envoyer des courriels qui fonctionnent mais lorsque j'essaie d'envoyer ce courrier, il ne fonctionne pas, Il doit y avoir un problème sur le côté de la pièce jointe. J'utilise actuellement Sonata Admin on Symphony 3.3. Donc, à la réception de ce courrier, nous pouvons ouvrir le html de la pièce jointe, puis imprimer la page html. Pensez-vous que cela peut fonctionner ? Que faire pour le faire fonctionner ? Cette solution est-elle viable? Je ne vois aucune autre .... Vous pouvez trouver mon code ici:

    ClientAdmin.php :

    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
    public function configureBatchActions($actions)
    {
    if (
        $this->hasRoute('edit') && $this->hasAccess('edit') &&
        $this->hasRoute('delete') && $this->hasAccess('delete')
    ) {
        $actions['send_mail'] = [
            'label' => 'Send E-mail',
            'ask_confirmation' => true
        ];
    }
     
    {
    $actions['send_letter'] = [
        'label' => 'Send Letter',
        'ask_confirmation' => true
    ];
    }
     
    return $actions;
    ClientAdminController.php :

    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
    42
    43
    44
    45
    46
    47
    class ClientAdminController extends BaseController
    {
     
     
    public function batchActionSendLetter(ProxyQueryInterface $query)
    {
        $this->admin->checkAccess('batchDelete');
     
        try {
            $clients = $query->execute();
     
            $this->sendLetter($clients);
     
            $this->addFlash('sonata_flash_success', 'E-mail send');
        } catch (ModelManagerException $e) {
            $this->handleModelManagerException($e);
            $this->addFlash('sonata_flash_error', 'Error');
        }
     
        return new RedirectResponse($this->admin->generateUrl(
            'list',
            ['filter' => $this->admin->getFilterParameters()]
        ));
    }
     
    public function sendLetter($clients)
    {
     
     
        foreach ($clients as $client) {
            $data = \Swift_Attachment::fromPath('attach.html.twig', 'application/html');}
     $message = \Swift_Message::newInstance()
                ->setSubject("Test")
                ->setFrom(' mymail')
                ->setTo('mymail@')
                ->setBody(
                    $this->renderView('sendmail.html.twig',
                        array('client' => $client)),
                    'text/html');
            $message->attach($data);
     
            $this->get('mailer')->send($message);
        return $this->redirect('/admin/dashboard');
     
    }
     
    }
    service.yml :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    admin.clients:
        class: AppBundle\Admin\ClientAdmin
        tags:
            - { name: sonata.admin, manager_type: orm,group : Register, label: Clients, show_mosaic_button: false}
        arguments:
            - ~
            - AppBundle\Entity\Client
            - AppBundle:ClientAdmin
        calls:
            - [ setTemplate, ['edit', "print.html.twig"]]

    attach.html.twig :


    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
    <script>
        var win = window.open();
        var output = '';
        var print = function() {
                output =
                    '<div> Dear ' +
                    'this is a letter to you.<br/>' +
                    'Yours sincerely, .... '+
                    '{{ client.surmane }} <br/>' +
                    '{{ client.address }}</div>'+
                    '<div style="page-break-after:always"></div>';
            win.document.write(output);
        }
        print();
    </script>

    Le probleme que je rencontre c'est que je dois concaténer dans $data des fichiers HTML pour que ça marche mais je ne sais pas comment faire et si c'est possible.

    Merci d'avance, si vous avez besoin de quelque chose d'autre, demandez j'essaierai de vous le fournir.

  2. #2
    Nouveau membre du Club
    Profil pro
    dev
    Inscrit en
    Décembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Décembre 2009
    Messages : 31
    Points : 29
    Points
    29
    Par défaut
    Tu veux insérer plusieurs html à la suite?

    Tu peux faire une vue qui inclue d'autre vues :

    Vue sendmailAll.html.twig :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    {% include 'sendmail.html.twig' with { client: client } %}
    {% include 'sendmail2.html.twig' with { other: other } %}
    Et ensuite inclure la vue principale :

    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
     
    public function sendLetter($clients)
    {
     
     
        foreach ($clients as $client) {
            $data = \Swift_Attachment::fromPath('attach.html.twig', 'application/html');}
     $message = \Swift_Message::newInstance()
                ->setSubject("Test")
                ->setFrom(' mymail')
                ->setTo('mymail@')
                ->setBody(
                    $this->renderView('sendmailAll.html.twig',
                        array('client' => $client, 'other' => array('test' => 1))),
                    'text/html');
            $message->attach($data);
     
            $this->get('mailer')->send($message);
        return $this->redirect('/admin/dashboard');
     
    }

Discussions similaires

  1. tSendMail piece jointe "dynamique"
    Par B4sti3n dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 11/05/2010, 19h35
  2. [C#] Mail piece jointe
    Par alexischmit dans le forum ASP.NET
    Réponses: 11
    Dernier message: 04/07/2005, 16h08
  3. [VB6] attacher un pièce jointe à un email via VB
    Par bytedigger dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 16/07/2004, 09h35
  4. piece jointe à mettre dans outlook
    Par Tierisa dans le forum VBA Access
    Réponses: 52
    Dernier message: 21/10/2003, 15h32
  5. Indy - email, html et piece jointe
    Par nut62 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 13/12/2002, 10h25

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