0

PHPでメールを送信しようとしています。CakePHPでメールを送信するために使用したコードを以下に示します。Web ページに「Simple Email Sent」というメッセージが表示されますが、メールが受信ボックスに配信されません。何か不足していますか?

tosubjectおよびlinkフィールドの値は、ユーザー インターフェイスに入力された値で設定されます。

    $this->set('to',$this->params['form']['to']);
    $this->set('subject',$this->params['form']['subject']);
    $this->set('link',$this->params['form']['link']);
    $this->Email->to      = to;
    $this->Email->subject = subject;
    $this->Email->from    = 'someperson@somedomain.com';
    $this->Email->delivery= 'mail';
    $this->Email->sendAs='text';
    $this->Email->template = 'simple_message';
    //$this->Email->send(link);
    if ( $this->Email->send(link) ) {

        $this->Session->setFlash('Simple email sent');
    } else {
        $this->Session->setFlash('Simple email not sent');
    }
4

3 に答える 3

2

Linux システムでは、おそらく sendmail スクリプトが既にインストールされており、PHP はそれを使用します。これがあなたの持っているもので、それが機能しない場合は、あなたの Linux システム自体のメール構成の問題を探します。

Windows システムでは、PHP からメールを送信する SMTP サーバーを構成する必要があります。これを行う通常の方法は php.ini にあります。 この手順については、こちらをご覧ください

Email->delivery を設定していない限り、これは CakePHP でも同じである必要があります - PHP が使用するものにデフォルト設定する必要があります。

注: 独自の Linux インストールを使用している場合、メール サーバーが使用しているポート 25 が ISP によってブロックされている可能性があります。その場合、電子メールを ISP の電子メール サーバーにルーティングするように Linux を構成する必要があります。 多分これは助けになるでしょうか?

于 2009-04-02T07:24:03.237 に答える
1

「to」行と「subject」行に設定するには、変数構文を使用する必要があります。それらの行は読むべきです

$this->Email->to      = to;
$this->Email->subject = subject;

また、電子メール コンポーネントには error と呼ばれる属性があり (現在、ドキュメントには記載されていません)、デバッグに役立つと思います。これは完全に正しいとは限りません。私は SMTP で電子メール コンポーネントを使用しています。電子メール コンポーネントによって設定される という属性がありますsmtpError。エラーをチェックするために使用できるものがあるとerror思います-それには、問題がどこにあるかを示すコードが含まれている必要があります。

それが間違っている場合はvar_dump( $this->Email );、メールを送信しようとした後にいつでも行うことができます。これにより、オブジェクトの内容全体がダンプされるため、属性が正しく設定されているかどうかを確認でき、エラー属性の名前を見つけるのに役立ちます。

于 2009-04-02T14:44:57.233 に答える
1

「to」(4 行目) が有効な送信先メール アドレスになるのはいつからですか?

于 2009-04-02T10:15:28.770 に答える