如果发件人邮件无效,则Php Mail不起作用

时间:2014-12-03 15:09:11

标签: php email

在我的网站上,我有一个小小的联系表单,使用PHP将邮件发送到我的个人电子邮件地址。 在表单中,我询问用户他的电子邮件地址。如果地址存在,脚本将完美运行,并将很快收到消息。但如果用户输入了错误的邮件地址,我将永远不会收到它。这是正常的吗?这是我的一小部分剧本......

/* Prepare Email Subject */

$email_subject = '[CONTACT FORM]' . "\t" . $title;

/* Prepare Email Message */

$email_message .= "Nom: ".clean_string($name)."\n";
$email_message .= "Email: ".clean_string($email)."\n";
$email_message .= "Telephone: ".clean_string($tel)."\n";
$email_message .= "Message: ".clean_string($msg)."\n";

/* Prepare Email Header */

$headers = 'From: '.$email."\r\n".

'Reply-To: '.$email."\r\n" .

'X-Mailer: PHP/' . phpversion();

/* Send Email and redirect */

mail($email_to, $email_subject, $email_message, $headers);  
header ('location: /?status=success#contact');

我想感谢大家的答案。如果问题不够明确,我很抱歉,我希望我的英语是可以理解的(我是一个法国人)!

对于那些不明白我的问题的人:

在我的脚本中,我将用户的邮件地址放在邮件标题中。 如果用户给我一封有效的电子邮件,那么我会收到该消息,否则我不会。

不要担心变量,这只是我脚本的最后一部分,但我验证了所有这些。

当我说“只有地址存在”时,我真的很想表示,如果地址没有注册,或者域名不存在,它就不起作用。 在发送邮件之前,我通过应用正则表达式测试来验证地址是否“有效”。 如果我输入,例如:abcde@aeaefa.fr我将不会收到邮件。这就是为什么它很奇怪,邮件地址格式很好。

blue112,我要创建一个postmaster地址,然后用它来发送这些邮件。

2 个答案:

答案 0 :(得分:1)

您不应该使用用户的邮件发送邮件。

  1. 这是一种不好的做法。你有点篡夺它的身份
  2. 如果用户使用gmail,并且您将其设置为gmail,则gmail不会信任您,因为他知道它从不发送电子邮件
  3. 他们很有可能将电子邮件放入垃圾邮件箱
  4. 最好的方法是使用"有效"和#34;来自"中使用的受信任的电子邮件标题字段。

    另外,关于你的脚本,你可以将`mail``函数包装在if中,以便在发送过程中一切正常。

    if (mail($email_to, $email_subject, $email_message, $headers))
    {
        header ('location: /?status=success#contact');
    }
    else
    {
        echo "Sending mail failed";
    }
    

    但是,这并不能保证邮件成功到达。

答案 1 :(得分:0)

由于如果他们输入了无效的地址,您很可能无法对电子邮件执行任何有用的操作,您应该检查电子邮件地址是否有效,对于您可以访问的用户有不同程度的烦恼获取此信息有效:

  • 使用正则表达式匹配电子邮件地址
  • 要求用户确认他们的电子邮件,这会捕获错误类型(一些烦恼)
  • 要求用户先注册才能使用联系表格(大烦恼)

您还可以使您的邮件具有您拥有的静态发件人和回复地址,并在邮件的实际正文中包含用户输入的电子邮件地址,这可确保您实际收到电子邮件,即使他们可能已经提供了联系人形成垃圾邮件地址。