Mandrillサービスがアプリケーションと対話するためには、かなり幅広い機能を備えたAPIがあり、主な機能に精通する必要があります。 さらに、1か月あたり最大12,000文字を送信できる基本(無料アカウント)を使用する可能性があります。
APIの使用
Mandrill APIとの対話の実装はPHPで実装されることになっているため、 ここからライブラリ自体を取得します 。 Composer経由のインストールまたは標準インストールを使用できます(必要なモジュールをダウンロード、展開、および接続します)。 2番目のインストールオプションを選択した場合は、ダウンロードしたアーカイブで「src」ディレクトリを見つける必要があります。このディレクトリには、必要なライブラリのファイルとディレクトリが含まれています。
APIを使用できるようにするには、APIキーを取得する必要があります(つまり、すでに登録されていることを意味します)。 アカウントに移動し、メニューの左側にある[設定]項目をクリックすると、[APIキー]セクションにキーが表示されます。
次に、サブアカウントを作成する必要があります。 これを行うには、左側のメニューで[送信]項目をクリックし、対応する設定セクションを開いた後、[サブアカウントの作成]ボタンをクリックします。
レターを送信するには、アカウントで使用できる事前作成済みのテンプレートを使用するか、通常のテキストメッセージの送信に制限することができます。 レターをHTML形式でフォーマットすることもできます。 電子メールを送信するには、 Mandrill_Messagesクラスの次のメソッドが存在します。
- array send (message [、async = false [、ip_pool = null [、send_at = null]]])-パラメーターパラメーターメッセージとして、配列として入力されたデータ構造を表に示すように転送する必要があります。 1 非同期パラメーター-バックグラウンドバッチメッセージ送信を設定します。 ip_poolパラメーターとして、割り当てられたIPアドレスのプールの名前を指定する必要があります。関数プロトタイプの説明からわかるように、このパラメーターはオプションです。 また、最後のsend_atパラメーターとして、レターのスケジュールされた送信のUTCタイムスタンプ形式YYYY-MM-DD HH:MM:SSで時刻を指定できます。 ただし、これには、残高がプラスの有料アカウントが必要です。
- array sendTemplate (template_name、template_content、message [、async = false [、ip_pool = null [、send_at = null]]])-このメソッドは、2つの追加パラメーターの存在が以前のものと異なります。 最初のパラメーターtemplate_nameは、既存のテンプレートの名前を指定します。 また、2番目のパラメーターtemplate_contentは動的コンテンツ要素の配列であり、そのデータ構造は表に記載されています。 2 。 詳細はこちらをご覧ください 。
表1 。 レターを送信するためのデータ構造フィールドの説明
パラメータ | 説明 |
html
ひも | HTMLマークアップコンテンツを含むテキスト。 |
テキスト
ひも | 手紙のテキスト。 |
件名
ひも | 手紙の件名。 |
from_email
ひも | 送信者のメール。 |
from_name
ひも | 送信者の名前。 |
に
配列 | 送信者情報を含む「to」要素の配列。 |
配列 | グローバルテンプレートラベルデータを含む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でエンコードされている必要があります。 |
表2 。 template_contentパラメーターで使用される配列要素の構造
パラメータ | 説明 |
お名前
ひも | ラベルの名前。 |
内容
ひも | タグのコンテンツ。 |
send()メソッドを使用すると、テキストメッセージを送信できます。2番目のメソッドでは、事前に作成されたテンプレートを使用してレターを送信できます。 どちらのメソッドも、表に示されているデータ構造を持つ配列を返します。 3。
表3 。 各受信者の応答構造
パラメータ | 説明 |
メール
ひも | メールアドレス。 |
状態
ひも | 送信ステータス:送信済み、キューイング、スケジュール済み、拒否、または送信はできません。 |
ひも | 手紙の配達の拒否の理由。 拒否、ハードバウンス、ソフトバウンス、スパム、非サブ、カスタム、無効な送信者、無効な、テストモード制限、ルール |
_id
ひも | 送信されたメッセージの一意の識別子。 |
後で気が散らないように、将来のためにすぐにテンプレートを作成します。 これを行うには、既におなじみの左側のメニューで、「アウトバウンド」アイテムをクリックし、適切なセクションに移動した後、「テンプレートの作成」ボタンをクリックします。
ここで、テンプレートの名前を入力するよう求められます。 入力後、「コーディングを開始」ボタンをクリックします。
そして、すでに最終段階で、提案されたフィールドに記入する必要があります。 次に、正しいフィールドに、将来のワイルドカードテンプレートのコードを記述する必要があります。 テンプレートエディタは「HTML」モードである必要があることに注意してください。 必要なすべてのフィールドに入力したら、[公開]ボタンをクリックします。
すべてが設定されたので、手紙を送ることができます。 手紙を送るためのソースコード:
// 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つの方法の結果を以下に示します。 下の画像は、テンプレートを適用した結果を示しています。
使用可能な両方の方法を使用して同じメールを送信しました。 違いを見ることができるようにするため。 例として、画像と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 」のままです。
両方の方法を使用してレターを送信する場合、次の要因を考慮する必要があります。
- send()メソッドを使用する場合:
- 「html」フィールドがデータ構造に示され( 表1を参照)、そこにデータが含まれている場合、「text」フィールドはそれによってブロックされます。
- sendTemplate()メソッドを使用する場合:
- テンプレートエディターでテンプレートの形式が「HTML」の場合(上記を参照)、2つのフィールド「html」と「text」のいずれもテンプレートのテキストとオーバーラップできません。
- テンプレートエディタでテンプレートが「テキスト」形式である場合、送信時のレターテンプレートでの自動置換のために、データ構造内のフィールド「html」および「text」を指定することは禁止されています。 より正確に指定できますが、データを含めることはできません。そうしないと、優先順位の2つのフィールド(html、text)のいずれかで指定されたデータがレターの本文に移動します。
- 「subject」フィールドがテンプレートに入力されていない場合、優先順位はデータ構造内の同じ名前のフィールド(存在する場合)に移動します( 表1を参照)。
考えられるエラーのリストは表に含まれています。 4。
表4 。 レターの送信時に発生する可能性のあるエラーのリストが失敗した
Invalid_Key | 無効なAPIキー。 |
Unknown_Message | メッセージIDは存在しません。 |
ValidationError | 呼び出し中に渡されたパラメーターが正しくありません。 |
一般的なエラー | リクエスト中にエラーが発生しました。 |