发送电子邮件文本/ html失败

时间:2012-05-09 14:45:00

标签: php email

我正在尝试发送和发送电子邮件或/和HTML版本..

我的工作是:

 $bodyHTML = "
 --PHP-alt-$random_hash 
 Content-Type: text/plain; charset='iso-8859-1' 
 Content-Transfer-Encoding: 7bit

http://example.com/app_dl.php?app_id=$_GET[app_id] to download your $app_name app \n\r
Want to get tons more hot apps for free! anywhere anytime? Download our app on http://example' \n\r\n\r
example.com team

  --PHP-alt-$random_hash 
 Content-Type: text/html; charset='iso-8859-1'
Content-Transfer-Encoding: 7bit

 <p><a href='http://example.com/app_dl.php?app_id=$_GET[app_id]'>Click Here</a> to download your $app_name app</p>
 <p>Want to get tons more hot apps for free! anywhere anytime? Download our app on <a href='http://example.com'>example.com</a></p>
 <br/>
 <p>example.com team</p>
  --PHP-alt-$random_hash ";
endif;

这就是我得到的:

--PHP-alt-f4b83c7072ae970392b44308a6c36109 Content-Type: text/plain; charset='iso-8859-

    1' Content-Transfer-Encoding: 7bit http://example.com/app_dl.php?app_id=35 to download your PhoneMates app Want to get tons more hot apps for free! anywhere anytime? Download our app on http://example.com' example.com team --PHP-alt-f4b83c7072ae970392b44308a6c36109 Content-Type: text/html; charset='iso-8859-1' Content-Transfer-Encoding: 7bit
        Click Here to download your PhoneMates app
        Want to get tons more hot apps for free! anywhere anytime? Download our app on example.com

   example.com team
    --PHP-alt-f4b83c7072ae970392b44308a6c36109  

问题是我看到所有那些标题行..内容类型..而文本行无法用'\ n \ r'格式化..

另外,我不知道是否可以达到如果一个版本失败的效果.. html或txt ,,那么其他版本将会出现...感谢您的帮助

以下是一些代码:

 $random_hash = md5(date('r', time())); 
 $boundary="PHP-alt-".$random_hash;
 $headers = array ('From' => $from,
  'Content-Type'=>  'multipart/alternative',
   'boundary'=>$boundary,  
   'To' => $to,
    'Return-Path' => 'info@example.com',
   'Subject' => $subject);

其他细节,如发件人,通行证,标题,都不相关......所以我没有在这里介绍它们。

2 个答案:

答案 0 :(得分:2)

不要滚动自己的MIME处理。使用库而不是重新发明轮子。

我知道Swift是PHP领域的常用选项。

那就是说,我怀疑问题与MIME边界标记和标题之前的空格有关。尝试删除它。

最后,您的最后一个MIME边界缺少--

真的,真的,使用一个强大的,经过良好测试的第三方库来完成这些工作。你可能会出现太多繁琐的东西。

答案 1 :(得分:1)

当我自己编写时,正如您现在所做的那样,这是最后一组标题,最终成为正确的工作设置。

//headers - specify your from email address and name here
//and specify the boundary for the email
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From:".$from."\r\n";
$headers .= "To: ".$to."\r\n";
$headers .= "Return-Path: ".$from."\r\n";
$headers .= "Content-Type: multipart/alternative;boundary=" . $boundary . "\r\n";

另外,我的边界在上下文中看起来像这样:

$message .= "\r\n\r\n--" . $boundary . "--";
大概,你需要那些尾随破折号。