0

我在 codeigniter 中有配置电子邮件

    'protocol' => 'smtp',
                    'smtp_host' => 'ssl://smtp.gmail.com',
                    'smtp_port' => '465',
                    'smtp_user' => '-----',
                    'smtp_pass' => '-----',
                    'mailtype' => 'html',
                    'charset' => 'utf-8'

$this->load->library('email', $this->session->userdata('config'));
            $this->email->from('new@gmail.com', 'Rtlx Team');
            $this->email->to($email);
            $message = "Dear ";
            $this->email->subject('Rtlx Team - Account Verification');
            $this->email->message($message);
            $this->email->send();
            $this->email->clear();

但它显示以下错误:

消息:mail() [function.mail]:无法在“localhost”端口 465 连接到邮件服务器,请验证 php.ini 中的“SMTP”和“smtp_port”设置或使用 ini_set()

消息:mail() 期望参数 1 是字符串,给定数组

无法使用 PHP mail() 发送电子邮件。您的服务器可能未配置为使用此方法发送邮件。

4

2 回答 2

0

通过链接http://ellislab.com/codeigniter/user-guide/libraries/email.html和您的 smtp 设置...

于 2013-11-11T06:38:52.583 回答
0

您将电子邮件库错误地加载为$this->load->library('email',$this->session->userdata('config'));.

所以加载它$this->load->library('email');并将其初始化为$this->email->initialize($this->session->userdata('config'));

在下面的示例中,我采用了$config数组,但您也可以在会话中采用您自己的配置,就像您使用的问题一样。但是像我设置的那样设置所有选项,$config您可以在会话的变量中设置它。

完整代码如下:

$config = Array(
    'protocol' => 'smtp',
    'smtp_host' => 'ssl://smtp.googlemail.com',
    'smtp_port' => 465,
    'smtp_user' => 'your@mail.com', // change it to yours
    'smtp_pass' => 'yourpassword', // change it to yours
    'mailtype' => 'html',// it can be text or html
    'wordwrap' => TRUE,
    'newline' => "\r\n",
    'charset' => 'utf-8',
    );
    $this->load->library('email');
    $this->email->initialize($config);
    $this->email->from('your@mail.com',"Rtlx Team");
    $this->email->to('receiver@mail.com');
    $this->email->subject('Subject');
    $this->email->message('Sample message');
    if (!$this->email->send()) 
    {
        show_error($this->email->print_debugger()); 
    }
    else 
    {
        echo 'Your e-mail has been sent!';
    }
于 2018-12-24T10:21:11.447 回答