2012-04-05 19 views
1

下記のコードを使用して、好ましくは、Sendgrid WebAPIをSMTPまたはSwiftmailerなしで使用したいと考えています。おそらく、長い文字列変数を作成せずに各引用文をエスケープして各変数をエコーする必要なく、動的Webページ全体を 'html' $ params配列に渡すことは可能でしょうか?それぞれの電子メールは大きく異なるので、Sendgridのテンプレート/ mailmergeオプションは私のためには機能しません。ありがとう!Sendgrid Web APIを使用して動的PHP HTMLを送信

は、ここで簡単なHTMLの例です(私の持っているより多くの動的コンテンツ):

<html> 
    <head></head> 
    <body> 
    <p>Hi I'm <?php echo $name; ?>!<br> 
     <span style="color: #999999; font-size: 11px;">How are you?</span><br> 
    </p> 
    </body> 
</html> 

$url = 'http://sendgrid.com/'; 
$user = 'USERNAME'; 
$pass = 'PASSWORD'; 

$params = array(
    'api_user' => $user, 
    'api_key' => $pass, 
    'to'  => '[email protected]', 
    'subject' => 'testing from curl', 
    'html'  => 'testing body', 
    'text'  => 'testing body', 
    'from'  => '[email protected]', 
); 


$request = $url.'api/mail.send.json'; 

// Generate curl request 
$session = curl_init($request); 
// Tell curl to use HTTP POST 
curl_setopt ($session, CURLOPT_POST, true); 
// Tell curl that this is the body of the POST 
curl_setopt ($session, CURLOPT_POSTFIELDS, $params); 
// Tell curl not to return headers, but do return the response 
curl_setopt($session, CURLOPT_HEADER, false); 
curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 

// obtain response 
$response = curl_exec($session); 
curl_close($session); 

// print everything out 
print_r($response); 
+0

SMTPを使用すると何が問題になるのですか? – Borealid

+0

本当に間違っていることはありません... Web APIのメソッドは、他のライブラリを必要とせずにとてもシンプルに見えます。 – Jeff

答えて

1

あなたはSmartyのようなテンプレートエンジンを使用することです必要なHTMLを生成するための最良の方法。あなたが実際に新しいダイナミックHTML本体に電子メールを送信する必要があるときに

include('Smarty.class.php'); 

$smarty = new Smarty; 
$smarty->assign('name', 'Swift'); 
$smarty->assign('name', 'SendGrid'); 
$smarty->assign('address', '123 Broadway'); 

// Store it in a variable 
$emailBody = $smarty->fetch('some_dynamic_template.tpl'); 

そして:だからあなたの例では、どこかで実際に電子メールを送信する上記の、あなたのような何かをするだろう

.... 

$params = array(
    'api_user' => $user, 
    'api_key' => $pass, 
    'to'  => '[email protected]', 
    'subject' => 'testing from curl', 
    'html'  => $emailBody, 
    'from'  => '[email protected]', 
); 

.... 
+0

ありがとうマイク。私は前にSmartyを使ったことはありません。 2番目のPHPファイルを作成し、file_get_contents()を使用して$ emailBody変数に取り込むことで、同様のことを実行できますか? – Jeff

+0

ジェフは、ダイナミックなコンテンツを置き換える必要があるため、それよりもやや厄介です。しかし、ここには、 'file_get_contents'を使った簡単なテンプレートシステムの作成に関する素晴らしい記事があります。http://www.broculos.net/en/article/how-make-simple-html-template-engine-php – Swift

関連する問題