0

我正在使用代码点火器。我测试将电子邮件发送到错误的不存在地址,例如 t@t.com。

我的代码只是这样的控制器的一种方法:

function test() {
    $this->email->from('mymail@gmail.com');
    $this->email->to(htmlentities("t@t.com"));
    $this->email->subject('test');
    $this->email->message("Just a test !");     

    $r = $this->email->send();      
    if (!$r)
        echo "not sent, wrong email";
    else
        echo "sent";
}

基本上,send() 函数返回 true 或 false。但它不起作用!我得到的错误信息如下:

    A PHP Error was encountered

    Severity: Warning

    Message: mail() [function.mail]: SMTP server response: 550 5.1.2 <t@t.com>: Recipient address rejected: Domain not found

    Filename: libraries/Email.php

    Line Number: 1540

not sent, wrong email

我有消息,所以 send() 函数回复 false 但我也有错误消息,这是我不想要的!

这是一个阻塞点。任何人都知道为什么 send() 函数不返回 true 或 false 回复?

提前感谢!

4

2 回答 2

0

我已经尝试过了,它应该可以正常工作,我得到:未发送,错误的电子邮件。

您使用的是哪个版本的 CI?确保它是最后一个。

以防万一,请检查CI 文件夹中system/libraries下的Email.php

protected function _send_with_mail()
{
    if ($this->_safe_mode == TRUE)
    {
        if ( ! mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str))
        {
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    }
    else
    {
        // most documentation of sendmail using the "-f" flag lacks a space after it, however
        // we've encountered servers that seem to require it to be in place.

        if ( ! mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str, "-f ".$this->clean_email($this->_headers['From'])))
        {
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    }
}

检查里面的函数_send_with_mail()看起来和上面的一模一样

于 2012-05-30T21:15:28.480 回答
0

摆脱错误的一种快速而肮脏的技巧是在邮件功能前加上'@':

$r = @$this->email->send();   
于 2012-05-31T07:15:43.027 回答