10

次の電子メール ヘッダーがあります。

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

1 つのメールで 2 つのバージョンのメールを送信したいと考えています。1 つのテキストと 1 つの html。

だから私はこれをしました:

ob_start(); ?>
 --PHP-alt-<?php echo $random_hash; ?>
    Content-Type: text/plain; charset="iso-8859-1" 
    Content-Transfer-Encoding: 7bit
    Copy and paste: http://example.com/app_dl.php?app_id=<?php echo $_GET[app_id]; ?> to download your $app_name app \r\n
     Want to get tons more hot apps for free! anywhere anytime? Download our app on http://example.com  \r\n
     example.com team;

--PHP-alt-<?php echo $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=<?php echo $_GET[app_id]; ?>'>Click Here</a> to download your <?php echo $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 
      $bodyHTML =ob_get_clean();

しかし、うまくいかないようです..そして、なぜだろう!?!?

4

2 に答える 2

21

メッセージを作成するには、 を指定し、その境界で各パーツを区切るmultipart/alternative必要があります。boundary適切な境界文字列は、 によって生成されるランダムな文字列など、メッセージ部分自体で発生する可能性が非常に低いものですsha1(uniqid())。例えば:

MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=c4d5d00c4725d9ed0b3c8b

--c4d5d00c4725d9ed0b3c8b
Content-Type: text/plain; charset="iso-8859-1" 
Content-Transfer-Encoding: 7bit

part1

--c4d5d00c4725d9ed0b3c8b
Content-Type: text/html; charset="iso-8859-1" 
Content-Transfer-Encoding: 7bit

<b>part2</b>

--c4d5d00c4725d9ed0b3c8b--

これは、RFC 2046 のセクション 5.1.4で指定されています。

于 2012-04-22T12:20:34.890 に答える
-2

\r\n の代わりに PHP_EOL を使用してもうまくいくようです。例えば:

$headers = "Content-type: text/html; charset=UTF8" . PHP_EOL;
于 2015-10-13T11:36:45.040 に答える