使用PHP发送Mandrill邮件

5
我正在尝试使用Mandrill和PHP发送电子邮件,但无法发送。
我从这里下载了PHP API封装程序:https://packagist.org/packages/mandrill/mandrill Mandrill.php位于我的根目录中,而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->sendTemplate($template_name, $template_content, $message)); 

to

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

它可以工作!


取消注释print_r后,您得到的结果是什么? - Morgan
你尝试过调试吗?你检查了错误日志吗?你检查了发送邮件队列(或者你的服务器使用的其他机制)吗? - Mike Brant
@Morgan 我从这里获取了使用PHP发送电子邮件的代码:https://dev59.com/YGYq5IYBdhLWcg3wcwSE#14486237但我没有使用模板。所以打印语句现在被注释掉了。 - James White
@MikeBrant 我不太确定要做什么样的调试。我在结尾处添加了echo,以确保某些东西正在发生。 - James White
既然你已经弄清楚了你做了什么,那么你应该将你所做的写成一个答案,并接受它作为正确的答案。 - Morgan
1个回答

2

我应该使用的是sendTemplate()函数,而不是调用它。

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

一旦我更改了函数调用,邮件就被发送了。


如果您在答案中展示所有的代码将会很有帮助。因为您注释掉了print_r,所以我无法确定这是修复方法,因为在您的原始代码中它也被注释掉了。 - thatgibbyguy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接