2016-03-07 31 views
6

Quindi sto usando Laravel 5.1 e sto cercando di integrarmi con Mailgun. Bene, è facile, ma ora sto cercando di inviare custom variables dalla mia applicazione insieme alle mie e-mail.Usando il driver Mailgun di Laravel, come si invia (con garbo) dati e tag personalizzati con la propria e-mail?

In realtà sto passando la nostra applicazione da Mandrill a causa della loro "nuova direzione" e così via. Con loro, potrei fornire variabili e tag tramite le intestazioni delle e-mail, ma con Mailgun, che funziona solo quando si invia tramite SMTP. In Laravel, Mail::send() utilizza una chiamata API, quindi in teoria aggiungerei i metadati con "v:my-custom-data" => "{"this_id": 123}", ma vorrei evitare di modificare le classi di base in questo modo.

Ho anche pensato di utilizzare Bogardo/Mailgun, ma poi avrei dovuto sostituire tutti i Mail::send() s con Mailgun::send(), e poi non ho potuto inviare messaggi di posta elettronica a livello locale (conducente e-mail in base all'ambiente), e quindi l'applicazione sarebbe "sposato" a Mailgun.

Qualcuno ha già fatto questo? Per favore fatemi sapere se non sono chiaro qui.

risposta

15

Ho risolto il mio problema. Mi sbagliavo, POTETE aggiungere variabili personalizzate attraverso il metodo SMTP:

// Send email with custom variables and tags in Laravel 
Mail::send('emails.blank', 
    ['html' => 'This is a test of Mailgun. <strong>How did it work out?</strong>'], 
    function($message) { 
     $message->to('[email protected]'); 
     $message->subject('Mailgun API Test'); 

     $headers = $message->getHeaders(); 
     $headers->addTextHeader('X-Mailgun-Variables', '{"msg_id": "666", "my_campaign_id": 1313}'); 
     $headers->addTextHeader('X-Mailgun-Tag', 'test-tag'); 
    }); 

Il mio test è stato semplicemente inadeguata. Ma molto buono a sapersi. La documentazione non lo spiega davvero.

+0

Come nota a margine, API SparkPost non si comporta in questo modo, pur avendo simile gestione dei metadati. L'ho provato di recente. –

1

Si può solo fare come questo in laravel 5:

Mail::send(['text' => 'my_template'], $data, function ($message) { 
    .. 
    $message->getSwiftMessage()->getHeaders()->addTextHeader('X-Mailgun-Tag', 'my-tag'); 
});