0

写真付きのメールを送信しようとしています。私のメールの本文は次のとおりです。

<?php 

$message = <<< email

<img src="http://planet-earth.bogus.us/icons/secret.pictures.gif">

Dear {$email},

email;

?>

メールを受信すると、画像が表示されません。代わりに、私は見<img src="http://planet-earth.bogus.us/icons/secret.pictures.gif">ます。<<< メールが原因であることはわかっています。<<< メールを使用してコードの代わりに画像を表示するにはどうすればよいですか?

アップデート

私はzendフレームワークを使用しています。私のコードは次のようになります。

<?php
     $mail = new Zend_Mail();
     $mail->setFrom('admin@mysite.com', 'My site');
     $mail->addTo($recoveryaccount->username);
     $mail->setSubject("Mysite");
     include "_email_recover_password.phtml";
     $mail->setBodyText($message);
     $mail->send();
?>

_include "_email_recover_password.pthml" 
<?php 

 $message = <<< email
 <img src="http://picturelocation.picture.gif">
 Dear {$account->getUsername()},

 Somebody has requested that the password associated with this account be
 reset. If you initiated this request, click the below link to complete the process:

 http://www.example.com/{$account->getRecovery()}

 Thank you!
 Mysite

 Questions? Contact us at admin@mysite.com

 email;

 ?>
4

3 に答える 3

6

質問に答えるには、コンテンツタイプをに設定するコンテンツヘッダーを送信する必要がありますtext\html。これがないと、受信側のクライアントによってメッセージがプレーンテキストとして扱われます。次のコードは、コンテンツヘッダーを適切に設定し、基本的なHTMLメッセージを送信します。

// message
$message = '
<html>
<body>
  <img src="http://planet-earth.bogus.us/icons/secret.pictures.gif">
</body>
</html>
';

// Add the content headers
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

$headers .= 'To: David <david-z@domain.com>' . "\r\n";
$headers .= 'From: Bot <bot@domain.com>' . "\r\n";

mail("david-z@domain.com", "mysubject", $message, $headers);
于 2012-04-21T01:05:42.277 に答える
1

いいえ、ヒアドキュメントのせいではありません。適切にフォーマットされた HTML メールを送信する必要がありますが、そうではありません。まったく送信していないさまざまなヘッダーと MIME の「スケルトン」構造のものがあります。

自分で構築しようとしないでください。これを行うには、 SwiftmailerまたはPHPMailerを使用します。

于 2012-04-21T00:54:27.617 に答える