使用 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 发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章