sendgridのAPIv3でメール送信(ライブラリ不使用)
v3 Mail Send API概要 - ドキュメント | SendGrid
リファレンスはこちら。
普通に送信
あるアドレスからあるアドレスへ、プレーンテキストなメールを一通送信。
これがベースの書き方。
<? function mailtest() { $url = 'https://api.sendgrid.com/v3/mail/send'; // ★APIのURL $apikey = '********'; // ★発行したAPIkey $mail_to = 'hoge@example.com'; // ★送信先メールアドレス $mail_from = 'fuga@example.com'; // ★送信元メールアドレス $subject = 'subject'; // ★件名 $body = 'body'; // ★本文 $body_type = 'text/plain'; $header = array( 'Authorization: Bearer '.$apikey, 'Content-Type: application/json', ); $content = array( 'personalizations' => array( array( 'to' => array( array( 'email' => $mail_to, ), ), 'subject' => $subject, ), ), 'from' => array( 'email' => $mail_from, ), 'content' => array( array( 'type' => $body_type, 'value' => $body, ), ), ); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($content)); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, true); $response = curl_exec($curl); curl_close($curl); }
HTMLメールにする
$body_type = 'text/plain';
を
$body_type = 'text/html';
に変更。以上。
もっと丁寧にやるなら、
'content' => array( array( 'type' => $body_type, 'value' => $body, ), ),
を
'content' => array( array( 'type' => 'text/plain', 'value' => 'プレーンテキスト用本文', ), array( 'type' => 'text/html', 'value' => 'HTML用本文', ), ),
こうやって分ける。
(text/htmlで受信できないメーラーへの配慮)
ファイルを添付する
content等と同じ階層に以下をくっつける。
'attachments' => array( array( 'content' => base64_encode(file_get_contents('ファイルパス')), 'type' => "application/text", //非必須 'filename' => "test.txt", ), ),