联系表单 - 使"from" URL 在邮件正文中看起来不像 URL,以避免消息被视为垃圾邮件?



我在网站每个页面的底部都有一个联系表格。消息是通过下面的代码发送的。它工作得很好,但事实上,在邮件正文中,发送邮件的 URL 看起来像这样"来自站点:http://www.mywebsite.com/page2.htm"使邮件每次都转到我的垃圾邮件项目(我知道我可以将其标记为非垃圾邮件等)。

有没有办法制作URL(由. $_SERVER['HTTP_REFERER']检索)) 在消息正文中看起来不像 URL,即但输入空格 www 和 .com 或任何其他解决方案?

非常感谢

发送消息.php:

<?php
// Email Submit
// Note: filter_var() requires PHP >= 5.2.0
if ( isset($_POST['email']) && isset($_POST['name']) && isset($_POST['message']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {
  // detect & prevent header injections
  $test = "/(content-type|bcc:|cc:|to:)/i";
  foreach ( $_POST as $key => $val ) {
    if ( preg_match( $test, $val ) ) {
      exit;
    }
  }
  //send email
 mail( "contact@dfsdfds.com", "New message from: ".$_POST['name'], $_POST['message']."nFrom site: ". $_SERVER['HTTP_REFERER'], "From:" . $_POST['email'] . "rn" . "BCC: dfds@gmail.com" );
}
?>

脚本.js:

// Contact Form
$(document).ready(function() {
    $("#contactfrm").submit(function(e) {
        e.preventDefault();
        var name = $("#name").val();
        var email = $("#email").val();
        var message = $("#message").val();
        var dataString = 'name=' + name + '&email=' + email + '&message=' + message;
        function isValidEmail(emailAddress) {
            var pattern = new RegExp(/^((([a-z]|d|[!#$%&'*+-/=?^_`{|}~]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])+(.([a-z]|d|[!#$%&'*+-/=?^_`{|}~]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])+)*)|((x22)((((x20|x09)*(x0dx0a))?(x20|x09)+)?(([x01-x08x0bx0cx0e-x1fx7f]|x21|[x23-x5b]|[x5d-x7e]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(\([x01-x09x0bx0cx0d-x7f]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))))*(((x20|x09)*(x0dx0a))?(x20|x09)+)?(x22)))@((([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])*([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))).)+(([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])*([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))).?$/i);
            return pattern.test(emailAddress);
        };
        if (isValidEmail(email) && (message.length > 1) && (name.length > 1)) {
            $.ajax({
                type: "POST",
                url: "sendmessage.php",
                data: dataString,
                success: function() {
                    $('input[name="submit"]').hide();
                    $('.error').hide()
                    $('.success').fadeIn(1000);
                }
            });
        } else {
            $('.error').fadeIn(1000);
        }
        return false;
    });
});

也许你需要切断 url 前面的 http://,如下所示:

str_replace("http://", "", $_SERVER['HTTP_REFERER'])

如果你想在.com(等)之间放置空格,你也可以用str_replace(查找细节)。但我认为您不需要在 url 中使用放置空格,因为大多数垃圾邮件过滤器会扫描 http://部分以进行链接检测。过滤电子邮件的另一个原因可能是短文本或未知的发送服务器。

最新更新