我一直在使用CakePHP的电子邮件课程近一年了。系统一直在发送HTML电子邮件没有问题。两天前,我收到了客户未收到通知的报告。我也注意到我没有收到管理员通知。
我的第一个想法是我的服务器(由GoDaddy托管)发生了变化。我不相信这是我的托管服务提供商,因为我测试了php的raw mail()函数,甚至通过CakePHP的类发送了一封快速文本邮件。我还测试了每个调试模式和错误日志,没有任何迹象表明发生了错误。这是几天前我一直在使用的代码(成功)。在我的应用中,此代码大约相同10次。
$Email = new CakeEmail();
$Email->template('order_status_change', 'default')
->emailFormat('html')
->to($order['Order']['email'])
->subject('blah blah ' . $order['Order']['id'] . ' status change: ' . $status['Status']['label'])
->from(array('myemail@gmail.com' => 'blah blah'))
->viewVars(array(
'id' => $order['Order']['id'],
'firstName' => $order['Order']['first_name'],
'statusLabel' => $status['Status']['label'],
'statusDescr' => $status['Status']['description']
))
->send();
有几点需要注意:
如果我必须切换到文本电子邮件,我会,但我似乎无法理解代码将如何突然停止工作。我唯一改变的是调试模式(我从一开始就一直在做)。
更新
电子邮件再次停止工作,所以我切换到短信。然而,由于一些奇怪的原因,当我在网络中放置一个网址(如http://www.google.com)时,邮件失败了。但是如果我只删除.com那么它将会通过。到底发生了什么事?
更新2
这是我当前的配置,它会发送没有链接的文本电子邮件(当我说链接时我的意思是网址字符串)
class EmailConfig {
public $godaddy = array(
'transport' => 'Smtp',
'host' => 'relay-hosting.secureserver.net',
'port' => 25,
'timeout' => 300,
'log' => true,
'charset' => 'utf-8',
'headerCharset' => 'utf-8'
);
}
我确认Go Daddy不需要身份验证,端口是25。