2010-10-12 79 views
1
$subjt = $subject; 
$message = $message; 
$toinfo .= $snteadd[$i]; 
$headers = "MIME-Version: 1.0 \r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= "From: <$fromemailid>\r\n"; 
$headers .= "Cc: <$sendCC>\r\n"; 
$headers .= "Bcc: <$sendBCC>\r\n"; 
$headers .= "Return-Path: <$fromemailid>\r\n"; 
$headers .= "Errors-To: <$fromemailid>\r\n"; 
$headers .= "X-Mailer: PHP 4.x". phpversion() 
@mail($snteadd[$i], $subjt, $message, $headers); 
+3

它的时间升级到PHP 5 – 2010-10-12 11:54:36

回答

3

返回到发送电子邮件值

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

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

然后,你可以这样做:

if (@mail($snteadd[$i], $subjt, $message, $headers)) 
{ 
    echo 'delivered to smtp'; 
} 
else 
{ 
    echo 'not delivered to smtp'; 
} 

如果你想检查邮件到达您的发送者,然后可能是更好的解决方案将得到链接到具有独特的参数确定的邮件编号脚本,并获取信息在邮件文本中点击链接。

+0

我会说分别“发送”和“未发送”。正如你所指出的那样,“交付”是非常不同的。 – Piskvor 2010-10-12 11:52:42

+0

我会写“发送到邮件服务器进行发送”,而在其他部分应该有这样的内容:“发送邮件时出错” – ITroubs 2010-10-12 11:53:21

1

检查mail功能时有失败返回false的返回值。

if(@mail($snteadd[$i], $subjt, $message, $headers) === false) { 
    // mail failed. 
} 
1

只是对以前的答案扩大,@用来从下面的函数明确取消错误消息显示 - 所以你的代码确实是发送电子邮件,如果它失败了不要告诉我。 ..这通常是唯一好,如果你a)不关心或b)检查它是否自己工作 - 例如与其他地方所示的if块一起使用

0

虽然mail()函数在成功时返回true,在失败时返回false ,它报告的状态仅意味着“接受由本地服务器交付”,绝对是而不是“已交付”。

用于大多数电子邮件保证的SMTP协议什么都没有。它应该尝试发送电子邮件,有时;再次,不能保证它会在十分钟内,明天或本月(发生)。更糟糕的是,没有可靠的方法可以判断您发送的邮件是否已实际发送给目标收件人。

即使电子邮件已发送给收件人,它可能会被混洗到垃圾箱,用户也不会看到它。

换句话说,您唯一可以确定的是电子邮件是否是您发送的;除此之外的任何事情都不确定(see also this for other possible pitfalls

0

如果有人想知道为什么他们设置的“Return-Path”头没有被遵守,许多php设置会用别的东西代替头,通常是服务器的默认电子邮件地址。 ,[email protected])。使用(常常被忽视)第五个参数,$ additional_parameters这样:

mail($toMail, $subject, $message, $other_headers, "[email protected]") 

[email protected]是你想要的返回路径是电子邮件。在此之前的-f部分使“邮件发件人”成为该电子邮件地址。

相关问题