4

しばらくの間 CakePHP を使用しており、Email コンポーネントを使用したいと考えていました。しかし、私はそれで問題を抱えています。

実際、メールを送信しようとすると、次のメッセージが表示されます。

メールを送信できませんでした。エラー: 内部エラーが発生しました。

うーん...しかし、なぜですか?^^

これが私のコントローラーです:

$this->Email->from = 'Email<my.email@myHost.fr>';
$this->Email->to = 'Another.Email@AnotherHost.com';
$this->Email->subject = 'This is the email Subject';
if ($this->Email->send('This is the email message'))
    $this->set('success', 'Email successfully sent !');

そして、app/Config の私の Email.php:

public $smtp = array(
    'transport' => 'Smtp',
    'from' => array('contact@myHost.fr' => 'myHost'),
    'host' => '192.168.10.50',
    'port' => 25,
    'timeout' => 30,
    'username' => 'user',
    'password' => 'secret',
    'client' => null,
    'log' => false,
    //'charset' => 'utf-8',
    //'headerCharset' => 'utf-8',

また、Cake が「sendmail」や「mail」などの電子メールの送信にバイナリを使用しているかどうかも知りたいと思っていました。私の Linux サーバーでは、これらのバイナリがインストールされていないからです。

何か案が ?

4

2 に答える 2

0

1) app/config/email.php を設定します。

public $gmail = array(
        'host' => 'ssl://smtp.gmail.com',
        'port' => 465,
        'username' => 'your qmail username@gmail.com',
        'password' => 'password',
        'transport' => 'Smtp'
    );


2) コントローラーの上に電子メール コンポーネントをロードする

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

3) メールを送る

    public function send_email(){
            $Email = new CakeEmail();
            $Email->config('gmail');
            $Email->from('from@gmail.com');
            $Email->to('to@gmail.com');  
            $Email->subject('Expire Date Information ');
            $Email->emailFormat('html');
            $Email->send();
    }
于 2013-05-07T08:27:26.583 に答える
0

EmailComponentCakePHP 2.x 以降非推奨となり、代わりにCakeEmail ライブラリ クラスに置き換えられました。CakeEmailから設定を読み取るのが面倒なだけだと思いますがapp/Config/Email.php、代わりにEmailComponentオプションをプロパティ(smtpOptions)として取得しました。

新しいコンポーネントに移行するのは非常に簡単CakeEmailです。コントローラ クラスの定義の上に、以下を追加するだけです。

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

次に、コントローラーで、現在のコードを次のように置き換えます。

// In the top of your controller, initialize the component variable first.
private $__Email;

// In your action...
$this->__Email = new CakeEmail();
$this->__Email->from('my.email@myHost.fr')
    ->to('email@AnotherHost.com')
    ->subject('This is the email Subject')
    ->send('This is the email message');

$this->set('success', 'Email successfully sent !');

2 番目の質問については、はい、メールの送信に使用しているサーバーに sendmail のような MTA (Mail Transport Agent) をインストールする必要があります。水中では、CakeEmail は PHP のメソッドを使用します。これは、ファイルにmail()設定したものを何でも使用します。sendmail_pathphp.ini

于 2013-01-21T12:35:58.757 に答える