2009-06-29 81 views
1

我如何通过php脚本发送邮件? 我试图做财产以后这样的:如何通过php脚本发送邮件?

for($k=0;$k<=$x->length-1;$k++) 
{ 
    for($l=0;$l<=$j-1;$l++) 
    { 
     if($y->item($k)->nodeValue==$JobNoArr[$l] && $AcceptanceDateArr[$l]=='0000-00-00') 
     { 
      //echo $v->item($k)->nodeValue ; 
      $email = $v->item($k)->nodeValue . ","; 
      $to = $email; 
      $subject = "My subject"; 
      $txt = "Hello world!"; 
      $headers = "From: [email protected]" . "\r\n" . 
      "CC: [email protected]"; 
      mail($to,$subject,$txt,$headers); 
     } 
    } 
} 

请帮我在这个问题上。

最佳 Zeeshan

+1

所以你有一些代码。它的表现与你期望的表现有何不同?报告了哪些错误? – Quentin 2009-06-29 15:09:23

+0

嗯,我发送电子邮件和邮件是通过谷歌身份号码,但不是雅虎或另一个域,我基本上寻找工作。 – 2009-06-29 18:56:09

+0

$ y似乎是DOMXPath :: query()的结果,$ JobNoArr/$ AcceptanceDateArr可能来自数据库查询,至今为止?在这种情况下,嵌套的for-loops“味道”是不必要的。您能否更具体地了解数据源以及您选择某些记录(从xml和数据库)的方式? – VolkerK 2009-07-08 11:49:15

回答

16

我强烈建议不要使用PHP的mail()函数发送邮件。撰写有效的电子邮件并成功交付它们比乍看起来要复杂得多。有编码,把部件放在一起,验证&卫生,错误报告(超过bool mail(...)),支持身份验证和等等... mail()函数不提供任何这些东西。

尝试SwiftMailer或类似的。您可以将其配置为使用PHP的mail()函数等等。我强烈推荐它。

3

先做

echo $result = mail($to,$subject,$txt,$headers); 

,看看有什么u得到,错误?

我建议使用一类这样的PHPMailer

为什么你的部份行的结尾都用逗号?

$email = $v->item($k)->nodeValue . ","; 

您每发送一封邮件。

6

你一次尝试太多。尝试一次一步。首先发送一封简单的电子邮件,使用硬编码参数来实现这一功能,然后在嵌套循环的上下文中进行故障排除。

2

的PHP的邮件功能使用的sendmail作为MTA,这样即使有些邮件经历,有些不是,我想看看sendmail的记录错误。

1

如果你是一个共享的虚拟主机,或者您的家用电脑,服务器的主要领域将是事遂所愿

server.your-isp-or-host.com 

的垃圾邮件过滤器会看到电子邮件,声称是从

yourdomain.com 

当它确实来自第一个地址,然后将其删除。

这将解释您的错误的命中和性质。

如果您位于专用服务器或指向您的家庭计算机并具有正确设置的DNS的静态IP,则上述内容不适用。

1

如果它工作在发邮件的Gmail那么它应该工作正常发送电子邮件到yahoo太

你会发现,这个问题是不是电子邮件的发送,但也许雅虎是其标记为垃圾邮件或阻止他们在网关

我注意到你在电子邮件地址的末尾附加了一个逗号,这是什么意思?

可能还有其他问题,你的循环是否正确,他们是否涵盖了你所期望的所有情况。

你发送数以千计的电子邮件?你的mta可以处理你将邮件放入队列的速度

是你的脚本打max_execution时间和停止?