北青山通信 – from aoyama » 2008 » 10月 » 02
稼働しているシステムでメール送信でトラブル。メールを送ったのに届いていないらしい。
本当にメールサーバーからメールを配信したかをログを調べる。しかし、こちらはログへのアクセス権限がない。
仕方がないので、管理者(2つ上の発注元)にメールアドレスを伝えて調べてもらう。
結果は正常に配信されているそうだ。しかし、コメントも一言書いてあった。
膨大なログから調べなければいけないので、次回から送信日時も教えてくれなければ困る。
それはそうですね。と理解したが・・・。
しかし。何でログファイルを目視しなければいけないの? これって本当? サーバー管理者がやること?
grepかければ簡単ではないの? ただ、やりたくない面倒なだけ?
いいえ、発注元の方ですので、喧嘩は売りたくありません・・・。
現在、CakePHPのサイトを作成していますが、メールを送信する処理があります。今まですとmb_send_mail()を使ったクラスを用意していましたが、せっかくCakePHPを使っているということで、Qdmailというコンポーネントを使ってみました。
PCに送るには問題なし。しかし、携帯電話宛のメールは文字化けします。
調べてみると、cakeText()メソッドでViewを使うとUTF8で送信しているようです。Viewを使わず直接text()メソッドを使ってテキストで送ると、正常にiso-2022-jpで送ってくれます。
Qdmailのサイトで調べて、charsetBody()メソッドでiso-2022-jpを指定してもだめ。テンプレートファイルをJISにしたら携帯電話で読めるようになるが、パラメータをアサインすると文字化け。1時間ほど悩む。
Googleで「Qdmail cakephp 文字化け」で検索してみるとありました。ここのサイトでヒントが見つかりました。
cakeText()メソッドの第5パラメータで iso-2022-jp を指定すればOK。Qdmailのマニュアルには見つかりませんでした。
Qdmailのサイトには、非常に詳しくマニュアルが載っています。今回はこれを信じたのがいけなかった。ソースコードが読めるのなら、ソースコードを読まなければいけません。しかしQdmailのソースコードは、コメントが少ないので読みづらい。コメントの中にコードが埋まっている私とは大違い。