我如何通过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: webmaster@example.com" . "\r\n" .
"CC: someother.valid@email.adr";
mail($to,$subject,$txt,$headers);
}
}
}
请在这个问题上帮助我。
最佳Zeeshan
答案 0 :(得分:16)
我强烈建议不要使用PHP的mail()
函数发送邮件。撰写有效的电子邮件并成功发送它们比初看起来更棘手。有编码,将各部分放在一起,验证&amp;卫生,错误报告(超过bool mail(...)
),支持身份验证等等...... mail()
功能不提供任何此类功能。
尝试SwiftMailer或类似内容。您可以将其配置为使用PHP的mail()
函数等等。我强烈推荐它。
答案 1 :(得分:6)
你一下子尝试了太多。尝试一步一步。首先发送一个简单的电子邮件,其中包含硬编码参数以使其正常工作,然后在嵌套循环的上下文中对其进行故障排除。
答案 2 :(得分:5)
问题是邮件功能非常不可靠,尤其是在发送大量电子邮件时。
我建议查看PHPmailer库(使用直接SMTP连接): http://phpmailer.codeworxtech.com/
答案 3 :(得分:4)
代码(最内部的块)看起来正确。确保您的环境设置正确。 http://ca3.php.net/manual/en/mail.setup.php
答案 4 :(得分:3)
首先做
echo $result = mail($to,$subject,$txt,$headers);
看看你得到了什么,错误?
我建议使用像phpMailer这样的类
为什么你在行的末尾有逗号?
$email = $v->item($k)->nodeValue . ",";
你每次都发一封邮件。
答案 5 :(得分:2)
php-s邮件功能使用sendmail作为MTA,所以如果有些邮件通过而有些邮件不通过,我会查看sendmail的日志以查找错误。
答案 6 :(得分:1)
如果您在共享的网络主机或家用计算机上,则服务器的主域名将是
server.your-isp-or-host.com
垃圾邮件过滤器会看到声称来自
的电子邮件yourdomain.com
当它真的来自第一个地址时,然后将其删除。
这可以解释错误的命中与错过。
如果您使用专用服务器,或者通过正确设置DNS指向家庭计算机的静态IP,则上述操作不适用。
答案 7 :(得分:1)
如果它能够向gmail发送电子邮件,那么它也可以正常发送电子邮件给雅虎
您可能会发现问题不在于发送电子邮件,但也许雅虎会将其标记为垃圾邮件或在网关处阻止它们
我注意到你在电子邮件地址的末尾附加一个逗号,这是什么意思?
可能还有其他问题,你的循环是否正确,是否涵盖了你所期望的所有情况。
你发送了数千封电子邮件吗?您的mta可以处理将电子邮件放入队列的速率吗你的脚本是否达到max_execution时间并停止?