使用 Mandrill 发送电子邮件模板会给我错误


Sending an email template with Mandrill gives me errors

我正在尝试将我的网站切换到Mandrill,但是我在PHP API上遇到了一些问题。

有两个问题:

  • 首先,它发送电子邮件两次。底部的代码是我拥有的所有代码(除了 PHP 开始和结束标签),我不知道为什么它每次都会发送电子邮件两次。
  • 其次,我收到来自 cURL 的错误,指出未设置 URL。电子邮件正在发送,因此显然设置了URL。错误如下。

这是我的代码:

require_once './libraries/Mandrill.php';
try {
    $mandrill = new Mandrill('myapikey');
    $template_name = 'my-template-slug';
    $template_content = '';
    $message = array(
        'to' => array(
            array(
                'email' => 'a_test@emailaddress.com',
                'name' => 'RecipientsName',
                'type' => 'to'
            )
        ),
        'auto_text' => true,
        'merge_vars' => array(
            array(
                'rcpt' => 'a_test@emailaddress.com',
                'vars' => array(
                    array(
                        'name' => 'USERNAME',
                        'content' => 'user1234'
                    ),
                    array(
                        'name' => 'CONFIRM_CODE',
                        'content' => '19874lahg62378hwsi'
                    )
                )
            )
        )
    );
    $result = $mandrill->messages->sendTemplate($template_name, $template_content, $message);
} catch(Mandrill_Error $e) {
    echo 'A mandrill error occurred: ' . get_class($e) . ' - ' . $e->getMessage();
    throw $e;
}

这是错误:

发生山魈错误:Mandrill_HttpError - API 调用 消息/发送模板失败:未设置 URL!致命错误:未捕获 异常"Mandrill_HttpError",消息为"API 调用 消息/发送模板失败:未设置 URL! /Users/Gavin/Desktop/Web/mandrill-test/libraries/Mandrill.php:126 堆栈跟踪:#0 /Users/Gavin/Desktop/Web/mandrill-test/libraries/Mandrill/Messages.php(160): Mandrill->call('messages/send-t...', Array) #1 /Users/Gavin/Desktop/Web/mandrill-test/index.php(70): Mandrill_Messages->sendTemplate('my-template-slug', Array, Array) #2 /Applications/GoogleAppEngineLauncher.app/Content/Resources/GoogleAppEngine-default.bundle/Content/Resources/google_appengine/google/appengine/tools/devappserver2/php/setup.php(131): require('/Users/Gavin/De...') #3 {main} 扔进去 /Users/Gavin/Desktop/Web/mandrill-test/libraries/Mandrill.php on online 126

Mandrill 劫持链接并注入自己的 URL,以便通过其服务器重新路由链接。这会导致用户在转到正确页面之前在浏览器中看到山魈 URL。

您帐号的"发送默认值"页面上有一个用于点击跟踪的选项(应该是顶部附近打开的跟踪复选框正下方的下拉菜单)。您选择的内容将应用于所有邮件,除非您为点击跟踪提供不同的每封邮件设置。借助 SMTP,您可以使用自定义 SMTP 标头按邮件设置点击跟踪。有关使用 SMTP 标头自定义此标头的详细信息,请参阅此处的 Mandrill 知识库。

<?php
require_once 'Mandrill.php';
$mandrill = new Mandrill('MY API KEY IS USUALLY HERE');
$message = array(
    'subject' => 'Test message',
    'from_email' => 'jwjody@yahoo.com',
    'from_name' => 'Sender person',
    'html' => '<p>this is a test message with Mandrill''s PHP wrapper!.</p>',
    'to' => array(array('email' => 'jwjody@yahoo.com', 'name' => 'Recipient 1')),
    'merge_vars' => array(array(
        'rcpt' => 'recipient1@domain.com',
        'vars' =>
        array(
            array(
                'name' => 'FIRSTNAME',
                'content' => 'Recipient 1 first name'),
            array(
                'name' => 'LASTNAME',
                'content' => 'Last name')
    ))));
//print_r($mandrill->messages->sendTemplate($template_name, $template_content, $message));
echo ("hello");
?>

并发送消息

$mandrill->messages->send($message, $async=false, $ip_pool=null, $send_at=null);