web-dev-qa-db-ja.com

PEAR mailを使用してHTMLメールを送信する方法

私はPEARメールシステムを使用して認証済みメールを送信しています。リンクのあるHTMLメールを送信する必要があります。PEARメールを使用する前は問題なく動作していました。現在、HTMLメールを送信できません。

メールの本文は次のようになります。

$body = <<<EOD

Hiya $username

You might be interested in the current 'haves' and 'wants' on example.com

Latest Haves
<a href="http://www.exmaple.com/product/have/64/Titan+Fast+Track+SunGlass">Titan Fast Track SunGlass</a>

EOD;

タグはメールにそのまま表示されます。これを解決する方法はありませんか?? Plsヘルプ..

23
Sakura

この例に従えば、動作しない理由はありません。

<?php
include('Mail.php');
include('Mail/mime.php');

// Constructing the email
$sender = "Leigh <leigh@no_spam.net>";// Your name and email address
$recipient = "Leigh <leigh@no_spam.net>"; // The Recipients name and email address
$subject = "Test Email";// Subject for the email
$text = 'This is a text message.';// Text version of the email
$html = '<html><body><p>HTML message</p></body></html>';// HTML version of the email
$crlf = "\r\n";
$headers = array('From' => $sender, 'Return-Path' => $sender, 'Subject' => $subject);

// Creating the Mime message
$mime = new Mail_mime($crlf);

// Setting the body of the email
$mime->setTXTBody($text);
$mime->setHTMLBody($html);

$body = $mime->get();
$headers = $mime->headers($headers);

// Sending the email
$mail =& Mail::factory('mail');
$mail->send($recipient, $headers, $body);
?>

注:上記の例を機能させるには、Pear Mailに加えてPear Mail Mime Packageが必要です。ここでパッケージを取得できます https://pear.php.net/package/Mail_Mime/download

29
karim79

ヘッダーはどのように見えますか?これが私のものです:

$headers = array(
    'To' => $recipients,
    'From' => $adminEmail,
    'Subject' => $subject,
    'MIME-Version' => 1,
    'Content-type' => 'text/html;charset=iso-8859-1'
);
16
story

Karim79によって投稿された例には、あなたに多くの悲しみを引き起こす可能性のあるヘッダーパラメータがあることに注意してください。「Return-Path」.

具体的には(何が起こっているかを確認するためにデバッグパラメータを追加したとき)、fromの名前の前後に山かっこが追加されたため、これをsmtpサーバーに送信しようとしました。

From:<from name <[email protected] >>または
From:<"from name" <[email protected] >>が引用符を使用しようとしたとき。
これにより、smtp接続が無効なアドレスのエラーで終了しました。

また、mime_mailクラスを使用する場合は、ヘッダーで "To:"パラメーターを指定する必要があります。そうしないと、受信時に非公開アドレスに送信されているように見えます。そのため、Return-Path paramをTo paramに置き換えれば機能します。

3
Robert