6

私はこの問題がここで数回解決されたことを知っています。適切なヘッダーを設定するための指示に従ってみましたが、Gmailのスパムフィルターに入るメールで問題が発生します。

私が試したことを誰かが見てくれたら、本当にありがたいです。以下のコードには、ここで説明されているようにヘッダーが追加されていません:http ://www.velvetblues.com/web-development-blog/avoid-spam-filters-with-php-mail-emails/

前もって感謝します。

define("WEBMASTER_EMAIL", 'myName@mydomain.com');
if($post)
{
    $name    = stripslashes($_POST['name']);
    $email   = trim($_POST['email']);
    $subject = trim($_POST['subject']);
    $message = stripslashes($_POST['message']);

    $error = '';

    // Check name
    if(!$name)
        $error .= 'Name required! ';

    // Check email
    if(!$email)
        $error .= 'E-mail required! ';

    if($email && !ValidateEmail($email))
        $error .= 'E-mail address is not valid! ';

    // Check message
    if(!$message)
        $error .= "Please enter your message!";

    if(!$error)
    {

        $mail = mail(WEBMASTER_EMAIL, $subject, $message,
            "From: ".$name." <".$email.">\r\n"
            ."Reply-To: ".$email."\r\n"
            ."X-Mailer: PHP/" . phpversion());

        if($mail)
            echo 'OK';
    }
    else
        echo '<div class="errormsg">'.$error.'</div>';
}
4

4 に答える 4

12

このコードを使用 してください:

 $to = Email;
 $subject = subject ;
 $body = "<div> hi hi .. </div>";

    $headers = 'From: YourLogoName info@domain.com' . "\r\n" ;
    $headers .='Reply-To: '. $to . "\r\n" ;
    $headers .='X-Mailer: PHP/' . phpversion();
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";   
if(mail($to, $subject, $body,$headers)) {
  echo('<br>'."Email Sent ;D ".'</br>');
  } 
  else 
  {
  echo("<p>Email Message delivery failed...</p>");
  }
于 2012-08-30T00:46:02.513 に答える
4

これがあなたの問題だと思います:

 "From: ".$name." <".$email.">\r\n"

あなたはGmail、hotmail、またはユーザーの電子メールプロバイダーではないため、「From:otherdomain.com」を使用して「mail.yourdomain.com」経由でメールを配信することはできません。これにより、メールがスパムフォルダに移動する可能性があります。

試す

 "From: YourWebsiteName <noreply@yourwebsite.com>\r\n"
."Reply-To: ".$name." <".$email.">\r\n"

代わりは。

また:あなたのコードは非常に保存されておらず、主要なスパムターゲットです-グーグル「メールヘッダーインジェクションphp」!

于 2012-08-30T00:36:39.060 に答える
0

Googleは、Webサイトだけでなく、ネットワーク全体で多くのユーザーにスパムを送信していたサービスプロバイダーも懲戒する傾向があります。グーグルがスパマーとして認識するこれらのサービスプロバイダーの1つにサインアップしている場合、これがphp mail()メッセージがGmailのスパムボックスにドロップする理由である可能性があります。この問題についてサーバープロバイダーとチャットしてみてください。

その場合、「スパム」メッセージでグーグルから警告が表示されます。

「このメッセージがスパムに含まれているのはなぜですか?home.plからのメッセージの多くがスパムであることがわかりました。詳細をご覧ください。」

于 2014-01-27T13:38:31.640 に答える
0

私はこの質問が何年も前に尋ねられたことを知っていますが、それが潜在的に新しい訪問者を助けることができるように、私はここに2020年の答えを落とすと思いました。

ご注意ください:

  • この回答は一般的な回答として機能し、使用しているフォーム入力に応じて詳細の一部を編集する必要があります。
  • また、ヘッダーなどのメールアドレスをドメインに接続されているものに更新する必要があります。
  • このソリューションは、GoogleRecaptchaを使用していることを前提としています。そうでない場合は、「Googlerecapthca」に関する部分を削除してください。
  • このスクリプトは、削除してはならないセキュリティと検証を追加しました。
  • Sweet Alertを使用する場合は、 CDNまたはNPMを介してWebサイト/アプリにインストールする必要があります。

メール送信時にトリガーされるカスタムSweetAlertアラートを作成するためのJavascript:

// Custom SweetAlert alert that gets triggered on email send
function enquirySent() {
    swal({
      title: "Email sent!",
      text: "Thank you for your email. We'll be in contact ASAP.",
      icon: "success",
      button: "Okay",
    });
}
function enquiryNotSent() {
    swal({
      title: "Oops!",
      text: "Your email was NOT sent due to an error.",
      icon: "error",
      button: "Okay",
    });
};

メールを送信するためのPHPスクリプト:

<?php
    if (isset($_POST['submit'])) {

        // For the Google recaptcha
        $curlx = curl_init();
        curl_setopt($curlx, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify");
        curl_setopt($curlx, CURLOPT_HEADER, 0);
        curl_setopt($curlx, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($curlx, CURLOPT_POST, 1);
        $post_data = [
            'secret' => 'YOUR CAPTCHA SECRET KEY',
            'response' => $_POST['g-recaptcha-response']
        ];
        curl_setopt($curlx, CURLOPT_POSTFIELDS, $post_data);
        $resp = json_decode(curl_exec($curlx));
        curl_close($curlx);
        // Google recaptcha end

        // Form details (sanitized)
        $name = htmlspecialchars($_POST['name']);
        $surname = htmlspecialchars($_POST['surname']);
        $email = htmlspecialchars($_POST['email']);
        $message = htmlspecialchars($_POST['message']);

        // Mail headers and details
        $email_from = 'youremail@yourdomain.com';
        $email_body = "You have received a new message from the user $name $surname.\nHere is the message:\n\n".$message;

        $headers = "From: $email_from \r\n";
        $headers .= "Reply-To: ".$email."\r\n";
        $headers .= "Return-Path: ".$email."\r\n";
        $headers .= "MIME-Version: 1.0\r\n";
        $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
        $headers .= "X-Priority: 3\r\n";
        $headers .= "X-Mailer: PHP". phpversion() ."\r\n" ;

        $error = false;

        // Some more input validation/sanitizing
        if (!preg_match("/^[a-zA-Z ]*$/",$first_name) && $first_name!="") {
            $error = true; 
        }
        if (!preg_match("/^[a-zA-Z ]*$/",$last_name) && $last_name!="") {
            $error = true; 
        }
        if (!filter_var($email, FILTER_VALIDATE_EMAIL) && $email!="") {
            $error = true;
        }

        function IsInjected($str) {
            $injections = array('(\n+)',
                   '(\r+)',
                   '(\t+)',
                   '(%0A+)',
                   '(%0D+)',
                   '(%08+)',
                   '(%09+)'
                   );
                       
            $inject = join('|', $injections);
            $inject = "/$inject/i";
            
            if (preg_match($inject,$str)) {
              return true;
            } else {
              return false;
            }
        }

        if (IsInjected($visitor_email)) {
            echo "Bad email value!";
            exit;
        }

        // Sending the email
        if ($error == false) {
            $to = "youremail@yourdomain.com";
            $subject = "Enquiry from website";
            mail($to, $subject, $email_body, $headers);

            // Calling the email sent / not sent alerts
            echo '<script type="text/javascript">',
                'enquirySent()',
                '</script>';
        } else {
            echo '<script type="text/javascript">',
                'enquiryNotSent()',
                '</script>';
        }
    }
?>
于 2020-07-05T12:54:39.490 に答える