web-dev-qa-db-ja.com

Mailchimp APIを使用して、Webサイトでのアクションによってトリガーされたテンプレートトランザクションメールを送信できますか?

現在、MailchimpのAPIをいじっていますが、ドキュメントはあまり明確ではありません。ここに私が実際に欲しいものがあります:

  1. Mailchimpで作成したテンプレートを自分のサーバーに表示します。
  2. 作成した各テンプレートを特定のアクション(ログイン、購読、作成順、または新しいパスワード)に割り当てます。これは私がすでにマンドリルでテストした機能ですが、テンプレートはマンドリルのアカウントに存在します。

オプション1が不可能な場合でも、独自の環境で独自のテンプレートを作成し、そのテンプレートをMailchimpまたはMandrillで送信できますか?

これにMailchimpsサービスを使用するか、自分のサーバーから直接メールを送信する必要がありますか?

現在使用されている機能:

  function tep_mandrill_mail($to_name, $to_email_address, $email_subject, $email_text, $from_email_name, $from_email_address) {

    if (SEND_EMAILS != 'true') return false;
$uri = 'https://mandrillapp.com/api/1.0/messages/send-template.json';

$postString = '{
"key": "xxxxxxxxxxx",
    "template_name": "sometemplatename",
    "template_content": [
        {
            "name": "header",
            "content": "*|HEADERSTUFF|*"
        },
        {
            "name": "main",
            "content": "*|CONTENTSTUFF|*"
        },
        {
            "name": "footer",
            "content": "*|FOOTERSTUFF|*"
        }
    ],
    "message": {
        "subject": "'.$email_subject.'",
        "from_email": "'.$from_email_adress.'",
        "from_name": "'.$from_email_name.'",
        "to": [
            {
                "email": "'.$to_email_address.'",
                "name": "'.$to_name.'"
            }
        ],
        "important": false,
        "track_opens": true,
        "merge": true,

  "merge_vars": [
            {
                "rcpt": "'.$to_email_address.'",
                "vars": [
                    {
                        "name": "HEADERSTUFF",
                        "content": "'.$email_subject.'" 
                    },
                     {
                        "name": "CONTENTSTUFF",
                        "content": "'.$email_text.'"
                    },
                     {
                        "name": "FOOTERSTUFF",
                        "content": "paulvale-foot"
                    }   
                ]
            }
        ],      
        "tags": [
            "password_forgotten"
        ]
    },
    "async": false,
    "ip_pool": "Main Pool"
}';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uri);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
curl_exec($ch);
  }
2
HenryW

あなたが話しているメールの種類は、「ニュースレター」メールではなく「トランザクション」メールです。メインのMailchimp製品は、ニュースレターを送信するためのもので、メーリングリストの全員にほぼ同じメールをすべて同時に送信します。トランザクションメールは、人々が必要とするときに送信され、サイトでのアクションによってトリガーされます。

Mailchimpの主な提供物は、ニュースレターの送信を対象としています。 Mandrill部門は、トランザクションメールを処理するように設定されています。このためにMailchimpを使用している場合、あなたは確かにMandrillを使用したいと思うでしょう。

テンプレートで機能するメールサービスを使用する場合、通常、テンプレートをサーバーに表示する必要はありません。次のようなテンプレートを設定します。

Hello $user,

Your new password is: $password

APIを使用して、メールをサービスに送信するために必要なデータを渡します。

mandrill->send(
    "to" -> "[email protected]",
    "template" -> "new password",
    "user" -> "Bob",
    "password" -> "GXFjTZNy"
);

私は特にMandrillに精通していないので、それらのAPI呼び出しとテンプレート構文は、私がここに投稿したものとは多少異なるように見えます。彼らはのためのドキュメントを持っています

Mandrill APIは、あなたのウェブサイトからのトランザクションEメールに適した選択肢であるように思えます。

事前にテンプレートを指定したくない場合は、アプリケーション 独自のテンプレートを追加 にすることができます。 利用可能なすべてのテンプレートを一覧表示 にする方法もあります。他に何もない場合は、 テンプレートをまったく使用せずにメールを送信する でした。

3