我正在使用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');
答案 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