フォームでメールを送信するには

[上に] [前に] [次に]
氏家宏美 1998/12/27(日) 23:12:20
こんばんは。
ホームページで、入力フォームを使ってメール送信をやりたいのですが
windows95 ie4j + OutlookExpress の人や
macOS7.61 ie4j + OutlookExpress の人が送信すると
届くメールが自動的にデコードされたものにするには
どうしたらよいのですか?
現在は、届いたメールは本文が白紙で、以下のような添付ファイルが
ついているのですが...

(ちなみに、自分がテストするとうまく届くのです。
 自分はmacOS8.1 ie4j + OutlookExpress)

windows95 ie4j + OutlookExpress から送信されたメールは、

 Name:POSTDATA.ATT
 Type:タイプ未指定 (application/octet-stream)
 Encoding:quoted-printable

という添付ファイルが届いて、
macOS7.61 ie4j + OutlookExpress から送信されたメールは、

 Type:application/x-www-form-urlencoded

という添付ファイルがついてきます。

<HTML>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=x-sjis">

<title>mailto</title>
<SCRIPT LANGUAGE='javascript'>
<!--
            function send(){
                                     document.mail.encoding='text/plain';
            }
//-->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<FORM METHOD="POST" NAME="mail"  ACTION=
"mailto:post@mail.co.jp,subpost@mail.co.jp?subject=mailto" onSubmit="send()">
<input TYPE="checkbox" NAME="checkbox"  VALUE="A">A<BR>
<input TYPE="checkbox" NAME="checkbox"  VALUE="B">B<BR>
<SELECT NAME="SELECT">
        <OPTION VALUE="A" SELECTED>A
        <OPTION VALUE="B" >B
        <OPTION VALUE="C">C
</SELECT><BR>
<TEXTAREA NAME="TEXT" ROWS=5 COLS=20></TEXTAREA><BR>
<input type=submit value="メールを送る"><input type=reset value="やり直し"></form>
</body>
</html>

しなのむし 1998/12/28(月) 04:29:05
# 利用経験の無い方式なので自信の無いまま答えています。

まず、とほほマニュアルのここをご覧ください。
http://www.tohoho-web.com/wwwmail1.htm

お使いのソースに特に問題があるようには見えませんが
基本的にACTION= "mailto:を使ったフォームメールで
シフトJIS送信するのは推奨されていませんよね?

そこで他の方法がここに書いてあります。(とほほさんに感謝!)
http://www.tohoho-web.com/wwwmail.htm

ちなみに私のWIN95、NC4.05環境でブラウザのSMTP等の設定を
しっかりして、シフトJIS送信しますと添付ファイルは付かずに
本文中にそのままの日本語が入ります。

ヘッダはこんな感じです。
Content-type:text/plain
Content-Disposition: inline; form-data

mura [E-Mail] 1998/12/28(月) 10:37:46
document.mail.encodingをわざわざonSubmitで指定しているのはなんででしょう?
<FORM>の中に「ENCTYPE="text/plain"」と書くと同じ意味になります。

IE4が手元にないのでちょっとわからないのですが、少なくともIE3では
document.FORM.actionとかdocument.FORM.targetを書き換えても
必ず元の<FORM>で設定した値でフォームが送られてしまいます。(NNと動作が違う)

encodingもその中に含まれていたりしてないのかな?とちょっと思ったのですが…。
タイプもばらばらになってるみたいですし。

(あとそれ以前に、onSubmitはJavaScriptを無効にしていると使えないですね)

しなのむし 1998/12/28(月) 12:27:14
>(ちなみに、自分がテストするとうまく届くのです。
> 自分はmacOS8.1 ie4j + OutlookExpress)

ということなので問題ない場合もあるようですが
macOS7.61 ie4jの
Content-type: application/x-www-form-urlencoded
は、やはりシフトJIS送信されてないですから
muraさんの言うようにJavaScriptを使わない方法
で試してみると問題が改善されるかもしれません。

しかし、根本的にFORM ACTION= "mailtoは
クライアントサイドの環境で使えないことが多いので
不特定多数の使用には不向きであるということをご理解ください。

氏家宏美 1998/12/28(月) 18:43:52
しなのむしさん、muraさん、ありがとうがざいました。
ブラウザ依存による障害の件、なんとなく(^^;)理解しました。
ですが今回どうかもう少しだけ勉強させてください。
まずonSubmitを削除して、以下のように書き換えます。

<FORM METHOD="POST" NAME="mail" ENCTYPE="text/plain" ACTION=
"mailto:post@mail.co.jp,subpost@mail.co.jp?subject=mailto">

それからヘッダの件ですが、
<meta http-equiv="Content-Type" content="text/html; charset=x-sjis">
これを書き換えるとしたら、

> ヘッダはこんな感じです。
> Content-type:text/plain
> Content-Disposition: inline; form-data

これは、並列に並べるとよいのですか?

<meta http-equiv="Content-Type:text/plain">
<meta http-equiv="Content-Disposition: inline; form-data>

ということでしょうか?
御指摘くださいませんか?お願いします。

しなのむし 1998/12/28(月) 23:07:52
>Content-type:text/plain
>Content-Disposition: inline; form-data

はフォームのあるページのヘッダではなく
ネスケでシフトJIS送信がうまくいった際のメールのヘッダです。
この場合、添付ファイルは付かずに 本文中にそのまま内容が
日本語で入ります。(うまくいけば)

ie4が手元に無いのでなんともいえませんが
少なくともie3ではFORM ACTION= "mailto
は使えないようですね。

以下、マイクロソフトの言い訳
http://www.microsoft.com/japan/support/kb/articles/J026/0/50.htm

氏家宏美 1998/12/29(火) 02:32:28
ありがとうございました。
ところで、しなのむしさんが書かれている、

> 基本的にACTION= "mailto:を使ったフォームメールで
> シフトJIS送信するのは推奨されていませんよね?

のことで、ちょっとど素人な質問かもしれませんが
私が上で引用したタグの、どの記述が
「シフトJISで送信せよ」という命令/指定部分なのでしょう???
また、「シフトJISで送信するな」という指示も出せるのでしょうか?

しなのむし 1998/12/29(火) 05:21:34
function send(){
document.mail.encoding='text/plain';
}
もしくは
<FORM ENCTYPE="text/plain"

とするとURLエンコード(こんなやつ→ %8C%B1)されずに
シフトJISのまま送信されます。
ENCTYPE="text/plain"を書かなければ自動的に
URLエンコードされます。

>> 基本的にACTION= "mailto:を使ったフォームメールで
>> シフトJIS送信するのは推奨されていませんよね?

文字化け等を考えるとURLエンコードされたまま
データのやり取りをして各自ローカルでデコード
する方が望ましいという意味です。

[上に] [前に] [次に]