0

フォームの内容を電子メールで送信する必要があるお問い合わせフォームを作成しています。localhost でメールを送信しようとしましたが、機能しませんでしたが、ホスト (1and1) では完全に機能します。現在、新しいホスト (Netfirms) で試しています。何らかの明らかな理由で、mail 関数はメールを送信せず、true/false の値を返しません。解決策や理論を一晩中グーグルで調べてみましたが、役に立ちませんでした。この奇妙な結果の原因は何ですか?

これがメーリング用のPHPです。

<?php
class zMail {

final public function compileMail() {
    global $tpl, $zip;

    $tpl->Define('error', null);

    # Ensure that the form was sent #
    if(isset($_POST['contact-us'])) { 

        # Make sure that the variables are set for the mailing process #
        $first_name     = $_POST['f_name'];
        $last_name      = $_POST['l_name'];
        $event_type     = $_POST['event'];
        $date           = $_POST['date'];
        $guests         = $_POST['guests'];
        $from           = $_POST['email'];
        $phone          = $_POST['phone'];

        # Place Where E-Mail should be sent to #
        $to             = $zip['Social']['Email'];

        # Are all fields completed? #
        if(!empty($first_name) && !empty($last_name) && !empty($event_type) && !empty($date) && !empty($guests) && !empty($from) && !empty($phone)) {
            switch($event_type) {
                case '1':
                    return 'Baby Shower';
                break;
                case '2':
                    return 'Wedding';
                break;
                case '3':
                    return 'Kids Party';
                break;
                case '4':
                    return 'Birthday';
                break;
                case '5':
                    return 'Other';
                break;
            }

            switch($guests) {
                case '1':
                    return '10-25 People';
                break;
                case '2':
                    return '25 - 50 People';
                break;
                case '3':
                    return '50 - 75 People';
                break;
                case '4':
                    return '75 - 100+ People';
                break;
            }

            $message = '<ul>
                            <li><b>First & Last Name: </b><span style="float: right;">' . $first_name . ' ' . $last_name . '</span></li>
                            <li><b>Event Type: </b><span style="float: right;">' . $event_type . '</span></li>
                            <li><b>Date: </b><span style="float: right;">' . $date . '</span></li>
                            <li><b>Guests: </b><span style="float: right;">' . $guests . '</span></li>
                            <li><b>Email: </b><span style="float: right;">' . $from . '</span></li>
                            <li><b>Telephone: </b><span style="float: right;">' . $phone . '</span></li>
                            <li><b>Add`l Information: </b><span style="float: right;">' . $notes . '</span></li>
                        </ul>';

            $subject = "{site: title} - New Client Inquiry";
            $headers = "From: IntactDev@gmail.com\r\n" . 
                        'X-Mailer: PHP/' . phpversion() . "\r\n" . 
                        "MIME-Version: 1.0\r\n" . 
                        "Content-Type: text/html; charset=utf-8\r\n" . 
                        "Content-Transfer-Encoding: 8bit\r\n\r\n"; 

            $retval = mail($to, $subject, $message, $headers);
            if($retval == true) {
              $tpl->Define('error', '<span class="error">Message sent successfully!</span>');
            } else {
              $tpl->Define('error', '<span class="error">Email could not be sent!</span>');
           }
        } else {
            $tpl->Define('error', '<span class="error">Please fill in all fields!</span>');
        }
    }
}
}
?>
4

2 に答える 2

2

だから、これが他のホストでどのように機能したのか興味があります。メール機能に到達する前に、機能を終了しています。

あなたの2つのスイッチステートメント:

        switch($event_type) {
            case '1':
                return 'Baby Shower';
            break;
            case '2':
                return 'Wedding';
            break;
            case '3':
                return 'Kids Party';
            break;
            case '4':
                return 'Birthday';
            break;
            case '5':
                return 'Other';
            break;
        }

        switch($guests) {
            case '1':
                return '10-25 People';
            break;
            case '2':
                return '25 - 50 People';
            break;
            case '3':
                return '50 - 75 People';
            break;
            case '4':
                return '75 - 100+ People';
            break;
        }

これらは文字列を返します。つまり、ケースが一致する限り、switch ステートメントの後のコードは実行されません。

次のように変数を再定義しようとしている可能性があります。

switch($event_type) {
    case '1':
        $event_type =  'Baby Shower';
        break;
    case '2':
        $event_type =  'Wedding';
        break;
    case '3':
        $event_type =  'Kids Party';
        break;
    case '4':
        $event_type =  'Birthday';
        break;
    case '5':
        $event_type =  'Other';
        break;
}

switch($guests) {
    case '1':
        $guests =  '10-25 People';
        break;
    case '2':
        $guests =  '25 - 50 People';
        break;
    case '3':
        $guests =  '50 - 75 People';
        break;
    case '4':
        $guests =  '75 - 100+ People';
        break;
}
于 2013-07-01T20:50:39.253 に答える
0

ポート 25 が開いているかどうかを確認しましたか? ここにリンクがあります: http://www.yougetsignal.com/tools/open-ports/

于 2013-07-01T19:52:24.067 に答える