2012-08-15 124 views
2

我正在制作一个系统,用于收集用户的数据。我知道一些会是垃圾邮件!我只是想知道如果邮件功能不正确,邮件功能是否返回false?如果电子邮件不正确,PHP邮件功能是否返回

说我有。

<?php 

    $to = "[email protected]"; 
    $header = "From: {$to}"; 
    $subject = "Hi!"; 
    $body = "Hi,\n\nHow are you?"; 

    if (mail($to, $subject, $body, $header)) { 
      echo("<p>Message successfully sent!</p>"); 
    } else { 
      echo("<p>Message delivery failed...</p>"); 
    } 

    ?> 

如果电子邮件地址不正确,会打印哪条信息?

如果它返回false我想要一个“标志”与它一起存储在该数据库中,以便管理员可以查看并删除它。

+3

您是否尝试过运行该代码以查看返回的内容? – andrewsi 2012-08-15 14:20:32

+0

请定义'不正确'。它可以是'无效'(=不符合RFC 2822),在这种情况下,'mail'将返回'FALSE'或'not existing',在这种情况下'mail'将愉快地返回'TRUE'。 – raina77ow 2012-08-15 14:23:49

+0

只是有人可能编造的虚假电子邮件。它不是真实的,但仍然适合电子邮件地址的格式,例如[email protected] – Will 2012-08-15 14:25:42

回答

5

不一定。

manual,该mail()函数将返回true如果消息被接受交付 - 但并不保证它会被传递:

返回true如果邮件被成功接受交付,否则为否则为 。

重要的是要注意,仅仅因为邮件被接受为 交付,它并不意味着邮件实际上会到达预期的 目的地。

+0

那么有没有办法找出电子邮件是“真实的”还是正在验证它反对类似我能做的最好的正则表达式? – Will 2012-08-15 14:29:54

+0

@Will最好的办法是扫描服务器的邮件日志,查看每封发送的邮件;正常的结果会有类似于“status = sent”的有效电子邮件或“status = bounced”的无效内容 - 这取决于您的服务器使用的程序和记录格式。另外,发送电子邮件时,您需要稍后*扫描它 - 可能需要几分钟的时间才能发送未完成的流量。 – newfurniturey 2012-08-15 14:33:03

+0

这听起来像比我打算为这个哈哈做更多的工作。感谢您的答案。 – Will 2012-08-15 14:45:57

3

所有的服务器都可以告诉你是邮件被接受传递与否。除非你写了一个无效的电子邮件地址或者这样的地方,否则它就是“没有电子邮件”,所以服务器会拒绝它,那么不可以,可悲的是,只能说“是的,邮件放在电子邮件中”或“否它不是“它不能告诉你它是否到达那里,阅读或以其他方式。

1

在这种情况下,你在你的评论已概述

[email protected] 

尽可能的邮件系统而言,这是一个有效的电子邮件地址。

消息发送成功!

将被显示。邮件功能无法保证收到收件人。并且在你问它无法检查之前。

+0

谢谢:/希望事实并非如此。 – Will 2012-08-15 14:30:51

+0

电子邮件协议是在20世纪70年代编写的,任何人都不必担心垃圾邮件! :) – 2012-08-15 14:31:49

相关问题