0

Mail_Mime 1.8.9 Mail 1.2.0 php 5.4.12 プロジェクト = 私のローカルホスト開発コンピューター (LAN) から実行します。

こんにちは、MailMime を使用して送信するメールに画像を追加しようとしています。画像が読み込まれません。以下の手順を実行します。

ここでは、画像の名前と拡張子 (つまり:noimage.jpg) 以外のすべてを画像から削除しています。次に、画像に関連しない目的でリンクを作成し、削除された画像の名前と拡張子を使用して画像タグを作成します。

$url = substr($baseImage, 36);
$domainName = DomainNameUtil::getWebSiteDomainName();
$projectPath = DomainNameUtil::getPathToProject();
$productUrl = $domainName . $projectPath  . "/client/app/#/products/" . $product->id;
$productLink = "<a href='$productUrl'>$product->name</a>";
$string = "<img src='$url' /><br />";

ここで私はメッセージを送ります

$mailConfig = MailConfigurationUtil::getMailConfigurationData();
$headers = array (
  'From' => $from,
  'To' => $to,
  'Subject' => $subject
);
$crlf = "\n";
$mime = new Mail_mime(array('eol' => $crlf));
$mime->setHTMLBody($body);
$headers = $mime->headers($headers);
$smtp = Mail::factory('smtp', array (
  'host' => $mailConfig->mailServer,
  'port' => $mailConfig->port,
  'auth' => true,
  'username' => $mailConfig->userName,
  'password' => $mailConfig->password
));

$productManager = new ProductManager();
$ordersManager = new OrdersManager();
$orderVirtualItem =  $ordersManager->getOrderVirtualItemByBoxId($boxId);
$product = $productManager->getProductById($orderVirtualItem->itemId);
$url = $product->baseImage;
$domain = DomainNameUtil::getWebSiteDomainName();
$path = DomainNameUtil::getPathToProject();
$r = substr($url, 5);
$finalUrl = $domain . $path . $r;
$mime->addHTMLImage(file_get_contents($finalUrl),'image/jpeg',basename("noimage"),false, "blackstone");
$body = $mime->get();
$mail = $smtp->send($to, $headers, $body);

上記の例では、画像の名前が noimage.jpeg であることがわかっているため、上記の addHtmlImage では単に名前を示しています。addHtmlImage で使用される名前は、html 本文の画像 src タグの画像名と同じ名前でなければならないという印象を受けました。

実際にメールを送信すると、メールが届き、画像があるというテキストが表示されますが、メール本文の画像タグが読み込まれません。また、firebug の下で見ると、画像の src にプロキシが接続されています。また、PROXYADDRESS# http://noimage.jpgとして参照します。

ここに画像の説明を入力

画像が読み込まれない理由を理解するのに役立つ経験がある人はいますか?

参考までに、誰かがこの方法をオンラインで投稿しているのを見て、それらをコピーしてみました. この前に、URL全体を画像srcに入れ、画像をMIMEに追加しないことさえ試みましたが、うまくいきませんでした。

4

2 に答える 2

0

ここでかなり似たような問題が発生しました。

これまでに得たもの: phpversion (およびインストールされている Mail_Mime) に依存します。Mail_Mime は、php 5.4.30 では「壊れている」ようです php 5.2.17 でスクリプトを実行すると、すべての画像が正しく表示されます php 5.4.30 でスクリプトを実行すると、すべての画像が正しく表示されません

両方のソースコードを比較すると、5.4.30 未満の Mail_Mime は、境界と Content-Type: Content-Type: multipart/alternative; の順序が乱雑になっているようです。5.2.17 Content-Type: multipart/related; 5.4.30 画像の説明をここに入力

メールはこんな感じ コード比較

于 2014-08-25T09:52:26.467 に答える
0

context-id (addHtmlImage() の最後のパラメータ) を指定するときは、html メッセージで画像を正しく参照する必要があります: <img src="cid:context-id@local" />. もちろん、表示する各画像のコンテキスト ID を独自のコンテキスト ID に置き換えます。

于 2014-08-25T10:06:26.843 に答える