【问题标题】:Email configuration in CakePHPCakePHP 中的电子邮件配置
【发布时间】:2015-08-22 06:06:00
【问题描述】:

我正在尝试通过 CakePHP 发送邮件,但我总是收到“连接超时”消息。我使用了两种不同的配置:gmail 和 1and1,但结果是一样的。

这是我的email.php 文件:

 public $oneandone = array(
    'host' => 'ssl://smtp.1and1.es',
    'port' => 465,
    'username' => 'my-address@my-domain.com',
    'password' => '*****',
    'transport' => 'Smtp',
    'timeout' => 1);

public $gmail = array(
    'host' => 'smtp.gmail.com',
    'port' => 587,
    'username' => 'my-address@gmail.com',
    'password' => '****',
    'timeout' => 1,
    'tls' => true,
    'transport' => 'Smtp');

这是我在UsersController.php 文件中的提醒功能:

 public function remind() {

    App::uses('CakeEmail', 'Network/Email');

    $this->set('url', $this->referer());

    if ($this->request->is('post')) {

        $Email = new CakeEmail('gmail');
        $Email->from(array('my-address@my-domain.com' => 'Staff'));
        $Email->to('destiny@hotmail.com');
        $Email->subject('Password reminder');
        $Email->send('Here is your current password: xxxxxx');

        return $this->redirect(array('action' => 'login'));
    }
}

我得到的错误是

 if (!$this->_socket->connect()) {

        throw new SocketException(__d('cake_dev', 'Unable to connect to SMTP server.'));

所以我不知道为什么我无法连接。我修改了一些参数,例如tlsssl,但没有结果。

在同一台服务器(1and1)中,我可以使用标准的mail() 函数发送电子邮件,所以我认为这不是PHP 配置的问题。如果我错了,请纠正我。

一些想法将不胜感激!

【问题讨论】:

    标签: php email cakephp timeout


    【解决方案1】:

    以下,正确地工作了我。关于 Cakephp 2

    public $gmail = array(
    'host'      => 'ssl://smtp.gmail.com',
    'port'      => 465,
    'username'  => 'myEmail@gmail.com',
    'password'  => 'AwesomePass',
    'transport' => 'Smtp'
    );
    

    请注意,gmail 使用端口 465。
    如果您的网站没有 ssl 认证,gmail 可能无法正常工作。

    在这种情况下,您必须使用 smtp 配置

    public $smtp = array(
    'transport' => 'Smtp',
    'from' => array('site@localhost' => 'My Site'),
    'host' => 'localhost',
    'port' => 25,
    'timeout' => 30,
    'username' => 'user',
    'password' => 'secret',
    'client' => null,
    'log' => false,
    //'charset' => 'utf-8',
    //'headerCharset' => 'utf-8',
    );
    

    具有以下功能

    public function sendMail() {
        App::uses('CakeEmail', 'Network/Email');
        $templateVar = array(); //array variable to use in the template
        $Email = new CakeEmail();
        $Email->template('template_name', 'default') //View/Emails/html/template_name.ctp
          ->config('gmail')//gmail or smtp
          ->emailFormat('html')
          ->subject('Awesome subject')
          ->to('toUser@email.com')
          ->from(array('myEmail@gmail.com'=>'My name'))
          ->viewVars($templateVar)
          ->send();
    }
    

    【讨论】:

      猜你喜欢
      • 2014-07-07
      • 2016-03-10
      • 2017-10-25
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多