リターンアドレスを統一して送信できるメールフォーム


外出先から携帯などでメールするときに送信アドレスをPCのものに統一


 外出先から携帯端末でメールをしたいけれども、携帯端末のメールアドレスを相手に伝えたくないときに、 Yahoo!メールを使おうかと思ったのですが、TEXTメールの出し方が分からなかったので (HTMLとTEXTメールの切替スイッチみたいなものが今の時点で見当たりません)、 それでは自前でメールフォームを作ってしまおうと思いたち、自分専用の外からメール用メールフォームを作りました。 CGIが使えるサーバーエリアを持っている方限定情報です…。

 CGI&ポケットリファレンスに載っていたメールフォームプログラム http://soildb.en.a.u-tokyo.ac.jp/docs/Useful/email.htmlを利用させていただき、自分用に作り変えたものです。 携帯端末用に、テキストエリアも小さく作りました。

他に必要なのは以下の二つのライブラリです。
  jcode.pl
  util.pl

また、
  use Net::SMTP;
が使えないサーバーに置くことは出来ません。

  1. 以下のスクリプトをメモ帳などにコピー&ペーストして、●●●●●の所を書き直します。
  2. 終ったら、K_mail.cgiという名前で保存して、ライブラリと一緒にサーバーにUPします。アクセスは、CGIに直接アクセスすることに よって、携帯用の小さいフォームが表示されます。

送信画面を携帯端末に画面メモリとして保存しておけばCGIをロードするパケ代も浮きます。
あ、そうそう、絵文字はとんでもなく文字化けしますので入力の際は機種依存文字は避けて下さい。

K_mail.cgi
#!/usr/bin/perl
#
# K_mail.cgi
#
#     外出先から、携帯などでメールを送るときに、自分の携帯メールアドレスを知らせずに
#     別の返信用アドレスを付加して送るためのメールフォーム。
#
# mail2.cgi(C)1999 Kaoru Fujita
#       http://soildb.en.a.u-tokyo.ac.jp/docs/Useful/email.html
#       より改造させていただきました。

require 'jcode.pl';
require 'util.pl';
use Net::SMTP;

#
# 定数
#
$Encoding = 'sjis';          #  漢字コード
$me = "K_mail.cgi";          #  CGの名前(変更しなければこのままで)
#==============================================================
# 以下設定事項
      $Domain = '●●●●●';#  SMTPドメイン名
      $smtp = '●●●●●●';      # SMTP

# 相手先に送るメールへの情報
      $from[0] = '●●●●●@●●●●●'; # リターンアドレス

# 記録を自分のPCに送るときの情報
  # 差出人アドレス。PC受信したとき分かりやすいアドレスを適当に作ってください。
  #  ただし、間違っても、このアドレスに返信はしないようにしましょう!?
     $from[1] = 'oooooooooo@chachacha.ne.jp';

  #  送信記録を送信したいアドレス(PC用のアドレスが良い。相手には見えない)
     $to[1] = '●●●●●@●●●●●';

  #メールフォームから誰に送ったかわかるように記録メールにのみ付けるフッター
     $MyMemo[1] = "\n--------------\n★フォームから\$toさん宛てに出したメールの記録★";

# 設定事項ここまで
#==============================================================
#
# メインプログラム
#
    *data = parseInput('jis'); # E-Mail のメッセージボディはJIS
    $to[0]=$data{'To'};
    $subject=$data{'Subject'};
    $message=$data{'Message'};
    $message=~ s/\r\n/\n/g;
    $message=~ s/\r/\n/g;

if($to[0] eq ''){
print << "END_OF_HTML";
Content-type: text/html\n
<HTML><HEAD><TITLE>PCメールアド送信</TITLE></HEAD>
<BODY>
<FORM action="K_mail.cgi">
To: <br><INPUT type="text" name="To" size="15" value=""><br>
Subject:<br><INPUT type="text" name="Subject" size="15" value=""><br>
Message:<br>
<TEXTAREA name="Message" rows="10" cols="20"></TEXTAREA><br>
<INPUT type="submit" value="送信">
</FORM>
</BODY></HTML>
END_OF_HTML

}else{
    sendMail();
    thankYou();
}
exit(0);
#===============================================

sub sendMail
{
# サーバと接続する
my($server) = new Net::SMTP($smtp, Hello => $Domain);
unless ($server) {exitError(qq(メールサーバ[$data{'Server'}]に接続できません。))}

# メッセージの送信
        $MyMemo[1]=~s/\$to/${to[0]}/g;
        if($to[0] ne ""){
            for($i=0;$i<2;$i++){
                # リクエストした宛先に送付
                $server->mail($from[$i]);
                $server->to($to[$i]);
                $server->data();
                $server->datasend("Content-Type: text/plain; charset=iso-2022-jp\n");
                $server->datasend("To: $to[$i]\n");
                $server->datasend("From: $from[$i]\n");
                $server->datasend("Subject: $subject\n");
                $server->datasend("\n"); # ヘッダの終わり
                $server->datasend($message.$MyMemo[$i]);
                $server->dataend();
            }
        }

# サーバとの接続をクローズ
$server->quit();
}

sub thankYou{
jcode'convert(*subject, $Encoding);
jcode'convert(*message, $Encoding);
$message=~ s/\n/<br>/g;
#--------------------------------------------------------------
# 送信メッセージ表示。
print "Content-type: text/html\n\n";
print "送信完了<br>To: $to[0]<br>Subject: $subject<br>Message: <br>$message";
}
#--End Of mail2.cgi

2007.1.20

[HOME][とまて週報TOP]