ラック
Home > ブログ > 記事 > 2018年8月 > PHPでサーバにあるメールを受信してもにょもにょして表示する試作プログラム

PHPでサーバにあるメールを受信してもにょもにょして表示する試作プログラム

カテゴリ: メール

「プログラムでメールを受信し、処理をする」ということをやりたくなったので試作。ありそうな事案ですがなかなか作例が見付からず、わりと難儀しました。そういうことってあまりやらないのでしょうか……?

口で言うのは簡単ですが、メールはインターネット黎明期から使われている古いプロトコルの上で成り立っているため、日本語などのマルチバイト文字はわりと特殊なエンコード(Quoted-printableやBase64)でアルファベットに変換して通信しています。そのため、「プログラムで受信したメールを、人が読むことができる形にデコードする」というのはかなり労力が必要でした。

今回はあるテスト用のメールアドレスにPOP3でログインし、そのデータを解析して表示するというプログラムです。ソースコードはarm-band/mail_php_test-20180827 - Githubにあります。

メールデータをデコードしてきちんと表示する

from, to, 件名(subject)、本文(body)がきちんと読めます。

……デコードしないとどうなるかって?

メールデータを加工せずにそのまま表示すると、人間には読めません

こうなります。アルファベットは良いのですが、日本語の部分はとても読めません。これを、古き時代のやり方に則って地道に解析・デコードしていった結果が上記のスクリーンショットです。……これだけでも、メールソフト(MUA)がいかに偉大かが分かりました……。

使用ライブラリ

参考

メールの扱い

エンコード

関数

タグ: php

 



関連する記事一覧