我正在使用cakephp 3.0开发一个网站,并且我尝试使用gmail服务器从我的localhost(xampp)发送确认电子邮件。我可以确定我的控制器功能已执行但没有任何反应,没有电子邮件,没有错误,没有日志等。
我看了here您无法从localhost发送电子邮件(因此尝试使用gmail发送电子邮件)
此处我的配置位于app.php
'EmailTransport' => [
'default' => [
'className' => 'Mail',
// The following keys are used in SMTP transports
'host' => 'smtp.gmail.com',
'port' => 587,
'timeout' => 30,
'username' => 'my_email@gmail.com',
'password' => 'password',
'client' => null,
'tls' => true,
],
],
'Email' => [
'default' => [
'transport' => 'default',
'from' => 'my_email@gmail.com',
],
],
这是我尝试发送电子邮件的功能。
public function send()
{
$email = new Email('default');
$email->to('other_email@gmail')
->subject('About')
->message('blablabla');
if($email->send())
{
return $this->render('confirmation');
}
}
我可以肯定地说这个代码已经执行了,因为在我按下发送后会显示确认视图。
发送电子邮件我错过了什么?
答案 0 :(得分:0)
如果没有配备邮件服务器的服务器,您将无法发送电子邮件。不幸的是,这不包括在xampp中。如果您尝试使用"来自"从Gmail发送电子邮件。标题,我认为你误解了" From"参数。 " From"实际上只有接收方才能结束。
示例:
如果你有:
$headers = "From: webmaster@example.com";
接收方将看到该电子邮件是从webmaster@example.com发送的。但是,电子邮件实际上仍然是从您的邮件服务器发送的(因此在localhost上,您将无法这样做,因为它没有邮件服务器)。
有关使用PHP发送电子邮件的更多信息,请转到http://www.w3schools.com/php/func_mail_mail.asp
答案 1 :(得分:0)
尝试
'EmailTransport' => [
'default' => [
'className' => 'Smtp',
'host' => 'ssl://smtp.gmail.com',
'port' => 465,
'timeout' => 30,
'username' => 'my_email@gmail.com',
'password' => 'password',
'tls' => true, // This may not be needed
],
],