我有一个由GoDaddy在虚拟专用平台上托管的网站,我无法让mail()
功能在我的PHP脚本中正常工作。我正在尝试向用户首次注册我的网站时发送带有验证码的电子邮件,而mail()
功能非常适合Gmail地址,但不适用于其他人,例如AOL甚至是GoDaddy的电子邮件服务!
我尝试与多个GoDaddy支持代表交谈,但他们在这个问题上并没有真正帮助。我在网上看了看,这似乎是在GoDaddy上托管他们网站的人们非常普遍的问题。当电子邮件发生故障时,我没有收到电子邮件的反弹,因此很难知道发生了什么。
这是我的PHP代码:
$sendtoemail = 'newsignup@aol.com';
$emailsubject = "Please validate your email";
$emailbody = "Validation info, blah blah.";
$emailheader = 'From: admin@example.com' . "\r\n" .
'X-Mailer: PHP' . "\r\n" .
'Reply-To: admin@example.com' . "\r\n" .
'-fadmin@example.com';
mail($sendtoemail, $emailsubject, $emailbody, $emailheader);
当我检查/usr/local/psa/var/log/maillog
(通过PuTTY SSH访问)时,我发现了一些错误:deferral: ./Maildir:_No_such_file_or_directory/
我还在我的托管帐户上激活了反向DNS并创建了一个SPF DNS记录,该记录通过“仅限GoDaddy”发送电子邮件并选中“包含PTR”框以进行DNS查找。这是在GoDaddy的DNS管理器的“区域文件编辑器”的“TXT(文本)”部分下。 (希望这对你来说比对我更有意义。)
答案 0 :(得分:5)
这是一个老话题,但我想我会在他们帮助别人的情况下添加我的经验。
我遇到了与mail()非常相似的问题,我调用了GoDaddy的技术服务。我在电话上打了2个小时,经过30个左右的测试电话()(他们甚至上传了自己的'testmail'脚本),我没有成功收到一封电子邮件(虽然mail()返回的值为1 ,即成功)。最终的结果是他告诉我,电子邮件服务器中继是“排队”的。两个小时后,一个技术支持人员和他的“系统管理员”......仍然是同样的问题。
解决方案是使用php库swiftmailer而不是普通的旧mail()函数。使用swiftmailer立即发送电子邮件。希望这有助于其他人!
毋庸置疑,我已经改变了托管服务提供商!
答案 1 :(得分:3)
我不确定GoDaddy是否支持PHP Mail,这对于网络托管公司来说通常是一个大问题,因为它在脚本中用于发送垃圾邮件。
最好的办法是检查GoDaddy在主机上有什么PEAR扩展,如果他们有PEAR邮件,你可以使用它。如果没有,那么您应该尝试使用经过身份验证的邮件发送。
如果需要,我可以举例说明PEAR和Authenticated邮件。
答案 2 :(得分:1)
你需要为GoDadday使用PHP mail()的默认变量,我不知道但是当我使用你的代码片段它也不适合我,但是通过使用标准变量,我得到了邮件;并且是的,不要将变量用于专用的电子邮件地址,像我一样放入mail()函数,
尝试希望也适合你;
$subject = "Please validate your email";
$message = "Validation info, blah blah. 2nd msg";
$Header = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$Header .= 'From: Lux <info@luxstyles.com >' . "\r\n";
if(mail('info@luxstyles.com', $subject, $message, $Header))
echo "email sent";
else
echo "email sending fail";
答案 3 :(得分:0)
所以我在godaddy deluxe主机上使用php的邮件功能做了一些工作。它将发送到我的Gmail帐户,但是使用域名的实际电子邮件帐户,该邮件在godaddy上,邮件从未成功。我不得不相信疯狂有某种方法。如果你没有从邮件()收到邮件,我的建议是尝试不同的电子邮件。我知道这可以帮助您完美地设置电子邮件的位置,但至少可以收到电子邮件。一旦您真正收到邮件,也许您可以使用转发技巧将邮件放入您选择的收件箱中。