我正在尝试让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行我发现错误似乎与“到”电子邮件地址有关。我不知道它有什么问题。我已经看了很多例子,据我所知,我没有做错任何事。
我很感激任何帮助,所以我可以完成这个应用程序。
亲切的问候
理查德
答案 0 :(得分: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');
就是这样!
答案 1 :(得分:0)
尝试在email.php中使用以下配置
public $default = array(
'transport' => 'Mail',
'from' => 'abc@my-domain.com',
'charset' => 'utf-8',
'headerCharset' => 'utf-8'
);
答案 2 :(得分:0)
您是否将电子邮件库加载到控制器或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: