【 Perl 編 】

1. Mail-Sender と MIME-tools のインストール
2. ソースコード
3. Subject の内容
4. 本文の内容

Active Perl 5.8.2.808
  • ppm でインストールして下さい


  • 入力された文字列を連結して 128 倍にして送信します。改行の無い長い文字列のメール送信を想定して
    います

  • require 'jcode.pl';
    use Mail::Sender;			# ppm>Install Mail-Sender
    use MIME::Words qw (:all);		# ppm> Install MIME-tools
     
    print "Content-Type: text/html; Charset=Shift_JIS\n";
    print "\n";
     
    $GET_BUFFER = $ENV{'QUERY_STRING'};
    %GET = ();
    foreach( split(/&/, $GET_BUFFER) ) {
    	($KEY, $VALUE) = split(/=/);
    	$VALUE =~ tr/+/ /;
    	$VALUE =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    	$GET{$KEY} = $VALUE
    }
     
    if ($ENV{'REQUEST_METHOD'} eq "POST") {
    	read( STDIN, $POST_BUFFER, $ENV{'CONTENT_LENGTH'} );
    	%POST = ();
    	foreach( split(/&/, $POST_BUFFER) ) {
    		($KEY, $VALUE) = split(/=/);
    		$VALUE =~ tr/+/ /;
    		$VALUE =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    		$POST{$KEY} = $VALUE;
    	}
    }
     
    if ( $ENV{'REQUEST_METHOD'} eq "POST" ) {
     
    	$address = "lightbox@nifty.com";
     
    	$sender = new Mail::Sender {
    			smtp => 'localhost',
    			from => $address
    	};
     
    	$AddHeader = "Mime-version: 1.0\r\n";
    	$AddHeader = $AddHeader . "Content-type: text/plain; charset=ISO-2022-JP\r\n";
    	$AddHeader = $AddHeader . "Content-transfer-encoding: 7bit";
     
    	$SendData = $POST{'Data'};
    	for( $i = 1; $i <= 7; $i++ ) {
    		$SendData .= $SendData;
    	}
     
    	$CnvSubject = $SendData;
    	&jcode'convert(*CnvSubject, 'jis');
    	$CnvSubject = encode_mimeword($CnvSubject, 'b', 'iso-2022-jp');
    #	$CnvSubject =~ s/\n//;
     
    	$ConvMsg = $SendData;
    	&jcode'convert(*ConvMsg, 'jis');
     
    	$ret = $sender->MailMsg(
    		{
    			to => $address,
    			subject => $CnvSubject,
    			headers => $AddHeader,
    			msg => $ConvMsg
    		}
    	);
     
    }
     
    print <

  • ひらがなの を、128文字セットしています

  • 上記コードでは、改行と空白文字が挿入されません
  • 以下はダンプです

  • 3D 3F 49 53 4F 2D 32 30 32 32 2D 4A 50 3F 42 3F  =?ISO-2022-JP?B?
    47 79 52 43 4A 43 49 6B 49 69 51 69 4A 43 49 6B  GyRCJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 69 51 69 4A 43 49 6B  IiQiJCIkIiQiJCIk
    49 69 51 69 4A 43 49 6B 49 68 73 6F 51 67 3D 3D  IiQiJCIkIhsoQg==
    3F 3D                                            ?=
    

  • ひらがなの を、128文字セットしています

  • は、JIS では 0x24 0x22$" になります

  • 1B 24 42 24 22 24 22 24 22 24 22 24 22 24 22 24  .$B$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 24 22 24 22 24 22 24 22 24 22 24 22 24  "$"$"$"$"$"$"$"$
    22 24 22 1B 28 42                                "$".(B