使用 PHP 使用 Mandrill 发送电子邮件

Posted

技术标签:

【中文标题】使用 PHP 使用 Mandrill 发送电子邮件【英文标题】:Sending email with Mandrill using PHP 【发布时间】:2014-05-04 01:40:12 【问题描述】:

我正在尝试使用 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)); 

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

而且它有效!

【问题讨论】:

取消注释 print_r 后得到什么结果? 你试过调试吗?你检查过你的错误日志吗?您是否检查过您的队列中的 sendmail(或您的服务器使用的任何机制)? @Morgan 我从这里获取了如何使用 PHP 发送的代码:***.com/questions/14473592/… 但我没有使用模板。所以 print 语句现在被注释掉了。 @MikeBrant 我不太确定要进行哪种调试。我把回声放在最后以确保发生了什么。 既然你已经弄清楚你做了什么,你应该写下你做了什么作为你的问题的答案,并接受它作为正确的答案。 【参考方案1】:

我应该使用而不是调用 sendTemplate() 函数

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

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

【讨论】:

如果您将所有代码与答案一起展示,将会很有帮助。因为您注释掉了 print_r,所以我不知道为什么这是修复,因为它会在您的原始代码中被注释掉。

以上是关于使用 PHP 使用 Mandrill 发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Mandrill (php) 发送电子邮件时出错

使用模板发送电子邮件 (Mandrill PHP)

使用 Mandrill api 更改格式发送邮件

使用 smtp mandrill 发送电子邮件的问题

Codeigniter 和 Mandrill api,无法发送电子邮件

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