1

PHPMAilerでニュースレターを送りたいです。ニュースレターは機能しますが、これを行うためのより良いオプションがあるかどうか疑問に思っています.

私が持っているのは。

  1. HTML ページ
  2. 画像

今私のコードは次のようになります

$mail = new PHPMailer();

//Adding the body
$body = file_get_contents('template/index.htm');

$mail->Subject = "PHPMailer Test Subject via mail(), basic";

$mail->AltBody = "To view this message, please use an HTML compatible email viewer!";


$mail->SetFrom('xxxxxxx', 'xxxxxxxxxx');

$address = ".......@gmail.com";
$mail->AddAddress($address, "xxxxxxx");

$mail->AddEmbeddedImage("template/images/bullet_point.gif","1");
$mail->AddEmbeddedImage("template/images/template_1_01.gif","2");
$mail->AddEmbeddedImage("template/images/template_1_03.gif","3");


$mail->MsgHTML($body);

if(!$mail->Send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}

file_get_contents を使用して HTML ページを取得し、AddEmbeddedImage を使用して画像を埋め込みます。HTML ページのみを PHPMailer に渡し、PHP Mailer がこれらの画像を自動的に埋め込む方法はありますか?

4

1 に答える 1

1

PHPMailerを「最初から」使用して、あなたがやろうとしていること(必要な画像を自動的に追加すること)が可能だとは思いません。

HTML を解析して、リンク先の画像のリストを取得できますか? それを行うには、少なくとも 2 つの方法があります。

  • rexexes を使用します。HTML からデータを抽出しようとしている場合、一般的に最善の方法ではありません。
  • 別の (おそらく) より良い方法はDOMDocument::loadHTML、ファイルからロードされた HTML コンテンツ ( の出力file_get_contents) に対して を使用し、 のメソッドを使用することですDOMDocument(そして、なぜDOMXPathでしょうか?)

画像を取得するには<img>、電子メールにsrc属性付きのタグがあると思います。目標は、それらの値を見つけることです;-)

画像パスのリストを取得したら、それらを繰り返し処理し、$mail->AddEmbeddedImageそれぞれを呼び出します。

それはうまくいくと思います(試したことはありませんが、なぜうまくいかないのかわかりません)

余談ですが、別の方法として、画像を数日/数週間/数か月間サーバーに保管し、メールに含めないようにすることもできます。メールが小さくなります。つまり、次のことを意味します。

  • あなたの側で消費される帯域幅が少なくなります (大量のメールを送信している場合、かなりの量の帯域幅を表す可能性があります)。
  • クライアントの各側で消費される帯域幅が少なくなります -- これはクライアントにとっても良いことです ^^
  • ハードディスクで使用されるスペースが少なくなります;-)

また、画像がサーバー上で数週間/月の前に消去/置換されないようにするために、ニュースレターごとに画像を含む新しいディレクトリを作成することができます。X日々。

于 2009-07-21T17:47:21.957 に答える