0

Cake PHPメールコンポーネントでメールを送信しようとしています:

var $components = array('Email');

$email = new CakeEmail();
$email->from(array('me@example.com' => 'My Site'));
$email->to('xxx@gmail.com');
$email->subject('About');
$email->send('My message');

そして、私はいつもメッセージを受け取ります:メールを送信できませんでした。内部エラーが発生しました。エラーログに「SocketException」があります。

私はcakephp 2.0を使用しています。

動作させるにはどのように構成すればよいですか? smtp サーバーなどを使用したくありません。単純なメールを送信したいだけです。

PCでWAMPを使用しています。

4

3 に答える 3

2

行のコメントを外します: extension=php_openssl.dllin php.ini。これにより、ソケットの問題が解決されます。

もう1つ言いたいのは:

2 つのコア ライブラリとコンポーネントの両方を混在させています。ご参考までに

EmailComponent は非推奨になりました。代わりにコアライブラリを使用してください。

詳細については、このリンクを確認してくださいhttp://book.cakephp.org/2.0/en/core-utility-libraries/email.html

于 2012-07-07T13:38:21.817 に答える
1

これは、メールサーバーの設定またはメールサーバーへの接続に問題があるように見えます。ただし、EmailComponentのCakeEmailクラスを混乱させています。

まず、emailComponentを使用して電子メールを送信しようとしているのではなく、新しいCakeMailクラス(2.xからの新機能)を使用しています。したがって、これは:

var $components = array('Email');

この:

$email = new CakeEmail();

2つの異なるものです。最初はEmailComponentをロードしますが、まったく使用していません。2.x以降のEmailComponentは非推奨です。あなたの例では、CakeEmailクラスを使用しています。

まず、クラスが実際にロードされていることを確認する必要があります。

App::uses('CakeEmail', 'Network/Email');

次に、構成ファイルが次の場所にあるかどうかを確認します。

App/Config/email.php

現在、デフォルトの構成オプションを使用していると思います。これは、デフォルトのトランスポートが「Mail」(PHPメール関数)であることを意味します。基盤となるメールトランスポートエージェントに接続できず、システムソケットを介して接続しようとしているため、SocketExceptionが発生していると思います...(Windowsには存在しないと思いますが、可能性があります間違っています。プロセス間通信用のWindowsAPIにそのようなものがあることは確かです)

とにかく、デフォルトの電子メール構成を使用しても問題ありません。CakeEmailクラスのCakePHPブックのセクションを読んでください。

于 2012-05-08T09:27:08.787 に答える