13

テキストとHTMLの両方でメールを送信しようとしていますが、正しいヘッダーを正しく送信できません。特に、Content-Typeヘッダーを設定したいのですが、HTML部分とテキスト部分を別々に設定する方法がわかりません。

これは私のコードです:

$headers = array(
  'From'          => 'info@mydomain.com',
  'Return-Path'   => 'info@mydomain.com',
  'Subject'       => 'mysubject',
  'text_encoding' => '7bit',
  'text_charset'  => 'UTF-8',
  'html_charset'  => 'UTF-8',
  'head_charset'  => 'UTF-8',
  'Content-Type'  => 'text/html; charset=UTF-8'
);

$mime = new Mail_mime();

$html = '<html><body><b>my body</b></body></html>';
$text = 'my body';

$mime->setTXTBody($text);
$mime->setHTMLBody($html);

$body = $mime->get();
$headers = $mime->headers($headers);
$mail_object =& Mail::factory('smtp', $GLOBALS['pear_mail_config']);
$mail_object->send('test@mydomain.com', $headers, $body);

それは私が受け取る電子メールです:

From: info@mydomain.com
Subject: mysubject
text_encoding: 7bit
text_charset: UTF-8
html_charset: UTF-8
head_charset: UTF-8
Content-Type: multipart/alternative;
    boundary="=_7adf2d854b1ad792c802a9db31084520"
Message-Id: <.....cut.....>
Date: Mon,  8 Oct 2012 15:40:54 +0200 (CEST)
To: undisclosed-recipients:;

--=_7adf2d854b1ad792c802a9db31084520
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="ISO-8859-1"

my body

--=_7adf2d854b1ad792c802a9db31084520
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="ISO-8859-1"

<html><body><b>my body</b></body></html>
--=_7adf2d854b1ad792c802a9db31084520--

私が設定したContent-Typeヘッダーは完全に無視されているようです。いくつかのsetHTMLHeaders関数とsetTXTHeaders関数を期待していましたが、このようなものはないようです。私は何かが足りないのですか?両方のContent-TypeヘッダーをUTF-8に設定するにはどうすればよいですか?

4

1 に答える 1

36

ヘッダーの書き方が異なることを発見しました。特に、それらのいくつかは、電子メール ヘッダーではなく、mime オブジェクトのパラメーターです。次に、mime_params 配列を get() 関数に渡す必要があります。

これは、ヘッダーを設定する正しい方法です。

$headers = array(
  'From'          => 'info@mydomain.com',
  'Return-Path'   => 'info@mydomain.com',
  'Subject'       => 'mysubject',
  'Content-Type'  => 'text/html; charset=UTF-8'
);

$mime_params = array(
  'text_encoding' => '7bit',
  'text_charset'  => 'UTF-8',
  'html_charset'  => 'UTF-8',
  'head_charset'  => 'UTF-8'
);

$mime = new Mail_mime();

$html = '<html><body><b>my body</b></body></html>';
$text = 'my body';

$mime->setTXTBody($text);
$mime->setHTMLBody($html);

$body = $mime->get($mime_params);
$headers = $mime->headers($headers);
$mail_object =& Mail::factory('smtp', $GLOBALS['pear_mail_config']);
$mail_object->send('test@mydomain.com', $headers, $body);
于 2012-10-08T15:16:50.797 に答える