A reply to myself:

Here a little example program with the described the problem
and the code I am using...

Thanks, Dietrich


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
     <head>
     <meta http-equiv="content-type" content="text/html;
charset=UTF-8" />
     <title>Contact Me</title>
     </head>
     <body>

     <h1>かな漢字</h1>

     <?php # Script 10.1 - email.php

function sendEmail($recipientEmailAddress, $subject, $body, $senderName,
$senderEmailAddress) {
    
    // set current language to Japanese
    mb_language("ja");

    // encode subject
    // - first using JIS (ISO-2022-JP)
    // - after encoding the resulting JIS string with the MIME header
encoding scheme
    $subjectJIS  = mb_convert_encoding($subject, "ISO-2022-JP", "AUTO");
    $subjectMIME = mb_encode_mimeheader($subjectJIS, "ISO-2022-JP",
"B");

    // encode the name of the sender
    // - first using JIS (ISO-2022-JP)
    // - after encoding the resulting JIS string with the MIME header
encoding scheme
    $senderNameJIS  = mb_convert_encoding($senderName, "ISO-2022-JP",
"AUTO");
    $senderNameMIME = mb_encode_mimeheader($senderNameJIS,
"ISO-2022-JP", "B");

    // encode body
    // - using JIS (ISO-2022-JP)
    // - the used coding system had to be specified in the
Content-Type/charset header:
    //   Content-Type: text/plain; charset=ISO-2022-JP
    $bodyJIS = mb_convert_encoding($body, "ISO-2022-JP", "AUTO");

    // formatting the sender string
    $senderMIME = sprintf("%s <%s>", $senderNameMIME,
$senderEmailAddress);

    // formatting the mime header
    $headers  = "MIME-Version: 1.0\n" ;
    $headers .= sprintf("From: %s\n",     $senderMIME);
    $headers .= sprintf("Reply-To: %s\n", $senderMIME);
    $headers .= "Content-Type: text/plain; charset=ISO-2022-JP\n";
   
    // send encoded mail
    $result = mail($recipientEmailAddress, $subjectMIME, $bodyJIS,
$headers);

    // return result
    return $result;
 }

$to                 = "[EMAIL PROTECTED]";
$subject            = "かな漢字かな漢字かな漢字かな漢字かな漢字かな漢字
かな漢字かな漢字かな漢字かな漢字";
$body               = "かな漢字かな漢字かな漢字かな漢字かな漢字かな漢字
かな漢字かな漢字かな漢字かな漢字";
$senderName         = "かな漢字かな漢字かな漢字かな漢字かな漢字かな漢字
かな漢字かな漢字かな漢字かな漢字";
$senderEmailAddress = "[EMAIL PROTECTED]";
     
// send the email
sendEmail($to, $subject, $body, $senderName, $senderEmailAddress);
            
?>

</body>
</html>


On Thu, 2008-03-20 at 03:33 +0900, Dietrich Bollmann wrote:
> Hi, 
> 
> I try to send messages written in Japanese (Kana/Kanji) with php.
> 
> Everything works fine - only when the subject (or the name of the
> sender) becomes longer, there seems to be something wrong with the
> encoding: Neither my nor the mail reader of other Japanese friends is
> able to decode the mime string. At the place of the Japanese
> Characters, the mime string itself is displayed.
> 
> As this doesn't happen for other Japanese emails with even long
> subjects, I suppose I did something wrong...
> 
> When using the corresponding php mb_* functions to decode the string
> back, sometimes the correct original string and sometimes meaningless
> characters are shown.
> 
> Here how I convert the subject (the name is converted using the same
> method and the sources are saved in UTF-8 using emacs):
> 
>   $subjectJIS  = mb_convert_encoding($subject, "ISO-2022-JP", "AUTO");
>   $subjectMIME = mb_encode_mimeheader($subjectJIS, "ISO-2022-JP", "B");
>   ...snip...
>   mail($to, $subjectMIME, $bodyJIS, $headers);
> 
> Here part of the message as it is displayed by my mail program:
> 
>   From:
> =?ISO-2022-JP?B?GyRCJCskSjRBO3okKyRKNEE7eiQrJEo0QTt6JCskSjRBO3okKyRKNEE7?==?ISO-2022-JP?B?eiQrJEo0QTt6JCskSjRBO3okKyRKNEE7eiQrJEo0QTt6JCskSjRBO3ob?=(B
>  <[EMAIL PROTECTED]>
>   ...snip...
>   Subject:
> =?ISO-2022-JP?B?GyRCJCskSjRBO3okKyRKNEE7eiQrJEo0QTt6JCskSjRBO3okKyRKNEE7?= 
> =?ISO-2022-JP?B?eiQrJEo0QTt6JCskSjRBO3okKyRKNEE7eiQrJEo0QTt6JCskSjRBO3ob?= (B
>   ...snip...
>   
>   かな漢字かな漢字かな漢字かな漢字かな漢字かな漢字かな漢字かな漢字かな漢
> 字かな漢字
> 
> And here part of the mail text itself:
> 
>   ...snip...
>   Subject:
> 
> =?ISO-2022-JP?B?GyRCJCskSjRBO3okKyRKNEE7eiQrJEo0QTt6JCskSjRBO3okKyRKNEE7?=
> 
> =?ISO-2022-JP?B?eiQrJEo0QTt6JCskSjRBO3okKyRKNEE7eiQrJEo0QTt6JCskSjRBO3ob?=
>       =?ISO-2022-JP?B?KEI=?=
>   MIME-Version: 1.0
>   From:
> =?ISO-2022-JP?B?GyRCJCskSjRBO3okKyRKNEE7eiQrJEo0QTt6JCskSjRBO3okKyRKNEE7?= 
> =?ISO-2022-JP?B?eiQrJEo0QTt6JCskSjRBO3okKyRKNEE7eiQrJEo0QTt6JCskSjRBO3ob?= 
> =?ISO-2022-JP?B?KEI=?= <[EMAIL PROTECTED]>
>   ...snip...
>   Content-Type: text/plain; charset=ISO-2022-JP
>   ...snip...
>   
>   かな漢字かな漢字かな漢字かな漢字かな漢字かな漢字かな漢字かな漢字かな漢
> 字かな漢字
> 
> Here a part of another (spam) mail which is correctly displayed by my
> mail program:
> 
>   MIME-Version: 1.0
>   Subject:
> =?ISO-2022-JP?B?GyRCIXolXSUkJXMlSBsoQjEwGyRCR1whdUF3TkEbKEI=?=
>       =?ISO-2022-JP?B?GyRCTDVOQSF6GyhCMSwwMDAbJEIxXyU4JWUbKEI=?=
>       =?ISO-2022-JP?B?GyRCJSglaiE8Qmc9ODlnISohWjNaRTchWxsoQg==?=
>       =?ISO-2022-JP?B?GyRCIUobKEIyMDA4LzAzLzE5?= =?ISO-2022-JP?B?KQ==?=
>   From: =?ISO-2022-JP?B?GyRCM1pFNztUPmwlOCVlJSglaiE8ISYlIhsoQg==?=
> =?ISO-2022-JP?B?GyRCJS8lOyU1JWohPCVLJWUhPCU5GyhC?=
> <[EMAIL PROTECTED]>
>   
> Displayed as:
> 
>   From:       楽天市場ジュエリー・アクセサリーニュース
> <[EMAIL PROTECTED]>
>   ...snip...
>   Subject:    ★ポイント10倍&送料無料★1,000円ジュエリー大集合!【楽天】
> (2008/03/19)
>   
> If anybody can explain me the problem I would be most gratefull :)
> 
> Thanks, Dietrich
> 
> 
> 
> 


--
PHP Unicode & I18N Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to