cakephp 2 CakeEmail 无法发送电子邮件错误
Posted
技术标签:
【中文标题】cakephp 2 CakeEmail 无法发送电子邮件错误【英文标题】:cakephp 2 CakeEmail Could not send email error 【发布时间】:2013-07-14 04:32:49 【问题描述】:我正在尝试让 CakeEmail 正常工作,但我收到“无法发送电子邮件”内部错误。
堆栈跟踪的最后一行是
CORE/Cake/Network/Email/MailTransport.php line 47 -> MailTransport->_mail(string,string,string,string,null)
在我的 email.php 配置中我有
class EmailConfig
public $default = array(
'transport' => 'Mail',
'from' => 'no-reply@xxxxx.com.au'
);
我从表单中收到我的电子邮件地址,并尝试向订阅者发送电子邮件。我的代码如下
$email_addr = $subs_data['Subscriber']['subscriber'];
$Email = new CakeEmail('default');
$Email->emailFormat('html')
->template('welcome')
->to($email_addr)
->subject('New Subscription')
->send();
我做了一些测试,$email_addr 中的值正是来自表单的值,并且是一个有效的电子邮件地址。
我在 View/Emails/html/welcome.ctp 中有一个模板,目前它只是一个非常基本的消息
查看堆栈跟踪和 MailTransport.php 中的第 47 行,我发现错误似乎与“收件人”电子邮件地址有关。我看不出它有什么问题。我看过很多例子,据我所知,我没有做错任何事。
我将不胜感激任何帮助,以便我可以完成此应用程序。
亲切的问候
理查德
【问题讨论】:
它输出什么?公关($email_addr); 您是否将电子邮件库加载到您的控制器或 AppController/ 中? App::uses('CakeEmail', '网络/电子邮件'); 【参考方案1】:您必须在 EmailConfig 中添加更多配置。
看看我的代码:
class EmailConfig
public $fast = array(
'transport' => 'Smtp',
'from' => array('test_mail@gmail.com' => 'Test Mail name sender'),
'host' => 'ssl://smtp.gmail.com',
'port' => 465,
'username' => 'test_mail@gmail.com',
'password' => 'password');
在控制器中:
CakeEmail::deliver('to@gmail.com', 'Subject', 'Content');
就是这样!
【讨论】:
总是你可以从 $fast 变量中删除 'from' 并添加到 CakeEmail::deliver 的第四个参数中,作为数组 您不一定需要 SMTP。但是 - 在大多数情况下 - 建议使用它。mail()
周围的普通 PHP 环境可能没有正确配置。这将适用于所有情况。我赞成这个答案。
我的 PHP 邮件环境运行良好,我可以在一个简单的 PHP 脚本中从命令行发送邮件。我不想或不需要使用 smtp。因此我不需要配置中的额外项目。【参考方案2】:
在 email.php 中尝试以下配置
public $default = array(
'transport' => 'Mail',
'from' => 'abc@my-domain.com',
'charset' => 'utf-8',
'headerCharset' => 'utf-8'
);
【讨论】:
【参考方案3】:您是否将电子邮件库加载到控制器或 AppController/中?
App::uses('CakeEmail', 'Network/Email');
如果您确定您的电子邮件配置是正确的,请尝试在线测试它是否有效。 并尝试使用 smtp 配置您的电子邮件,以确保您的电子邮件正确发送。
public $smtp = array(
'transport' => 'Smtp',
'from' => array('email@test.com' => 'Company name'),
'host' => 'mail.test.com',
'port' => 25,
'timeout' => 30,
'username' => 'email',
'password' => 'password',
'client' => null,
'log' => false,
);
并设置模板看看我的回答here:
Email template not using themed version
【讨论】:
以上是关于cakephp 2 CakeEmail 无法发送电子邮件错误的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 CakePHP Mail 发送电子邮件附件 PDF