【问题标题】:Sending html and css mails to gmail with Swift Mailer使用 Swift Mailer 将 html 和 css 邮件发送到 gmail
【发布时间】:2012-06-01 12:52:37
【问题描述】:

我有一些基本的 html 和一些 css,但出于某种原因,gmail 将 3D 放入了“text/css”

代码示例

$message = "
            <style type='text/css'>
              #main {border:1px solid red;}
            </style>

              <div id='main'>some text</div>
";

但是当我查看原始发送到 gmail 时

<style type=3D'text/css'>

也许这就是邮件没有样式的原因。我正在使用 swift mailer

//也在html中

<div id=3D'main'>

// 快速邮件

    $type = $message->getHeaders()->get('Content-Type');
    $type->setValue('text/html');
    $type->setParameter('charset', 'utf-8');

【问题讨论】:

标签: html css email gmail swiftmailer


【解决方案1】:

据我所知,gmail 不支持头部或正文中的样式标签。我在发送电子邮件时使用元素的样式属性。

【讨论】:

  • 是的,这是真的,但你还需要更多的行来让每件事都能正常工作,检查我的答案
【解决方案2】:

要让 swift mailer 以 HTML 格式发送消息,即使对于 gmail 也是如此,因为 swift mailer 将 html 标签转义为其表示的字符,所以你需要这样写这些行:

$message = (new Swift_Message('Message Subject HERE '))
        ->setFrom(array('sender email' => 'Sender Name')) // can be $_POST['email'] etc...
        ->setTo(array('reciever email' => 'Receiver Name')) // your email / multiple supported.
        ->setEncoder( new Swift_Mime_ContentEncoder_PlainContentEncoder('8bit'))
        ->setBody($template, "text/html");

之后,一切都应该正常工作 这里的诀窍是直到 swift mailer 使用 Swift mailler MimeType 类并指向正确的编码。你可以在这里查看更多信息link here

【讨论】:

    【解决方案3】:

    Swift Mailer 正试图将“转义为 \”。 你必须在 setBody() 之前使用 setEncoder():

    $message->setEncoder(Swift_Encoding::get8BitEncoding());
    $message->setBody($body, "text/html");
    

    【讨论】:

    • 这个解决方案对我不起作用。我添加了$message-&gt;setEncoder(Swift_Encoding::get8BitEncoding());,当我从我的服务器上发送消息后print_r 时,HTML 部分显示为Content-Transfer-Encoding: 8bit,并且等号根据需要出现(即,只是=)。但是,收到此消息时,HTML 部分已更改为Content-Transfer-Encoding: quoted-printable,等号显示为=3D。使用 Swiftmail 版本 Swift-5.4.3。尝试了多个接收主机和多个接收邮件客户端,结果都一样。
    • 如前所述,$message-&gt;setEncoder(Swift_Encoding::get8BitEncoding()); 修改并没有解决我的问题。但是,$message-&gt;setEncoder(Swift_Encoding::getBase64Encoding()); 将 HTML 部分编码为base64 数据,而这在另一端未触及。这对我来说尤其重要,因为不仅 HTML 现在可以正确呈现,而且我还使用 S/MIME 签名对我的消息进行签名,并且收到的修改后的消息导致签名无效。现在,签名仍然有效,因为消息在接收端没有被修改。
    • 静态调用不起作用,即使它不在当前版本 6.1 文档中,请改用普通的新关键字实例化
    猜你喜欢
    • 2011-04-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多