Mandrill Email Service APIの使用

MandrillはMailChimpの強力なメールサービスです。 電子メール通知を送信するために、同じタイプのサービスのファミリーから使用および構成するのが最も便利な方法の1つです。 このサービスは、商業的な性質の特定の文字を送信するだけでなく、個人サイトからの定期的な通知にも使用すると便利です。 個人サイトから送信された電子メールはスパムされる可能性があるため、これはこのサービスのサービスを選択する決定を支持する別のプラスになります。



Mandrillサービスがアプリケーションと対話するためには、かなり幅広い機能を備えたAPIがあり、主な機能に精通する必要があります。 さらに、1か月あたり最大12,000文字を送信できる基本(無料アカウント)を使用する可能性があります。



APIの使用



Mandrill APIとの対話の実装はPHPで実装されることになっているため、 ここからライブラリ自体を取得しますComposer経由のインストールまたは標準インストールを使用できます(必要なモジュールをダウンロード、展開、および接続します)。 2番目のインストールオプションを選択した場合は、ダウンロードしたアーカイブで「src」ディレクトリを見つける必要があります。このディレクトリには、必要なライブラリのファイルとディレクトリが含まれています。



APIを使用できるようにするには、APIキーを取得する必要があります(つまり、すでに登録されていることを意味します)。 アカウントに移動し、メニューの左側にある[設定]項目をクリックすると、[APIキー]セクションにキーが表示されます。



Mandrill -  API








次に、サブアカウントを作成する必要があります。 これを行うには、左側のメニューで[送信]項目をクリックし、対応する設定セクションを開いた後、[サブアカウントの作成]ボタンをクリックします。











レターを送信するには、アカウントで使用できる事前作成済みのテンプレートを使用するか、通常のテキストメッセージの送信に制限することができます。 レターをHTML形式でフォーマットすることもできます。 電子メールを送信するには、 Mandrill_Messagesクラスの次のメソッドが存在します。







表1 。 レターを送信するためのデータ構造フィールドの説明

パラメータ 説明
html

ひも
HTMLマークアップコンテンツを含むテキスト。
テキスト

ひも
手紙のテキスト。
件名

ひも
手紙の件名。
from_email

ひも
送信者のメール。
from_name

ひも
送信者の名前。


配列
送信者情報を含む「to」要素の配列。
global_merge_vars

配列
グローバルテンプレートラベルデータを含むglobal_merge_vars要素の配列。
merge_vars

配列
テンプレートラベルデータを含むmerge_vars要素の配列。
サブアカウント

ひも
サブアカウントの一意の識別子。
添付ファイル

配列
電子メールに追加する添付ファイルの配列。
画像

配列
レターに追加された画像の配列。
配列パラメーター構造
メール

ひも
メールアドレス。
お名前

ひも
受信者の名前。
タイプ

ひも
タイトルのタイプ。 デフォルトは「to」です。 可能なオプション(to、cc、bcc)。
配列パラメーター構造global_merge_vars
お名前

ひも
変数名、大文字と小文字が区別されます。 変数名は文字「_」で始めることはできません。
内容

ひも
変数の値。
Merge_vars配列パラメーター構造
rcpt

ひも
ローカルワイルドカードが適用される受信者の電子メールアドレス。
vars

配列
ローカルテンプレートラベルデータを含む「vars」要素の配列。 vars配列パラメーターの構造は、global_merge_vars配列パラメーターの構造と同じです。
属性配列パラメーター構造
タイプ

ひも
MIMEタイプの添付ファイル。
お名前

ひも
ファイル名。
内容

ひも
ファイルの内容はbase64でエンコードされている必要があります。
イメージ配列のパラメーター構造。
タイプ

ひも
ファイルのMIMEタイプ -画像である必要があります。
お名前

ひも
ファイル名。
内容

ひも
ファイルの内容はbase64でエンコードされている必要があります。


表2template_contentパラメーターで使用される配列要素の構造

パラメータ 説明
お名前

ひも
ラベルの名前。
内容

ひも
タグのコンテンツ。


send()メソッドを使用すると、テキストメッセージを送信できます。2番目のメソッドでは、事前に作成されたテンプレートを使用してレターを送信できます。 どちらのメソッドも、表に示されているデータ構造を持つ配列を返します。 3。



表3 。 各受信者の応答構造

パラメータ 説明
メール

ひも
メールアドレス。
状態

ひも
送信ステータス:送信済み、キューイング、スケジュール済み、拒否、または送信はできません。
reject_reason

ひも
手紙の配達の拒否の理由。 拒否、ハードバウンス、ソフトバウンス、スパム、非サブ、カスタム、無効な送信者、無効な、テストモード制限、ルール
_id

ひも
送信されたメッセージの一意の識別子。


後で気が散らないように、将来のためにすぐにテンプレートを作成します。 これを行うには、既におなじみの左側のメニューで、「アウトバウンド」アイテムをクリックし、適切なセクションに移動した後、「テンプレートの作成」ボタンをクリックします。



Mandrill -








ここで、テンプレートの名前を入力するよう求められます。 入力後、「コーディングを開始」ボタンをクリックします。



Mandrill -








そして、すでに最終段階で、提案されたフィールドに記入する必要があります。 次に、正しいフィールドに、将来のワイルドカードテンプレートのコードを記述する必要があります。 テンプレートエディタは「HTML」モードである必要があることに注意してください。 必要なすべてのフィールドに入力したら、[公開]ボタンをクリックします。



Mandrill -








すべてが設定されたので、手紙を送ることができます。 手紙を送るためのソースコード:



//   Mandrill require_once ('Mandrill.php'); $mail = new Mandrill('API key'); /*    */ $tpl_con = array( array( 'name' => 'my-label', 'content' => '<h2> </h2>' ) ); $data = array( 'html' => 'It is html text', 'text' => 'It is simple text', 'subject' => 'Hi friend', 'from_email' => 'friend@example.com', 'from_name' => 'Michael', 'to' => array( array( 'email' => 'example@gmail.com', 'name' => 'Lucas', 'type' => 'to' ) ), 'global_merge_vars' => array( array( 'name' => 'NAME', 'content' => 'Lucas' ) ), 'merge_vars' => array( array( 'rcpt' => 'example@gmail.com', 'vars' => array( array( 'name' => 'NAME', 'content' => 'Lucas' ) ) ) ), 'attachments' => array( array( 'type' => 'application/pdf', 'name' => 'test.pdf', 'content' => base64_encode(file_get_contents('test.pdf')) ) ), 'images' => array( array( 'type' => 'image/png', 'name' => 'Smiley.png', 'content' => base64_encode(file_get_contents('Smiley.png')) ) ), 'subaccount' => 'cust-123' ); try { /*    */ $result = $mail->messages->send($data); print_r($result); /*      */ $result = $mail->messages->sendTemplate('example', $tpl_con, $data); print_r($result); } catch(Mandrill_Error $error) { echo 'Error: ' . get_class($error) . ' - ' . $error->getMessage(); }
      
      







2つの方法の結果を以下に示します。 下の画像は、テンプレートを適用した結果を示しています。



Mandrill —








使用可能な両方の方法を使用して同じメールを送信しました。 違いを見ることができるようにするため。 例として、画像とPDFドキュメントをレターに添付しました

動的コンテンツとテンプレートの使用も実証されました。 動的コンテンツのテンプレートを使用する場合の違いは、テンプレートにラベルが指定されることです。

ラベル書き込み形式
* | name | *-名前は​​大文字と小文字を区別しません



このラベルは、今後そのコンテンツに置き換えられます。 また、動的コンテンツの場合、次の属性がHTMLタグで指定されます。

動的コンテンツを設計する
mc:edit = "section-name"、識別子では大文字と小文字が区別されます



ここで、 section-nameは一意の識別子です。つまり、指定された識別子のデータが、それを含むHTMLタグに挿入されます。 また、「global_merge_vars」フィールドで指定されたテンプレートの要素( 表1を参照)が、「merge_vars」構造の「rcpt」フィールドの指定された電子メールアドレスの「merge_vars」構造の「vars」フィールドで指定された対応する要素に置き換えられることも考慮する価値があります」



次の例を考えてみましょう。

 'to' => array( array( 'email' => 'example_1@gmail.com', 'name' => 'Lucas 2', 'type' => 'to' ), array( 'email' => 'example_2@gmail.com', 'name' => 'Lucas 1', 'type' => 'to' ) ), 'global_merge_vars' => array( array( 'name' => 'NAME', 'content' => 'Lucas' ) ), 'merge_vars' => array( array( 'rcpt' => 'example_1@gmail.com', 'vars' => array( array( 'name' => 'NAME', 'content' => 'Alex' ) ) ) )
      
      





ここで、ラベルは「example_1@gmail.com」というアドレスを持つ受信者に対してのみ再定義されます。 したがって、「 NAME 」という名前のテンプレート内のラベルは「 Alex 」という名前に置き換えられます。残りの受信者については、ラベルの内容は「 Lucas 」のままです。

両方の方法を使用してレターを送信する場合、次の要因を考慮する必要があります。



考えられるエラーのリストは表に含まれています。 4。



表4 。 レターの送信時に発生する可能性のあるエラーのリストが失敗した

Invalid_Key 無効なAPIキー。
Unknown_Message メッセージIDは存在しません。
ValidationError 呼び出し中に渡されたパラメーターが正しくありません。
一般的なエラー リクエスト中にエラーが発生しました。



All Articles