2014-02-14 18 views
13

nachdem ich in der Mailgun-Dokumentation keine Lösung für mein Problem gefunden habe, werde ich erklären, wonach ich suche.Wie verschicke ich HTML Emails mit Mailgun?

Heute benutze ich phpList, um meinen Newsletter zu versenden (Es funktioniert perfekt!), Ich habe HTML-Seiten, die ich einfach in die phpList-Anwendung einfüge, um sie zu versenden. (Ich verwende SMTP-Methode, um Nachrichten zu senden). Ich frage mich, ob ich dasselbe mit mailgun machen kann (ganz sicher, aber wie?), Ist es möglich, einfach den Pfad meiner HTML-Seiten einzuschließen, um es zu versenden? (Ich habe kein Interesse, meinen HTML-Code in das Skript einzugeben, es muss in dem Pfad sein, sonst habe ich kein Interesse daran, Mailgun zu verwenden).

Werfen Sie einen Blick auf meine mailgun PHP-Code wie folgt:

$result = $mgClient->sendMessage("$domain", 
      array('from' => 'My Business Name <[email protected]>', 
       'to'  => '[email protected], [email protected], [email protected]', 
       'subject' => 'Issue Feb 2014', 
       'text' => 'Your mail do not support HTML', 
       'html' => '<html>Inline image: <img src="cid:Pad-Thai-1.jpg"></html>', 
       'recipient-variables' => '{"[email protected]": {"first":"Name-1", "id":1}, "[email protected]": {"first":"Name-2", "id": 2}}'), 
      array('inline' => 'Pad-Thai-1.jpg')); 

ich das Array-Element 'html' genannt haben, würde Ich mag den Weg meiner HTML-Seite schließen (falls nicht möglich, wo kann ich setzen es?). Ich kann nicht meinen ganzen HTML-Code in dieses HTML-Array-Element einfügen, weil es so umfangreich ist.

Aber mailgun behaupten, einfach und groß zu sein, das ist das Motiv, das ich ändern möchte.

+0

wirklich mit mailgun gestapelt! Schmerzen im Arsch API! – B4NZ41

Antwort

29

Ich habe externe HTML-Vorlage auf diese Weise verwendet. Es kann dir helfen.

$html = file_get_contents('my_template.html'); // this will retrieve the html document 

und dann:

$result = $mgClient->sendMessage("$domain", 
     array('from' => 'My Business Name <[email protected]>', 
      'to'  => '[email protected], [email protected], [email protected]', 
      'subject' => 'Issue Feb 2014', 
      'text' => 'Your mail do not support HTML', 
      'html' => $html, 
      'recipient-variables' => '{"[email protected]": {"first":"Name-1", "id":1}, "[email protected]": {"first":"Name-2", "id": 2}}'), 
     array('inline' => 'Pad-Thai-1.jpg')); 

prüfen diese Zeile:

'html' => $html, 
+2

Ich habe das gleiche getan wie du und jetzt funktioniert es gut! $ issue = file_get_contents ('http: //xxxx.html'); $ batchMsg-> setHtmlBody ($ issue); Ich werde Ihre Antwort als richtig akzeptieren! Vielen Dank. – B4NZ41

+1

Wie erreicht man dies mit JavaScript? – Anirudh

+0

Sie können dies erhalten, indem Sie Ajax Anfrage senden. – israr

2

einen Link zu Mailgun Dokumentation Hinzufügen. Dies half mir beim Erstellen von HTML- und MIME-Nachrichten. https://documentation.mailgun.com/api-sending.html#examples

Per Dokumentation:

# Include the Autoloader (see "Libraries" for install instructions) 
require 'vendor/autoload.php'; 
use Mailgun\Mailgun; 

# Instantiate the client. 
$mgClient = new Mailgun('YOUR_API_KEY'); 
$domain = "YOUR_DOMAIN_NAME"; 

# Make the call to the client. 
$result = $mgClient->sendMessage($domain, array(
    'from' => 'Excited User <[email protected]_DOMAIN_NAME>', 
    'to'  => '[email protected]', 
    'cc'  => '[email protected]', 
    'bcc'  => '[email protected]', 
    'subject' => 'Hello', 
    'text' => 'Testing some Mailgun awesomness!', 
    'html' => '<html>HTML version of the body</html>' 
), array(
    'attachment' => array('/path/to/file.txt', '/path/to/file.txt') 
));