2

PHP スクリプトでSwiftMailerを使用して電子メールを送信し、 TinyMCEをテキスト エディターとして使用してメッセージ本文を作成およびフォーマットします。問題は、メッセージを送信すると、すべての電子メール クライアント (gmail、yahoo、および hotmail) で書式設定なしで表示され、リンクでさえリンクとして表示されず、通常のテキストとして表示されるが青色で表示されることです。それで、問題は何ですか?

メールの送信に使用するコードは次のとおりです。

<?php

require_once 'path/to/SwiftMailer/lib/swift_required.php';

$transport = Swift_MailTransport::newInstance();
# Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
# Create the message
$msg = Swift_Message::newInstance();
# Give the message a subject
$msg->setSubject($_POST['subject']);
# Set the From address with an associative array
$msg->setFrom(array($_POST['sender_email'] => $_POST['sender_name']));
# Give it a body
$msg->setBody($_POST['message'], 'text/html');

$failedRecipients = array();
$numSent = 0;
$to = array(
    'recipient_1@gmail.com',
    'recipient_2@yahoo.com' => 'Recipient 2',
    'recipient_3@hotmail.com',
    'recipient_4@gmail.com' => 'Recipient 4',
    'recipient_5@yahoo.com'
);

foreach ($to as $address => $name) {
    if (is_int($address)) {
        $msg->setTo($name);
    } else {
        $msg->setTo(array($address => $name));
    }

    $numSent += $mailer->send($msg, $failedRecipients);
}

echo $numSent > 0 ? 'SUCCESS' : 'FAILURE';

?>

$_POST['message']TinyMCE を使用して作成およびフォーマットしたメッセージの本文を保持することに注意してください。

4

3 に答える 3

2

問題は、フォーマットされたメッセージ本文の特殊文字がエスケープされていたことです (各特殊文字の前にバックスラッシュが追加されていました)。理由はわかりません。どちらがこれを行ったのか (TinyMCE または SwiftMailer) はわかりません。したがって、SwiftMailer を介してメッセージを送信する前に、メッセージ本文からスラッシュを削除するだけで済みます。この行を変更する必要がありました:

$msg->setBody($_POST['message'], 'text/html');

することが:

$msg->setBody(stripslashes($_POST['message']), 'text/html');
于 2012-09-12T08:04:55.900 に答える
0

以前は Swiftmailer を使用していませんでしたが、出発点として、送信前にコンテンツから HTML タグを削除 (エスケープではなく) しているように見えます。あなたがそこで行っていることや、迅速なメーラー自体が行っていることである可能性があるため、コードを投稿できますか。

swiftmailer をざっと見てみると、html メッセージをサポートしているように見えるので、正しい MIME タイプを使用していない可能性もあります。

于 2012-09-10T11:43:25.360 に答える
0

問題は、tinymce エディターで使用できるスタイルシートが HTML メールに含まれていないことだと思います。同じスタイルシートがメール コンテンツに適用されていることを確認してください。

于 2012-09-10T12:29:04.543 に答える