Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP中的电子邮件配置_Php_Email_Cakephp_Timeout - Fatal编程技术网

CakePHP中的电子邮件配置

CakePHP中的电子邮件配置,php,email,cakephp,timeout,Php,Email,Cakephp,Timeout,我试图通过CakePHP发送邮件,但总是收到“连接超时”的消息。我使用了两种不同的配置:gmail和1和1,但结果是一样的 这是我的email.php文件: public $oneandone = array( 'host' => 'ssl://smtp.1and1.es', 'port' => 465, 'username' => 'my-address@my-domain.com', 'password' => '*****',

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

这是我的
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');
 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'));
    }
}
这是我在
userscoontroller.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');
 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.'));
所以我不知道为什么我不能连接。我修改了一些参数,如
tls
ssl
,但没有结果

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


一些想法将不胜感激

下面这句话正确地表达了我的意思。关于cakephp2

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();
}