我遇到了PHP mail
函数的意外问题。该脚本将电子邮件发送到所有电子邮件地址,但不发送到我的域。
假设我发送电子邮件至nitinsoni@gmail.com
已收到,但当我向nitin@mydomain.com
发送电子邮件时,未收到该电子邮件。
我正在使用GoDaddy网络托管和PHP mail
功能。 SMTP也无法在GoDaddy服务器上运行。
PHP代码如下:
<?php
$to = 'nitin@mydomain.com';
//$to = 'nitinsonitest@gmail.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: nitinsonitest@gmail.com' . "\r\n" .
'Reply-To: nitinsonitest@gmail.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$r = mail($to, $subject, $message, $headers);
if($r) {
echo 'mail sent';
}else {
echo 'not sent';
}
die;
?>
通过PHPMailer
发送的SMTP电子邮件也不起作用:
<?php
echo "<pre>";
//die('ada');
require 'PHPMailerAutoload.php';
$mail = new PHPMailer();
$mail->Host = "relay-hosting.secureserver.net"; // your SMTP Server
$mail->IsSMTP();
$mail->PORT = 465;
$mail->SMTPDebug=true;
$mail->SMTPAuth = true; // Auth Type
$mail->SMTPSecure = "ssl";
$mail->Username = "user@gmail.com";
$mail->Password = "password";
$mail->Sender = "user@gmail.com";
$mail->From = "user@gmail.com";
$mail->AddReplyTo("user@gmail.com");
$mail->FromName = "user ";
$mail->AddAddress("recepient@gmail.com");
$mail->IsHTML(true);
$mail->Subject = "Test subject";
$mail->Body='Test Subject';
$mail->WordWrap = 50;
if($mail->Send())
{
echo"<script>alert('The Form has been posted ,Thank you');</script>";
}
else
{
echo 'mail error';
}
答案 0 :(得分:0)
假设我向
nitinsoni@gmail.com
发送了电子邮件,但收到的时间是 我发送电子邮件至nitin@mydomain.com
未收到。我正在使用GoDaddy网络托管和PHP
我怀疑这与使用mail
或PHPMailer
时的编码有关。问题只是因为你发送邮件,并不意味着接收端认为邮件是有效的。并且机会是接收端 - 即使它是你的域 - 已经决定从随机服务器发送的随机电子邮件只是垃圾邮件。
我发布了a more detailed answer here,但是当谈到垃圾邮件时,它基本上归结为:您的域名是否有SPF (Sender Policy Framework)个记录设置?您是否也为该域设置了a PTR (reverse DNS) record?
如果您没有SPF或PTR记录,则您的消息被标记为垃圾邮件的可能性非常高。
如果您认真对待从服务器发送邮件,则至少需要获取SPF记录。 PTR记录集。