【问题标题】:Codeigniter email - style tag / css not workingCodeigniter 电子邮件 - 样式标签/css 不起作用
【发布时间】:2012-11-29 00:37:22
【问题描述】:

我正在尝试将特定 div 的 innerhtml 发送到电子邮件(在 Codeigniter 框架中)。

我使用 jquery 获取了 div 的内部 html,并使用 ajax 将数据传输到控制器。

邮件有效,但我的问题是 html 类、样式标签(我在视图文件 html 中编写的内联样式除外)、样式表不起作用。

有什么方法可以在电子邮件内容中添加我的style.css 文件?即使标签正常工作,我也可以,我在<head> 部分的开头放置了它。

请帮忙,这是我的代码。

将 html 传输到控制器的 Ajax 代码:

<script type="text/javascript">
    $(function() {
  $('#sendmail').click(function(e) {

        e.preventDefault();
        $.ajax({
              url:'<?php echo site_url();?>/welcome/send',
              type:'POST',
              data:{'message':$('#body').html(),'subject':'Subject of your e-mail'},
              success:function(data) {
                    alert('You data has been successfully e-mailed');
                    alert('Your server-side script said: ' + data);
              }
        });
  });
});

</script>

控制器中的代码 公共函数发送() {

            $nome = $this->input->post('message');

           $config = array(
            'protocol' => 'smtp',
            'smtp_host' => 'send.one.com',
            'smtp_port' => '2525',
            'smtp_user' => 'akhil.ns@cymose-tech.com',
            'smtp_pass' => 'akhil123',
            'charset' => 'utf-8',
            'wordwrap' => TRUE,
            'mailtype' => 'html'
        );
        $this->load->library('email', $config);

        $this->email->set_newline("\r\n");
        $this->email->from('akhil.ns@cymose-tech.com', 'The Wanderers');
        $this->email->to('shabasy002@gmail.com');

        $this->email->subject('The Wanderers Proforma Invoice ');

        $formatedMessag ='';

    $formatedMessag = '<html><head><link rel="stylesheet" type="text/css" href="http://localhost/study/extra/style.css"></head><body><style type="text/css">p{color:#cccccc;font-weight:bold;}</style>';
        $formatedMessag .= $nome.'</body></html>';

        $this->email->message($formatedMessag);

        if ($this->email->send()) {

            echo $formatedMessag;

            }

}

【问题讨论】:

  • AFAIK 你需要坚持内联样式。
  • @BillyMoat 完全正确,还有内部风格 - 请参阅下面的答案
  • campaignmonitor.com/css 创建 HTML 电子邮件是一件令人头疼的事情,因为它试图让所有客户端看起来都一样,不管你信不信,它们仍然应该使用内联样式和表格来布置兼容性。另外请记住,大多数电子邮件客户端默认关闭图像

标签: html css codeigniter email


【解决方案1】:

据我所知,没有电子邮件客户端允许为 HTML 电子邮件加载外部样式表。

最终,这意味着您必须在文档的头部声明样式,例如

<head>
    <style>
        body { background: black; color: white; }
    </style>
</head>

但是,一些电子邮件客户端(嗯,几乎只是 Outlook)甚至不允许在文档头部定义某些样式,这意味着像这样的内联样式:

<body style="background: black; color: white;"></body>

(我里面的一点点刚刚死了)

即使在 HTML 电子邮件中使用内联 CSS 也存在许多问题,因为某些客户端(同样主要是 Outlook)不支持像浮动这样的简单 CSS 功能。这最终意味着您必须使用表格对时事通讯进行编码,以确保它适用于大多数人。

有关更多信息,请参阅这篇文章(或只是谷歌): http://www.sitepoint.com/code-html-email-newsletters/

【讨论】:

    【解决方案2】:

    问题,实际上是你只能使用inlineinternal css,也就是说,你可以在元素内部定义所有的 css 规则,比如

    <td style="padding:10px;"><b style="color:red;">Texty</b></td>
    

    或在电子邮件文档的&lt;head&gt;&lt;/head&gt; 部分:

    <head>
        <style>
            b {color:red;}
            td { padding:10px; }
        </style>
    </head>
    

    【讨论】:

      猜你喜欢
      • 2015-11-03
      • 2014-07-05
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多