【问题标题】:Mail can't send in code igniter邮件无法在代码点火器中发送
【发布时间】:2018-08-08 07:02:37
【问题描述】:

我想从服务器向 Gmail ID 发送邮件,但收到以下消息:

消息:出于安全原因,mail() 已被禁用 文件名: 库/Email.php 行号:1554

我的代码如下所示:

$this->load->library(array('session', 'form_validation', 'email')); 
$from_email= "test.mail@domainame.com";
// $pass = "***********";
$to_email = $this->input->post('email');
$subject='Password Reset Request';
$htmlContent = '<p>'.$link.'</p>';
$this->load->library('email'); 
$config['mailtype'] = 'html';
$this->email->initialize($config);
$this->email->set_newline("\r\n");
$this->email->from($from_email,'Builders'); 
$this->email->to($to_email);
$this->email->subject($subject); 
$this->email->message($htmlContent);    
  if(!$this->email->send()) {
  //success message
  }

我该如何解决这个问题?

【问题讨论】:

  • 您的主机(可能您使用的是某种廉价的共享主机)已禁用该功能。请他们启用它,或更改主机。
  • 我投票结束这个问题,因为它只能由托管公司解决。
  • @ceejayoz 我的代码正确吗?
  • 如果他们完全阻止了mail() 函数,代码是否正确并不重要。
  • 您应该考虑使用合适的 SMTP 服务器

标签: php codeigniter email


【解决方案1】:

请检查您的配置

$config['protocol'] = 'sendmail'; //check on this, which method you want to use smtp/mail/sendmail?
$config['mailpath'] = '/usr/sbin/sendmail';  
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;

$this->email->initialize($config);

确保发件人地址与您的域相同

【讨论】:

  • 阻止mail() 的主机不太可能提供sendmail。他们可能提供一个 SMTP 服务器供使用,但您必须从那里的主机获取详细信息。
【解决方案2】:

试试这个。

$emailConfig = [
            'protocol' => 'smtp', 
            'smtp_host' => 'XXXXX', 
            'smtp_port' => 'XXXXX', 
            'smtp_user' => 'XXXXX', 
            'smtp_pass' => 'XXXXX', 
            'mailtype' => 'html', 
            'charset' => 'utf-8'
        ];
        $from = [
            'email' => 'a@b.com',
            'name' => 'ab'
        ];
        $message = 'welcome to our site'; 
        $to = array($email);
        $subject = 'welcome';
        $this->load->library('email', $emailConfig);
        $this->email->set_newline("\r\n");
        $this->email->from($from['email'], $from['name']);
        $this->email->to($to);
        $this->email->subject($subject);
        $this->email->message($message);
        if (!$this->email->send()) {
            show_error($this->email->print_debugger());
        } else {
            echo '<div style="color:green">Email Successfully sent</div>';
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    相关资源
    最近更新 更多