cakehp2 CakeEmail无法发送电子邮件错误


cakephp 2 CakeEmail Could not send email error

我正在尝试让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行,我发现错误似乎与"收件人"电子邮件地址有关。不过我看不出它有什么毛病。我看了很多例子,据我所知,我没有做错任何事。

如果能帮我完成申请,我将不胜感激。

向致以诚挚的问候

Richard

您必须在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');

就是这样!

在email.php 中尝试以下配置

public $default = array(
    'transport' => 'Mail',
    'from' => 'abc@my-domain.com',
    'charset' => 'utf-8',
    'headerCharset' => 'utf-8'
);

您是否将电子邮件库加载到控制器或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,
            
    );


对于设置模板,请查看此处的答案:

电子邮件模板未使用主题版本