|
|
phpで空メールサービス
|
2005/11/16 15:07
|
QRコードの登場でちょっと廃れた感がありますが、ユーザのメールアドレスを正確にかつ簡単に取得する方法としてカラメールサービスがあります。
このプログラムはとても簡単なものなのでご紹介します。
例として
abc@test.jp
を空メールアドレスとします。
通常メールアカウントには、受信したメール内容をOSのパイプ機能でプログラムに入力することができます。
MTAがsendmailであれば、/etc/aliasesに
abc: |"/home/mail/test.php"
qmqilであれば、"/var/qmail/alias/.qmail-abc"に
|"/home/mail/test.php"
と書きます。
こうすると、abc@test.jpで受信したメール内容がtest.phpに渡ることになります。
test.phpでは
・メール内容を解釈して、送信メールアドレスなどを抜き出す。
・そのアドレスにメールを返信する。
が実現できれば目的達成となります。
以下サンプルプログラムです。特徴は標準入力からのデータの受け取り部分あたりです。
#!/usr/local/bin/php -q
<?php
// main
{
$stdin = fopen("php://stdin", "r");
if (!$stdin) {
exit();
}
$email = "";
while ($line = fgets($stdin)) {
$line = trim($line);
// メールヘッダ部が終了したらループ終了
if (!$line || $email){
break;
}
// 送信元メールアドレスの取得
if (eregi("^from:", $line)){
$email = getEmail($line);
}
}
// メールアドレスが取得できなければ終了。(getEmailに問題アリ)
if (!$email){
exit();
}
autoMail($email);
}
function autoMail($email)
{
// ここで空メールを送信元に対して送信します。
// 送信プログラムは省略します。
}
function getEmail($line)
{
if (eregi("(.*)\<(.*)\>", $line, $tmp)){
$from = $tmp[2];
}
return strtolower(trim($from));
}
?>
|
|
|
|
 |
|
< 前の伝言
|
 |
|
返信メッセージ 返信数:2
|
 |
|
テスト方法 New! |
|
|
From: ネット関連 06/02/24 21:00 |
 |
空メールの要点は
1.メールエイリアスの設定
2.phpコマンドプログラムの実行
の2点です。
以下テスト方法です
1について
phpプログラムの先頭に
error_log("test");
exit();
を追加し、サーバーのメールログを確認します
空メール受信後、ログに"test"と出ていればOKです
2について
まず上記のエラー関数を使いFROMのメアドが取れているか確認してみて下さい
|
 |
|
ご教授お願いします<(_ _)> New! |
|
|
From: takabak 06/02/22 18:38 |
 |
今、
こちらに書かれているサンプルソースを
使用させていただき、自動返信の作成を
しているのですが、どうもうまく動いてくれません。
何か良い方法はありませんでしょうか?
宜しくお願い致します。
|
|
|