使用 gmail 从本地主机发送电子邮件
Posted
技术标签:
【中文标题】使用 gmail 从本地主机发送电子邮件【英文标题】:Send email from localhost using gmail 【发布时间】:2015-05-29 22:32:36 【问题描述】:我正在使用 cakephp 3.0 开发一个网站,并且我正在尝试使用 gmail 服务器从我的 localhost (xampp) 发送一封确认电子邮件。我可以确定我的控制器功能已执行,但没有任何反应,没有电子邮件、没有错误、没有日志等。
我读到here 说您无法从本地主机发送电子邮件(因此尝试使用 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');
我可以确定此代码已执行,因为确认视图是在我按下发送后呈现的。
发送电子邮件时我缺少什么?
【问题讨论】:
您最好参考文档:http://book.cakephp.org/3.0/en/core-libraries/email.html#configuring-transports @ndm 正是我用来设置电子邮件发送的页面。谢谢 【参考方案1】:如果没有具有邮件服务器的服务器,您将无法发送电子邮件。不幸的是,这不包含在 xampp 中。如果您尝试使用“发件人”标头从 Gmail 发送电子邮件,我认为您误解了“发件人”参数的使用。 “From”实际上只适用于接收方。
例子:
如果你有:
$headers = "From: webmaster@example.com";
接收方将看到电子邮件是从 webmaster@example.com 发送的。但是,电子邮件实际上仍然是从您的邮件服务器发送的(因此在 localhost 上,您将无法这样做,因为它没有邮件服务器)。
有关使用 PHP 发送电子邮件的更多信息,请转至http://www.w3schools.com/php/func_mail_mail.asp
【讨论】:
为什么在使用外部 SMTP 时需要邮件服务器? CakePHPs SMTP 适配器将直接与配置的外部服务器通信。 ps,用于 Windows 的 XAMPP 附带 Mercury,OSX 包含开箱即用的 Postfix,而 Linux,嗯,许多发行版也附带某种邮件服务器。【参考方案2】:试试
'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
],
],
【讨论】:
谢谢,我把我的配置文件改成了这个,我的邮箱里仍然没有任何邮件,也没有错误 没有错误,也没有电子邮件。今晚我将看看它包含的调试器。以上是关于使用 gmail 从本地主机发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用带有 XAMPP 的 PHP 从本地主机发送电子邮件?
绕过 Gmail 的垃圾邮件过滤器(使用 PHP 从共享主机发送的邮件)
无法从 Laravel 应用程序发送电子邮件:无法与主机 smtp.gmail.com 建立连接 [连接超时 #110]