【问题标题】:Cakephp smtp emails not workingCakephp smtp 电子邮件不起作用
【发布时间】:2017-02-17 13:13:28
【问题描述】:

我使用的是Cakephp 2.6,我在email.php中配置了smtp设置如下,

 public $smtp = array(
    'transport' => 'Smtp',
    'from' => array('support@mywebsite.com'=> 'MYWEBSITE'),
    'host' => 'hostingserver',
    'port' => 587,
    'username' => 'username',
    'password' => 'password',
    'client' => null,
    'log' => false,
    'ssl' => array(
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true
    )
);

在控制器功能中

    $email = "myemail";
    $Email = new CakeEmail("smtp");
    $Email->helpers('Html', 'Form', 'Text');
    $Email->emailFormat('html')
            ->subject('SUB: Notification')
            ->to($email)
            ->from('fromemail', 'MYWEBSITE')
            ->send('My message');

这是我得到的错误

Internal error occured

Stack Trace

CORE/Cake/Network/Email/SmtpTransport.php line 154 → CakeSocket->connect()
CORE/Cake/Network/Email/SmtpTransport.php line 95 → SmtpTransport->_connect()
CORE/Cake/Network/Email/CakeEmail.php line 1161 → SmtpTransport->send(CakeEmail)
APP/Plugin/Admin/Controller/ClientsController.php line 816 → CakeEmail->send(string)
[internal function] → ClientsController->sendemail()
CORE/Cake/Controller/Controller.php line 490 → ReflectionMethod->invokeArgs(ClientsController, array)
CORE/Cake/Routing/Dispatcher.php line 193 → Controller->invokeAction(CakeRequest)
CORE/Cake/Routing/Dispatcher.php line 167 → Dispatcher->_invoke(ClientsController, CakeRequest)
APP/webroot/index.php line 118 → Dispatcher->dispatch(CakeRequest, CakeResponse)

如果我缺少配置,非常感谢任何帮助。

【问题讨论】:

  • 当有人回答你的问题时你会回应吗?您在上一个问题上没有这样做。
  • 这是否发生在 localhost 中?
  • @ManoharKhadka 是的,我刚刚回答了我的最后一个问题..
  • 这发生在我的开发服务器上。不在本地主机上。

标签: php email cakephp smtp


【解决方案1】:

出现问题是因为 SSL 验证出错 - 如错误消息所示。理想情况下,您应该设置 SSL 证书,但您可以禁用 ssl 证书验证作为替代方案,尽管这样做不太安全。

您试图通过直接添加 ssl 数组来禁用 ssl,但正如 this post 指出的那样,ssl 数组需要像这样包装在上下文数组中:

'context'=>array(
    'ssl' => array( 
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
)

这解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 2012-03-09
    • 2012-08-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 2012-01-04
    相关资源
    最近更新 更多