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 标签。您是否可以发布您的代码,因为它可能是您正在做的事情或者 swift mailer 本身正在做的事情。

快速浏览一下 swiftmailer,它似乎支持 html 消息,因此也可能是您没有使用正确的 MIME 类型。

于 2012-09-10T11:43:25.360 回答
0

我想问题是您的 html 电子邮件不包含您的 tinymce 编辑器中可用的样式表。确保将相同的样式表应用于您的电子邮件内容。

于 2012-09-10T12:29:04.543 回答