是否可以在不使用 MIME 的情况下使用包含 CSS 装饰的 PHP 发送 html 电子邮件?

Posted

技术标签:

【中文标题】是否可以在不使用 MIME 的情况下使用包含 CSS 装饰的 PHP 发送 html 电子邮件?【英文标题】:Is it possible to send an html email with PHP that inludes CSS decoration without using MIME? 【发布时间】:2011-07-23 03:40:04 【问题描述】:

我需要发送一封带有 CSS 装饰的 php 电子邮件。我的代码现在可以很好地发送 html 电子邮件。但是,我似乎不知道如何装饰它。

这是我的代码:

//Message
    $message =  "<html>
                    <head>
                        <style type='text/css'>
                            #show border:solid 1px #c4c4c4; background-color:#f0f0f0; width:400px;
                            #red color:#F02311
                            #header font-size:14px
                            p color:#090127
                        </style>
                        <title>
                            Red-line
                        </title>
                    </head>
                    <body>
                        <div id='show'>
                            <a id='red' href='http://www.thered-line.com'>The Red-line</a>
                        </div>

                        <p>
                            Hi $first_name, 
                        </p> 

                        <p>
                            Your Red-line account is almost complete. To finish, go to <a href='www.thered-line.com'>The Red-line</a> and enter your eight digit confirmation code.
                        </p> 

                        <p>
                            Your confirmation code is: <b>$code</b>
                        </p> 

                        <p>
                            Sincerely,
                        </p> <br />

                        <p>
                            The Red-line Operator
                        </p> 
                    </body>
                </html>";

【问题讨论】:

一般来说,您不应该使用&lt;style&gt; 标记来设置电子邮件样式:您应该使用style="..." 属性将样式直接包含到HTML 中。 @Pascal MARTIN:很有趣,但为什么呢? 使用样式标签有什么问题? 据我所知,邮件客户端(两个软件都是网络邮件)往往难以处理未内联的样式。 在 web 邮件客户端(例如 gmail、yahoo 邮件)中忽略样式标签内的 css 定义的原因是,您的未内联的 css 定义可能会损坏/更改其页面布局。 【参考方案1】:

我建议您查看 http://www.email-standards.org/ 。 几个主要的 webmail 客户端删除或修改了一堆重要的 html 元素 - 包括

内联样式可防止您的邮件完全脱离样式。 从提到的页面中,您可以适当地组装自己的一组支持/需要的样式属性。

【讨论】:

【参考方案2】:

我没有使用过 PHP 库,但是当我使用 .Net 创建邮件时,我从未包含像 &lt;head&gt;&lt;body&gt; 这样的元素。我不认为 html 邮件消息被设计为完整的 Html 文档。

我建议您包含 &lt;style&gt; 元素,然后像这样直接进入您的内容:

<style type='text/css'>
        #show border:solid 1px #c4c4c4; background-color:#f0f0f0; width:400px;
        #red color:#F02311
        #header font-size:14px
        p color:#090127
</style>    
<div id='show'>
       <a id='red' href='http://www.thered-line.com'>The Red-line</a>
</div>

 <p>
      Hi $first_name, 
 </p> 

 <p>
      Your Red-line account is almost complete. To finish, go to <a href='www.thered-line.com'>The Red-line</a> and enter your eight digit confirmation code.
 </p> 

 <p>
       Your confirmation code is: <b>$code</b>
 </p> 

 <p>
       Sincerely,
 </p> <br />

 <p>
       The Red-line Operator
 </p> 

【讨论】:

以上是关于是否可以在不使用 MIME 的情况下使用包含 CSS 装饰的 PHP 发送 html 电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不解密的情况下检查加密的 S/MIME 消息是不是也被签名

在 Ruby 中,我可以在不使用正则表达式的情况下检查字符串是不是包含字母吗?

是否可以在不使用malloc的情况下进行内存泄漏?

如何在不使用 argv 的情况下获取字符串数组 - CS50 pset2

如何在不安装 Zend 框架的情况下使用 Zend 库

是否可以在不刷新整个页面的情况下刷新包含的 Django 模板?