使用 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 从本地主机发送电子邮件?

使用SSMTP从本地主机发送电子邮件

Mercury:从本地主机发送电子邮件

努力使用 xampp 和 gmail 发送邮件

绕过 Gmail 的垃圾邮件过滤器(使用 PHP 从共享主机发送的邮件)

无法从 Laravel 应用程序发送电子邮件:无法与主机 smtp.gmail.com 建立连接 [连接超时 #110]