プログラ生活

プログラム初学者のためのポイントを書いていこうと思います。たまに脇道それた記事もありますが、息抜きだとおもって気長にお付き合いください。

PHPでブラストエンジン(blastengine)からメールを一括送信する②

国内産のメールAPIで送信する案件があったので、紹介します。
今回はは、前回作った一括送信設定に宛先を設定します。

www.pon-x.jp

※SDKもありますが、あえてメソッドをつくりました。

環境

PHP8.2
Laravel10

実装

※以下すべてMailApiController内のメソッドとして書いていきます。

<?php
class MailApiController extends Controller
{
  public function bulk_setting($title, $message){
       
      /// 前回作ったメソッド
  }

////////////////////////////////////////////////////////////////
//次に、作成したメールに対して送信先を設定します。
////////////////////////////////////////////////////////////////

    public function bulk_update($delivery_id, $users){

        $url = "https://app.engn.jp/api/v1/deliveries/bulk/update/$delivery_id";

        // POSTデータ
        $body= [
            "to" => $users
        ];

        $json_body= json_encode($body);
        $json_body= preg_replace("/[^\x01-\x7F]+/", "", $json_body);
        $json_body= mb_convert_encoding($json_body, "UTF-8", "auto");
        
        $user_id="apiuser"; //API接続するユーザーID
        $api_key="apikey"; //API接続するキー
        $str = "$user_id$api_key";
        $token = base64_encode(strtolower(hash('sha256', $str)));//ユーザーIDとキーを使ってTOKENを作成する
        
        // ヘッダー
        $header = [
            "Content-Type: application/json",
            "Authorization: Bearer $token",
        ];



 

            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $json_body);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            $res = curl_exec($curl);
            curl_close($curl); 
            $json = json_decode($res);

            if (isset($json->delivery_id) && is_int($json->delivery_id)){ //送信成功
                return true;
            }

        }catch(\Throwable $e){
            return null;
        }

        return false;
        

    }

}

これで前回作ったdelivery_idに送信先が追加されます。