【问题标题】:Cakephp email sent but not receivedCakephp 电子邮件已发送但未收到
【发布时间】:2014-07-20 18:50:56
【问题描述】:

我正在运行 Cakephp 2.4.3 并尝试使用 CakeEmail 发送电子邮件。

我的 UsersController 顶部有这段代码:

App::uses('AppController','Controller','CakeEmail','Network/Email');

Controller 中的这个函数:

function send_email(){
    try{
        $email = new CakeEmail('test');
        $email->from('sender@example.com');
        $email->to('me@gmail.com');
        $email->subject('Test');
        if($email->send('Test Message'))
            echo 'Success';
        else echo 'Failure without Exception';
    } catch (Exception $e){
        echo 'Failure with Exception';
    }
}

这在 Config/email.php 中

public $test = array(
  'log' => true
);

当我转到网址时:mysite.com/users/send_email

它说“成功”,调试日志说:

2014-05-30 22:49:43 Debug: 
From: sender@example.com
X-Mailer: CakePHP Email
Date: Fri, 30 May 2014 22:49:43 +0000
Message-ID: <53890b07e3b44b2b88132a62ad2deb05@mysite.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Test Message

但我从未收到电子邮件进入我的 Gmail 帐户。我也检查了我的垃圾邮件文件夹。可能是什么问题,我还能如何调试?

更新:

我的蛋糕应用程序正在网络上托管。我尝试在不同的域中使用不同的电子邮件地址并将电子邮件代码更改为:

try{
    if(mail('xxx@iioengine.com','Test Subject','Test Message'))
        echo 'Success';
    else echo 'Failure without Exception';
} catch (Exception $e){
    echo 'Failure with Exception';
}

但结果没有改变。

【问题讨论】:

  • 尝试使用 gmail 的疑难解答:support.google.com/mail/troubleshooter/2935079
  • 我刚刚尝试了另一个域中的另一个电子邮件地址并得到了相同的结果
  • 您使用什么传输方式?例如,这是我的 gmail 配置(我认为它有效我现在通过 AWSSES 使用 smtppublic $gmail = array('host' =&gt; 'ssl://smtp.gmail.com' ,'port' =&gt; 465 ,'username' =&gt; 'foo@gmail.com' ,'password' =&gt; 'foobar','transport' =&gt; 'Smtp');
  • 不确定.. 无论 Cake 默认是什么。我最初尝试了 SMTP 设置,但它不起作用,所以我将其简化为这个。

标签: php email cakephp


【解决方案1】:

从本地主机发送邮件通常不起作用。您可以尝试在设置中设置端口,但您的 isp 可能会阻止该端口。

只是检查规格:http://book.cakephp.org/2.0/en/core-utility-libraries/email.html

看起来你的 new 声明不应该在里面有测试:

$Email = new CakeEmail();

要进行调试,您可以尝试向其他主机(不是 gmail)发送电子邮件。您也可以尝试使用默认的 php mail() 函数,它实际上使用起来非常简单,并且非常类似于 cake 的布局,这不足为奇。

http://php.net/manual/en/function.mail.php

【讨论】:

  • 我没有使用 localhost - 它在网络上。我尝试使用邮件,但同样的事情发生了。
  • 可能是您的网络主机阻止了邮件的发送。不同的主机有不同的邮件限制。有时您可能会使用因某种原因完全被阻止的 IP。
  • 好的,我不是服务器的管理员,所以我得和他核实一下
  • 我收到一条回复说“我已经重新配置了 postfix”,并且电子邮件现在可以在直接 php 调用和蛋糕助手中工作。感谢您的调试提示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-16
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多