【问题标题】:I cannot send any emails using Codeigniter我无法使用 Codeigniter 发送任何电子邮件
【发布时间】:2018-03-28 13:31:17
【问题描述】:

我已经创建了一个控制器,并在控制器中做了一个测试函数来测试邮件是否发送。

我检查了不同的电子邮件地址,但没有成功。这是我的代码示例:

public function sendmail() {
    $config['protocol'] = 'sendmail';
    $config['mailpath'] = '/usr/sbin/sendmail';
    $config['charset'] = 'iso-8859-1';
    $config['wordwrap'] = TRUE;
    $config['mailtype'] = 'html';
    $user_id = 1;
    $name = 'Mark Alan';
    $this->email->set_newline("\r\n");
    $this->email->from('info@domainname.com', "Test Name");
    $this->email->to('test@domainname.com');
    $this->email->subject('Test Mail');
    $this->email->message('This is a test message');
    $this->email->send();
    echo $this->email->print_debugger();    
}

【问题讨论】:

  • 你加载电子邮件库吗? $this->load->library('email');
  • 你好像忘了$this->email->initialize($config);
  • 你是在本地主机上还是在实时服务器上测试它意味着来自 cpanel
  • @AbedPutra 是的,我确实加载了库
  • @shabirullah 在实时服务器上我使用核心 php 通过使用 mail() 函数和接收电子邮件进行测试,但通过 codigniter 我不是

标签: php codeigniter email


【解决方案1】:

使用 Codeigniter(假设您已经自动加载了电子邮件库),您可以在名为 email.php 的配置文件中设置电子邮件首选项,并且这些首选项会从那里自动加载。它可能看起来像:

// Setting Email Preferences 
$config['useragent'] = 'CodeIgniter';              // Mail engine switcher: 'CodeIgniter' or could be 'PHPMailer'
$config['protocol']  = 'smtp';                   // 'mail', 'sendmail', or 'smtp'
$config['mailpath']  = '/usr/sbin/sendmail';

或者像您的示例中一样,您可以手动设置它们,但需要对其进行初始化,因此在定义 $config[] 数组后不要忘记这一行:

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

【讨论】:

    【解决方案2】:

    试试这个代码:

    function sendMail()
    {
        $config = Array(
            'protocol' => 'smtp',
            'smtp_host' => 'ssl://smtp.googlemail.com', //Your Host
            'smtp_port' => 465, // Add 25 port if you sending from your smtp mail server 
            'smtp_user' => 'xxx@gmail.com', // change it to yours, server email
            'smtp_pass' => 'xxx', // change it to yours
            'mailtype' => 'html',
            'charset' => 'iso-8859-1',
            'wordwrap' => TRUE
    );
    
        $message = '';
        $this->load->library('email', $config);
        $this->email->set_newline("\r\n");
        $this->email->from('xxx@gmail.com'); // change it to yours
        $this->email->to('xxx@gmail.com');// change it to yours
        $this->email->subject('Resume from JobsBuddy for your Job posting');
        $this->email->message($message);
        if($this->email->send())
        {
            echo 'Email sent.';
        }
        else
        {
            show_error($this->email->print_debugger());
        }
    
    }
    

    注意:请添加您的 smtp 端口和您的 smtp 电子邮件帐户详细信息。

    【讨论】:

      猜你喜欢
      • 2013-06-15
      • 2012-10-31
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      相关资源
      最近更新 更多