そこで、OutlookExpressから電子署名付きで送ったメールと、openssl_pkcs7_signで作成したメールの中身を比べてみた。様々な違いがあったのだが、結局、原因は、以下のとおり。メッセージ本文の最後の行に改行がついているかいないかだった。(PHP4.2.5)つまり、openssl_pkcs7_signは悪くない(この場合は)。openssl_pkcs7_signに突っ込んだメール本文の最後に改行がない場合、OutlookExpressでは、メッセージの検証ができないようだ。みるとPHPマニュアルにつぎの記述があった。signingのことを、「サインした文章、つまり本文の先頭に改行を付けたらうまくいく」と解釈し、本文の先頭につけてみたのだけれど何も変化なく、???の状態だった。今でも自信がないけれど、これは署名の最初に改行を付けろ、という意味のようだ。うう、どうせなら、本文の最後に改行を入れろ、と書いて欲しかった。PHPとメールの相性の悪さPHPは、UNIX文化で育っているため、改行コードがLFのみで考えられていることが多い。openssl_pkcs7_signが改めてつける改行コードは皆、LFだ。メッセージ本文はCRLFで渡しても、だ。インターネットメールの標準は、CRLF。これだから、様々な文字化けやら、不具合が起きることが多い。ああ、今回も改行コードひとつで何日無駄にしたことか。お願いだから、オプションで改行コードを選ばせてくれ。それにしてもインターネット文化はUNIX系列の人達が培ってきたものなのに、どうして改行コードはこうなっちゃったのでしょうね。Qdmailは、、、S/MIME対応したのはいいけれど、改行コードがLFとCRLFで入り乱れたものになってしまい、ううう、大変気持ち悪い(S/MIMEにしない限り気持ち悪いことはないです。)まもなく、S/MIME署名対応バージョンをリリースできると思います。現在、いくつかテスト中。http://www.cpa-lab.com/tech/0178/tb/※お手数ですが、SPAM防止のためURLの後ろに「Ozq」を追加してください。2.03.Infomation管理人のメインサイト。画像アルバムコンテンツPaginatorの使い方。30最近の記事さくらインターネットで空メールエラーmbstrings関数をPHPで使う際の必見サイトQdmailサイトと相互リンクただ簡単にメールを送りたいだけだったのにPHPPHPフレームワークで日本語メール送信。anonymousissetを正しく理解する。ほんじissetを正しく理解する。ほんじissetを正しく理解する。へびにっきissetを正しく理解する。