smtp不能在1and1上工作

时间:2016-08-23 12:25:20

标签: email cakephp

我正在使用1and1服务器来托管我的CakePHP 3.2应用程序

这就是我在CakePHP上配置电子邮件组件的方法

'EmailTransport' => [
    'default' => [
        'className' => 'Smtp',
        // The following keys are used in SMTP transports
        'host' => 'smtp.1and1.com',
        'port' => 587,
        'timeout' => 30,
        'username' => 'noreply@mywebsite.com',
        'password' => 'password',
        'client' => null,
        'tls' => null,
        'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
    ],
],

但这不起作用,也没有发送电子邮件,并在30秒后发出Connection Time out

来自1and1电子邮件配置页面。它说

Outgoing port (TLS must be activated) 

如何在CakePHP中启用/配置TLS?

  

编辑2

错误堆栈显示 的 SmtpTransport.php

protected function _connect()
{
    $this->_generateSocket();
    if (!$this->_socket->connect()) {     // marked this line
       throw new SocketException('Unable to connect to SMTP server.');
    }
    $this->_smtpSend(null, '220');

发送电子邮件的行动

public function sendEmail($user_id = null, $email_id = null, $hash = null, $request = null)
{
    switch($request) {
      case 'register' : $subject = 'Account Confirmation';
                        $message = 'You have successfully registered. Click below link to verify it http://website.com/sellers/verify/'.$email_id.'/'.$hash;
        break;
    }

    $email = new Email('default');
    if ($email->from(['anujsharma9196@gmail.com' => 'Argo Systems'])
          ->to((string)$email_id)
          ->subject($subject)
          ->send($message)) {

      return true;
    } else {
      return false;
    }
}

并通过

从同一个控制器调用此函数
$this->sendEmail($user->id, $user->email, $hash, 'register');

2 个答案:

答案 0 :(得分:2)

来自manual(粗体是我的)

  

您可以配置SSL SMTP服务器,例如Gmail。为此,请将ssl://前缀放在主机中并相应地配置端口值。 您还可以使用tls选项启用TLS SMTP:

所以只需设置

'tls' => true
在配置数组中

并尝试它是否正常工作

修改

this页后,我发现您甚至不需要使用Smtp运输车

只需使用简单的Mail转运工具

'default' => [
        'className' => 'Mail'
]
  

无需提供用户名,密码或指定应使用哪个邮件服务器来发送邮件,因为此信息已包含在PHP变量中。

试试吧!

答案 1 :(得分:0)

I used below configuration in system for mail using gmail. it work fine. you just try with your server.

 'EmailTransport' => [
        'default' => [
            'className' => 'SMTP',
            // The following keys are used in SMTP transports
            'host' => 'ssl://smtp.gmail.com',
            'port' => 465,
            'timeout' => 100,
            'username' => 'example@gmail.com',
            'password' => 'exmple123',
            'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
        ],
    ],

Check with your port and host.Hope fully it will works

Try 

Thanks