1
            $config = Array(
            'protocol' => 'smtp',
            'smtp_host' => 'ssl://smtp.googlemail.com',
            'smtp_port' => 465,
            'smtp_user' => 'xxx',
            'smtp_pass' => 'xxx',
            'mailtype'  => 'html', 
            'charset'   => 'iso-8859-1'
        );
        $this->load->library('email', $config);
        $this->email->set_newline("\r\n");

        $this->email->from('me@gmail.com','me');
        $this->email->to($this->input->post('email'));
        $this->email->subject("Confirm your account.");
        
        $message = '<p>Thank you for signing up!</p>';
        $message .= '<p><a href="';
        $message .= base_url();
        $message .= 'main/register_user';
        $message .= $key;
        $message .= '">Click here!</a>to sign up</p>';
        $this->email->message($message);

YouTube の phpacademy からいくつかの Codeigniter チュートリアルに従っています。チュートリアルの 1 つでは、一意のキーをユーザーにメールで送信して、ユーザーが登録できるようにしています。上記のコードで取得した他の質問や CI フォーラムを使用して、Gmail アカウント経由で送信しようとしていますが、次のエラーが表示されます。

メッセージ: fsockopen() [function.fsockopen]: >ssl://smtp.googlemail.com:465 に接続できません (ソケット トランスポート "ssl" が見つかりません - PHP を構成したときに有効にするのを忘れていませんか? )

ファイル名: libraries/Email.php

--

メッセージ: fwrite() は、パラメーター 1 がリソースであると想定しています。ブール値が指定されています

ファイル名: libraries/Email.php

--

メッセージ: fgets() は、パラメーター 1 がリソースであると想定しています。ブール値が指定されています

ファイル名: libraries/Email.php

これを適切に設定するために必要な正確な手順がわかりません。また、これをローカルから実際のウェブホストに移動しても、gmail で適切に動作しますか?

どうもありがとうございました。

4

3 に答える 3

3

SSL 経由で接続しようとするとphp_openssl.dllphp.iniで OpenSSL モジュールを有効にする必要があります。

于 2012-12-19T18:56:52.997 に答える
3

Apacheサーバーでmod_sslがアクティブになっていることを確認してください

于 2012-12-19T18:58:29.897 に答える
1

コードは次のようになります。

$mail->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for GMail<br/>
$mail->Host = 'smtp.gmail.com';<br/>
$mail->Port = 587;

これとは別に、Apache と wamp を次のように設定します。

  1. extension=php_openssl.dllphp.ini ファイルの コメントを外します
  2. ssl_moduleActive in Apache モジュールを確認する
于 2013-08-27T17:35:12.573 に答える