web-dev-qa-db-ja.com

html-emailのmimeタイプの宣言

HTMLメールを作成したいのですが、その方法についてたくさん読んでいます。私が見つけられない情報が1つあります。 mimeタイプをどのように宣言すればよいですか?私は試してみました:

meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

しかし、それは機能しません。

後の編集:
メールのコンテンツタイプをtext/htmlに設定しようとしていますが、方法がわかりません。通常の電子メールクライアントから書き込む場合、これはすべてです。メール本文で申告する必要がありますか?またはメールヘッダーに(もしそうなら、どうすればいいですか?)?

12
sica07

メールサーバーに送信されるメッセージヘッダー内にコンテンツタイプ宣言を設定しようとしていますか?その場合は、次のように設定する必要があります。

Content-Type: text/html; charset=UTF-8
28
Konamiman

メタタグの終了タグは、xhtml/xmlでのみ使用されます。 htmlを使用している場合は、次のような<head>タグ内で使用する必要があります。

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
3

基本的に、電子メールクライアントは、コンテンツタイプが含まれるMETAタグを無視します(少なくとも2013年10月17日現在)。

電子メールサーバーの特別なヘッダーにコンテンツタイプ宣言を設定する必要があります。

この問題の詳細については、 http://www.emailonacid.com/blog/details/C13/the_importance_of_content-type_character_encoding_in_html_emails を参照してください。

これがあなたにとって意味をなさないのなら、私はあなたが運が悪いのではないかと心配しています。私が見つけた唯一の信頼できる解決策は、特殊文字を同等のHTMLエンティティに変換することです。上記のリンクには、これを行うツールへのリンクがあります。

お役に立てば幸いです。

3
mbear

これはphpに適用されます:

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

// Additional headers
$headers[] = 'To: Mary <[email protected]>, Kelly <[email protected]>';
$headers[] = 'From: Birthday Reminder <[email protected]>';
$headers[] = 'Cc: [email protected]';
$headers[] = 'Bcc: [email protected]';

// Mail it
mail($to, $subject, $message, implode("\r\n", $headers));

http://php.net/manual/en/function.mail.php#example-418

1
Julian