4

特定の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>

コントローラのコード publicfunctionsend(){

            $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;

            }

}
4

2 に答える 2

3

私の知る限り、HTMLメールの外部スタイルシートの読み込みを許可するメールクライアントはありません。

最終的に、これは、ドキュメントの先頭でスタイルを宣言する必要があることを意味します。

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

ただし、一部の電子メールクライアント(まあ、ほとんどの場合Outlook)は、ドキュメントの先頭で定義された一部のスタイルを許可していません。つまり、次のようなインラインスタイルを使用します。

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

(中の私の少しがちょうど死んだ)

一部のクライアント(これもほとんどがOutlook)はfloatのような単純なCSS機能をサポートしていないため、HTMLメールでインラインCSSを使用することにも多くの問題があります。つまり、ニュースレターをテーブルでコーディングして、大多数の人に確実に機能させる必要があるということです。

詳細については、次の記事(またはGoogle周辺)を参照してください: http ://www.sitepoint.com/code-html-email-newsletters/

于 2012-12-11T13:20:45.060 に答える
0

問題は、実際には、cssのみinlineを使用できることinternalです。つまり、要素内ですべてのcssルールを次のように定義できます。

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

または<head></head>電子メールドキュメントの一部:

<head>
    <style>
        b {color:red;}
        td { padding:10px; }
    </style>
</head>
于 2012-12-11T13:05:19.603 に答える