web-dev-qa-db-ja.com

PHPを介してCSSスタイルシートを含むHTMLメールを送信します

CSSスタイルシートを含むHTMLページをメールアカウントに送信したい。問題は、CSSスタイルシートがまったく表示されないことです。すべてのCSSスタイルをインライン化する必要がありますか?それは非常に非効率的な方法のようです。他のアイデアはありますか?

以下は、メールを送信するためのPHPコードです。

<?php
$to = "[email protected]";

// subject
$subject = "Test mail";

// message
$message = file_get_contents("index.html");

// from
$from = "[email protected]";

// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= "From:" . $from;

// Mail it
mail($to,$subject,$message,$headers);

echo "Mail Sent.";
?>

よろしくお願いします。前もって感謝します。

15
Wijden

Google、Outlook、Yahooのすべての主要な電子メールサービスプロバイダーは、CSS外部ファイルを許可していません。インラインスタイルとインラインスタイルを使用して適切なメールメッセージをレンダリングするためにテーブルを選択したのは、時代遅れのように思えるかもしれません。

コードを書くのは面倒かもしれませんが、 https://litmus.com/ やenvatoなどの企業は、テンプレートやフォーマットの問題を解決するのに役立ちます。

私の2は、電子メールプロバイダーが送信される情報のすべてのソースを信頼できるわけではないため、これは悪意のあるコードを寄せ付けない方法です。

2
JFly28

すべてのCSSを含む<style>ブロックをindex.html本体のどこかに配置するのが最善です。一部の電子メールクライアント/ポータルは、ヘッダーに埋め込まれたすべてのCSSを<link rel="stylesheet" type="text/css" href="..." >で切り取ります。その結果、インラインCSSを使用しないと、メールが「壊れた」ように見える場合や、たとえば@gmail.comのアカウントで見栄えが悪くなる場合があります。

Index.htmlファイル内に、以下のように<style>タグを含めます。

<style>
.class{
style: attribute; 
}
</style>";

それが機能するはずですが、機能しない場合は、スタイルシートをWebサイトでホストし、インデックスファイルの冒頭に以下のような<link>タグを含めることをお勧めします

<link rel='stylesheet' type='text/css' href='http://www.yourstylesheet.com'>";

これらの方法のいずれかが問題を解決するはずです。

1
Kyle Papili

そのHTMLメールの<head>にcss-codeを埋め込むだけです。

0
Roman