2016-03-07 17 views
6

Vì vậy, tôi đang sử dụng Laravel 5.1 và cố gắng tích hợp với Mailgun. Vâng, thật dễ dàng, nhưng bây giờ tôi đang cố gắng gửi custom variables từ ứng dụng của tôi cùng với email của tôi.Sử dụng trình điều khiển Mailgun của Laravel, làm thế nào để bạn (duyên dáng) gửi dữ liệu và thẻ tùy chỉnh bằng email của bạn?

Tôi đang thực sự chuyển đổi ứng dụng của mình sang Mandrill vì "hướng mới" của chúng và những thứ như vậy. Với chúng, tôi có thể cung cấp các biến và thẻ thông qua các tiêu đề email, nhưng với Mailgun, nó chỉ hoạt động khi bạn gửi qua SMTP. Trong Laravel, Mail::send() sử dụng một cuộc gọi API, vì vậy trong lý thuyết tôi muốn thêm siêu dữ liệu ở đó với "v:my-custom-data" => "{"this_id": 123}", nhưng tôi muốn tránh thay đổi các lớp lõi như thế.

Tôi cũng xem xét sử dụng Bogardo/Mailgun, nhưng sau đó tôi phải thay thế tất cả Mail::send() s bằng Mailgun::send() và sau đó tôi không thể gửi email cục bộ (trình điều khiển email dựa trên môi trường) và sau đó ứng dụng sẽ "kết hôn" với Mailgun.

Mọi người đã làm điều này trước đây? Xin vui lòng cho tôi biết nếu tôi không rõ ràng ở đây.

Trả lời

15

Tôi đã khắc phục sự cố của riêng mình. Tôi đã sai, BẠN CÓ THỂ thêm các biến tùy chỉnh thông qua phương thức 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'); 
    }); 

thử nghiệm của tôi là chỉ không đầy đủ. Nhưng rất tốt để biết. Tài liệu này không thực sự giải thích điều đó.

+0

Là một mặt lưu ý, API SparkPost của không cư xử theo cách này, mặc dù có xử lý siêu dữ liệu tương tự. Tôi đã thử nó gần đây. –

1

Bạn chỉ có thể làm như thế này trong Laravel 5:

Mail::send(['text' => 'my_template'], $data, function ($message) { 
    .. 
    $message->getSwiftMessage()->getHeaders()->addTextHeader('X-Mailgun-Tag', 'my-tag'); 
}); 
Các vấn đề liên quan