2012-11-10 95 views
2

由于某种原因,我可以在yahoo.com上使用以下代码接收电子邮件,但不能收到hotmail.com?有人可以解释一下吗?邮件没有被hotmail.com收到

$usr = "[email protected]"; 
$subject = "Test Email"; 
$from = "[email protected]"; 
ini_set("sendmail_from", $usr); 
$message = "<html><body style=\"font-family: Tahoma, Verdana, Arial; font-size: 12px; color: #444;\"> 
     <h1 style=\"font-family: Tahoma, Verdana, Arial; font-size: 16px; color: #111;\">This is an email</h1> 
     <span style=\"background: #CCC; display: block; padding: 20px;\"><br><br> 
     <b>This is a test.</b></body></html>"; 
$headers = "MIME-Version: 1.0" . PHP_EOL; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1" . PHP_EOL; 
$headers .= "From: Test.com<$from>" . PHP_EOL; 
mail($usr, $subject, $message, $headers); 
echo "<b>to:</b>$usr<br>"; 
echo "<b>subject:</b>$subject<br>"; 
echo "<b>msg:</b>$message<br>"; 
echo "<b>headrs:</b>$headers<br>"; 

我尝试了很多次,没有什么。但它直接与yahoo.com合作。

注意:没有垃圾邮件,垃圾邮件或任何收到的邮件。我的iPhone上没有收到与该帐户相关的电子邮件。 :(

+0

它是否进入垃圾邮件文件夹?或者它根本没有得到Hotmail? –

+0

请勿使用'PHP_EOL',因为它可能因您使用的服务器而异。对于电子邮件标题,**总是**使用'\ r \ n'作为分隔符,如[手册页](http://php.net/manual/en/function.mail.php)所述: '多个​​额外的头文件应该用CRLF(\ r \ n)分隔。“# – h2ooooooo

+0

@ h2ooooooo我曾经使用过\ r \ n,然后在Outlook中没有被识别为HTML邮件。所以我开始使用PHP_EOL,因为这似乎解决了这个问题。 – Chud37

回答

0

它可能是垃圾邮件过滤器编写自己的实施邮件脚本的演戏了,因为一些头尚未传递给它的满意度。

相反,你可以使用的一个像PHPMailer

+0

后两个人推荐它我可能会与SwiftMailer去,但谢谢。 – Chud37

0

测试现有的这可能是不正确的,但不是每一个邮件系统(如谷歌,雅虎)不支持字体。也许Hotmail的是试图阻止的字体,从我的其他问题。 Hotmail已经升级了他们的垃圾邮件,一些电子邮件也没有通过软件。

0

披露:我的背后AlphaMail

开发商是不容易说的问题是,这里正是一个。电子邮件最终是垃圾邮件,还是Hotmail拒绝你的邮件?如果邮件被拒绝,可能是由于Hotmail因某种原因阻止了您的域名。如果它位于共享主机上,可能是由于垃圾邮件。如果你想找出确切的原因(垃圾域名,缺少SPF,缺少DKIM),请尝试从服务器手动连接到Hotmail并send the email manually。这样你就会有错误,而不是二次猜测。

如果你不想这样做,只是希望它的“工作”,我会建议你使用一个事务性的电子邮件服务,例如:

为什么?

  • 您不必多想那么多关于电子邮件传递。
  • 统计。让我们跟踪总发送/点击/打开/反弹。
  • 通常基于Web服务而不是SMTP。即更容易处理。
  • 更清晰的代码(至少如果您使用AlphaMail将数据与演示文稿分开)。
  • 可扩展和未来证明。

如果您选择使用AlphaMail,您可以使用AlphaMail PHP-client

例子:

include_once("comfirm.alphamail.client/emailservice.class.php"); 

$email_service = AlphaMailEmailService::create() 
    ->setServiceUrl("http://api.amail.io/v1") 
    ->setApiToken("YOUR-ACCOUNT-API-TOKEN-HERE"); 

$person = new stdClass(); 
$person->userId = "1234"; 
$person->firstName = "John"; 
$person->lastName = "Doe"; 
$person->dateOfBirth = 1975; 

$response = $email_service->queue(EmailMessagePayload::create() 
    ->setProjectId(12345) // Your AlphaMail project (determines template, options, etc) 
    ->setSender(new EmailContact("Sender Company Name", "[email protected]")) 
    ->setReceiver(new EmailContact("Joe Doe", "[email protected]")) 
    ->setBodyObject($person) // Any serializable object 
); 

与AlphaMail另一个好处是,你可以在AlphaMail Dashboard直接编辑你的模板,你可以使用the Comlang template language格式化您的电子邮件。

<html> 
    <body> 
     <b>Name:</b> <# payload.firstName " " payload.lastName #><br> 
     <b>Date of Birth:</b> <# payload.dateOfBirth #><br> 

     <# if (payload.userId != null) { #> 
      <a href="/sign-up">Sign Up Free!</a> 
     <# } else { #> 
      <a href="/login?id=<# payload.userId #>">Sign In</a> 
     <# } #> 
    </body> 
</html> 
相关问题