次のコードを使用して、ローカルサーバーで電子メールを送信できます。
$config['protocol'] = 'smtp';
$config['charset'] = 'UTF-8';
$config['mailtype'] = "html";
$config['wordwrap'] = TRUE;
$config['smtp_host'] = $this->config->item('smtp_host'); // smtp.critsend.com
$config['smtp_user'] = $this->config->item('smtp_user');
$config['smtp_pass'] = $this->config->item('smtp_pass');
$config['smtp_port'] = $this->config->item('smtp_port'); // i'm tried 587 and 25
$this->load->library('email');
$this->email->initialize($config);
$this->email->from('test@test.com', 'test');
$this->email->reply_to('test@test.com', 'test');
$this->email->to($user['email']);
$this->email->subject($subject);
$this->email->message($html);
$this->email->set_newline("\r\n");
$this->email->send();
ただし、実サーバーでは動作しません。このエラーが発生します。
メッセージ: fsockopen() [function.fsockopen]: smtp.critsend.com:25 に接続できません (接続タイムアウト)
ファイル名: libraries/Email.php
ライン番号: 1689
メッセージ: fwrite(): 指定された引数は有効なストリーム リソースではありません
ファイル名: libraries/Email.php
ライン番号: 1846
このエラーに対するいくつかの回答は、「php_openssl を有効にする」です。しかし、私はsslを使用していません(そしてできません)。