1

重複の可能性:
hotmail.comがメールを受信して​​いない

私のサイトにはこの単純なフォームがあり、Hotmailアカウントに送信されたときに、ジャンクフォルダーでさえも電子メールを受信しません。

フォームコードは次のとおりです。

<form action="mail.php" method="POST">
    <p><label title="Name">Name:</label><br />
        <input type="text" name="name" autocomplete="on" required="required"></p>
    <p><label title="Email">Email:</label><br />
        <input type="text" name="email" autocomplete="on" required="required"></p>
    <p><label title="About">My message is about...</label><br />
        <select name="about">
            <option value="general">General Query</option>
            <option value="wedding">Wedding</option>
            <option value="corporate">Corporate Event or Trade Show</option>
            <option value="other">Other Event</option>
        </select>
    <p><label title="Message">Message:</label><br />
        <textarea name="message" rows="6" cols="25" required="required"></textarea></p>
    <input type="submit" value="Send">
</form>

そしてmail.phpファイル:

<?php 
        $name = $_POST['name'];
        $email = $_POST['email'];
        $message = $_POST['message'];
        $about = $_POST['about'];
        $formcontent="From: $name \n About: $about \n Message: $message";
        $recipient = "MyEmailAddress@Live.co.uk";
        $subject = "Contact Form";
        $mailheader = "Reply-To: $email \r\n";
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
    echo "Thank You!";
?>

「ありがとう!」のページが表示されてしまいます。表示されますが、電子メールは受信されません。

4

2 に答える 2

3

メール配信はトリッキーなビジネスです...メールを送信したからといって、誰もがそれを受信するわけではありません。多くの受信サーバーは、特定の基準を満たしていない場合、着信メッセージを単に無視します(私の経験では、GmailとHotmailは特にサイレントに配信を拒否する傾向があるため、スパムにさえなりません)。確実に実行するためのいくつかのことがあります。

1) DNSレコードにPTR / SPF (逆引き参照)エントリを設定しました

2)ブラックリストに載っていないことを確認してください(http://www.mxtoolbox.com/blacklists.aspx

3)ヘッダーを展開します

$headers = "MIME-Version: 1.0\r\n"
          ."Content-Type: $contentType; charset=utf-8\r\n"
          ."Content-Transfer-Encoding: 8bit\r\n"
          ."From: =?UTF-8?B?". base64_encode("Your sending display name") ."?= <$from>\r\n"
          ."Reply-To: $replyTo\r\n"
          ."X-Mailer: PHP/". phpversion();

ただし、本当にメールが確実に届くようにしたい場合は、SMTP経由でメールを送信してください。メール配信を保証することはできませんが、はるかに信頼性が高くなります。大量のメールを送信していない場合は、マンドリルまたは同様のサービスを使用してメールを中継してみてください。

于 2012-12-15T19:31:38.113 に答える
0

次の方法を使用できます。成功するとtrueを返します。

function sendMail($email, $subject, $message)
{
    $supportEmail = 'info@abc.com';
    $from = 'Abc';
    $msg  = $message;
    $from = str_replace(' ', '-', $from);
    $frm  = $from.' <'.$supportEmail.'>';
    preg_match("<(.*)@(.*\..*)>", $frm, $match);

    ///////////////////Headers/////////////////
    $hdr='';
    $hdr.='MIME-Version: 1.0'."\n";
    $hdr.='content-type: text/html; charset=iso-8859-1'."\n";
    $hdr.="From: {$frm}\n";
    $hdr.="Reply-To: {$frm}\n";
    $hdr.="Message-ID: <".time()."@{$match[2]}>\n";
    $hdr.='X-Mailer: PHP v'.phpversion();
    $x=@mail($email, $subject, $msg, $hdr);
    if($x==0)
    {
        $email=str_replace('@','\@', $email);
        $hdr=str_replace('@','\@',$hdr);
        $x=@mail($email, $subject, $msg, $hdr);
    }
    return $x;
}
于 2012-12-15T19:40:02.980 に答える