▼スレッド
│
└◇1397:Subjectの日本語使用について [hi-6] 08/16 12:05
├◇1398:Re:Subjectの日本語使用について [kotaro] 08/16
│└◇1399:Re[2]:Subjectの日本語使用について [hi-6] 08/16
│ └◇1401:Re[3]:Subjectの日本語使用について [nil] 08/16
│ ├◇1403:Re[10]:Cygwinで外部にメールを送信するには? [hi-6] 08/17
│ ├◇1405:Re[4]:Subjectの日本語使用について [k-squar] 08/17
│ └◇1406:Re[4]:Subjectの日本語使用について [nil] 08/17
│ └◇1411:Re[10]:Cygwinで外部にメールを送信するには? [hi-6] 08/17
│ └◇1412:Re[11]:Cygwinで外部にメールを送信するには? [nil] 08/17
│ └◇1414:Re[12]:Cygwinで外部にメールを送信するには? [nil] 08/17
│ └◇1419:Re[10]:Cygwinで外部にメールを送信するには? [hi-6] 08/18 <
├◇1400:Re:Subjectの日本語使用について [nil] 08/16
│└◇1402:Re[10]:Cygwinで外部にメールを送信するには? [hi-6] 08/16
│ └◇1407:Re[11]:Cygwinで外部にメールを送信するには? [nil] 08/17
└◇1409:Re:Subjectの日本語使用について [nil] 08/17
└◇1410:Re[10]:Cygwinで外部にメールを送信するには? [hi-6] 08/17
└◇1415:Re[11]:Cygwinで外部にメールを送信するには? [k-squar] 08/17
└◇1416:Re[12]:Cygwinで外部にメールを送信するには? [nil] 08/17
階層が深くなりすぎているとエラーが出ましたので、スレッド一覧
新規に発言させて頂きます。内容としては
1396:Cygwinでメールを外部に送信するには
の続きになるかと思います。
> さすがにとほほな気持ち。
>
> ええと、よい参照先を知らないのですが、
>
> http://www.mew.org/Newsletters/
>
上記ホームページ。参考にさせて頂きました。
Sabjectに日本語を使わない、と言うのがやはり結論になるのでしょうか?
本文の方は一通り、理解できたように思います。
Sabjectに日本語を使わないのはいいのですが、あまり面識のない
人にメールを送る場合、件名が英語だと怪しいメールだと判断され
て読んでもらえない可能性が低くないように思われるのですが。
実際に件名つまりSubjectが英語で来るメールのほとんどはろくで
もないものばかりです。メールを読むだけがやっとという人が少くない現状で、理解を得るのも困難かと思えるのですが、それでも不特定多数の人に一括メールを送信する場合、問題が発生する可能性があるのでしょうか? 自分としては文字化けしたメールを受け取った経験もほとんどない
ので、軽く考えていたところがあります。これは理論上の問題では
なく、私の実際的な運用として不特定多数の方に、あるご案内のメ
ールを送信することを予定しているためです。ご教授頂けると幸い
です。自分の無知と不勉強を承知の上で、やはり迷惑を及ぼすこと
はしたくないとの思いからご質問させて頂きたいのです。ご紹介頂
いたホームページをみたかぎり、本文ではないヘッダの確実な日本
語使用は明確な方法を見出すことができませんでした。私の理解不
足なのかも知れませんが、その点も含めご指摘頂ければありがたい
です。
cygwinの話ではなくなってしまいますがスレッド一覧
テストメール
という文字列をMIMEエンコードすると
=?ISO-2022-JP?B?GyRCJUYlOSVIJWEhPCVrGyhC?=
となります
k-squarさんのスクリプトを参考にされると良いと思います
nkf -M で処理されているのがMIMEエンコードです
メールヘッダーはこの様に処理する決まりなのだと理解してください
これはcygwin特有の事情ではありません、Linuxでも同じです
kotaroさんありがとうございます。スレッド一覧
問題がよく飲み込めていなかったことを自覚しました。お蔭様です。
ところで、k-squarさんのスクリプトを参考に次のようにして
実行してみました。
________________________________________________
#!/bin/sh
(
echo "To: \"あてさき\" <mail@xxxx.xx.jp>" | nkf -M
echo "Subject: さぶじぇくと" | nkf -M
echo "MIME-Version: 1.0"
echo 'Content-Type: text/plain; charset="ISO-2022-JP"'
echo -e "Content-Transfer-Encoding: 7bit\n"
echo "ほんぶんだよ。"
) | nkf -j -m0 | /usr/sbin/sendmail -t
____________________________________________________
はずかしながら今まで何気なく使っていたsendmailの-t
オプションの意味も今調べてみて分かりました。これによって
送信データ内のTo: を宛先として扱ってくれるのですね。
-iは本文中の.だけの行を無視すると言うこともわかりました。
今使っているのはtouboLinux8wsですが、ためしてみると
man nkfでnkfのオプションを調べることができました。
皆様のおかげで、いろいろと発見があり、ほんとよかったです。
ところで、上記スクリプトでもまだ問題が発生する可能性はある
のでしょうか? 自分でためした範囲では大丈夫でした。
すでにCygwin の問題じゃなくて恐縮ですが…スレッド一覧
スレッドやドキュメントをきちんと読んでいただけるとありがたいです。
nkf -M のこともすでに指摘したつもりでした。
また、SJIS で漢字交じりのスクリプトを書くと、使った文字によっ
ては正常に動作しない場合があるので、初心者向きには注意して欲
しい、旨も前に書きました。
一例として、
echo "正義"
他にトラブルが考えられないかどうかは、使い方にもよるので、私
には確信できません。
> すでにCygwin の問題じゃなくて恐縮ですが…スレッド一覧
> スレッドやドキュメントをきちんと読んでいただけるとありがたいです。
すいません。よく確認します。
> nkf -M のこともすでに指摘したつもりでした。
よく調べてから投稿したいところですが、オプションについて検索を掛けてもヒットが多すぎて、うまくいきませんでした。幸いLinuxを使える環境なので、リモートログインしてmanでオプションの解説を見ることが出来ました。あまり厳しくしても初心者が育たない気もするのですが、何でも質問するというのも気が引けますし。スレッドの枝も増えるばかり。正直に言って、いささか威圧的な印象を受けます。いろいろな考えがあると思いますが。
> > また、SJIS で漢字交じりのスクリプトを書くと、使った文字によっ
> ては正常に動作しない場合があるので、初心者向きには注意して欲
> しい、旨も前に書きました。
> 一例として、
> > echo "正義"
http://www.kent-web.com/pubc/jcode/
にとてもよい説明がありました。
> > 他にトラブルが考えられないかどうかは、使い方にもよるので、私
> には確信できません。
>
わかりました。
SJIS でスクリプト書くときはスレッド一覧
nkf に -S オプションつけるのが解法のひとつです☆
また、私が出したスクリプトには
ダブルクォートをシングルクォートでクォーティングしてる
ところと、ダブルクォートをエスケープシーケンスで
クォーティングを有効にしてるところの二種類があります。
あれは使い方のヒントのつもりでしたが、
ここにそう書かないと分からなかったかも?
どこを MIME エンコードしないといけないか、
分かるように書いてたつもり+複数の手法を
使って書き方のヒントを混ぜたつもりなので、
それを読み取ってくれると嬉しかったな〜〜
# 自分で書くならあんな統一感のないスクリプトは書かないし(笑)
>よく調べてから投稿したいところですが、オプションについて検索スレッド一覧
>を掛けてもヒットが多すぎて、うまくいきませんでした。幸い
>Linuxを使える環境なので、リモートログインしてmanでオプション
もともと自身で nkf を使った例を出されているので、検索をかけ
ずともすぐに man 等で確認できると期待したことに、無理があっ
たのでしょうか?
(はじめに MIME に関してご存知ですか? と確認しなかったのが悪
かったのかな)
限られたやり取りの間で威圧ととられかねないのは致し方ないと思
っていますが、不当に厳しくしたつもりはありません。
何でもかんでも質問されるのには付き合うつもりが無いので、新し
い疑問も調べられるような手掛かりを明示しているつもりです。
>http://www.kent-web.com/pubc/jcode/
>にとてもよい説明がありました。
念のため。SJIS の場合、shell の "..." の中では 2byte目の
0x5c(\) だけでなく、0x60(`) (backquote)も問題になります。
(multi-byte化されていない perl で SJIS だと他にもいろいろ)
>SJIS でスクリプト書くときは
>nkf に -S オプションつけるのが解法のひとつです☆
SJIS で書くと、"義" を解釈する時点で問題が起こりますよね。
EUC で書いて nkf -Es するならまだ大丈夫ですが。
個人的には SJIS でスクリプトを書くのは原則としては人には勧め
がたいのですが、Windows 上だと難しいところで困っています。
>また、私が出したスクリプトには
>ダブルクォートをシングルクォートでクォーティングしてる
>ところと、ダブルクォートをエスケープシーケンスで
>クォーティングを有効にしてるところの二種類があります。
>あれは使い方のヒントのつもりでしたが、
>ここにそう書かないと分からなかったかも?
私はある程度はくみとったつもりです。残念ながら、", ' の使い
分けの意味などが明確でない人も少なくないようです。
例では '...' でもよさそうなところでも "..." の中に漢字が入っ
ており、文字列だけを置き換えた場合には、正常に動かない場合も
あるので、明示的な注意がない事を危惧しました。余計なことだっ
たらすいません。
> > もともと自身で nkf を使った例を出されているので、検索をかけスレッド一覧
> ずともすぐに man 等で確認できると期待したことに、無理があっ
> たのでしょうか?
nkfのオプションは-j,-s,-kしか知りませんでした。自慢するわけでなく、むしろ馬鹿ではないかと思うぐらいですが、一月に10冊ぐらいのLinux、UNIX関係の書籍を購入しております。それでもnkfについてはそれ以上のオプションについて解説してあるものを見出すことが出来ませんでした(くまなく目を通しているわけではありませんが。)
別の環境に向け、テキストを送信する以上、不勉強であったと反省していますし、今回がよいきっかけになりました。
何となくの想像ですが、UNIX環境でEUCを使う限り、それほど文字化けが問題になることは少ないのかもしれません(日本語の利用や表示自体が問題になることがありますが。こちらでは何度か苦い経験をし、Linux内で日本語のファイル名は使わないことにしています。)。文字コードの仕様など細かいところはむしろcygwinなど利用されているWindowsユーザの方がお詳しいのではと、思えます。
これは一つの提案ですが、パソコンを2台以上お持ちの方であれば、一台にLinuxをインストールし、サーバ環境を構築し、
他のWindowsパソコンのcygwinからSSHでログインし、使うのはいかがでしょうか? 私はもっぱらこの方法でcygwinを利用しています。ローカルネットワーク内ならほとんどの処理に速度差がありませんし、ネットワーク越しでもそう変わりありません。Linuxのサーバの方はモニタなしで、X Window Systemも何も起動せず、起動したままのログインなしの状態で接続できますし、再起動も出来ます。少し、注意点としてはLinuxのディストリビューションによっては、リモートログインの場合、コマンドをフルパスで打たねばならないことがあります。
/sbin/service
など。パスがわからなければ
[root@hi-6 root]# locate lsof
/usr/sbin/lsof
/usr/share/doc/packages/lsof-4.56
/usr/share/doc/packages/lsof-4.56/00.README.FIRST
/usr/share/doc/packages/lsof-4.56/00CREDITS
/usr/share/doc/packages/lsof-4.56/00DCACHE
のようにlocateコマンドを使う方法もあり、高速です。
cygwinをお使いの方ならLinuxやUNIXには多少なりともご関心があるはず。WindowsXPはLinuxとは違った便利さが沢山ありますし、両方を使い分けることはきっといいことではと思います。その接点として、cygwinがますます発展することを個人的に期待し、願っております。
参考までに、私の利用方法として、ローカル内にLinuxサーバを一台設置し、100キロほど離れた実家の方にも一台Linuxサーバを置き、メールサーバなど利用しています。今まで一度も落ちたことはなく、安定しています。しかし、直接CDで音楽など聴いているとあっけなく固まることがあります。音もWindowsXPより数段劣ります。
本サイトでSSHの日本語表示について質問させて頂いたのが今回のきっかけでしたが、回答をいただいたcocotの利用はとても快適です。とても便利なものを開発して下さった人がいるものだと感心しました。nkfもそうですが。
文字化けの問題もsjisを使わないようにすれば、いくらか解消できるのかもしれません。詳しくはわかりませんが。nilさんがここでsjisについての詳細なご説明をして下さったのを見て、実に根の深い複雑な問題だという感を新たにしました。
> > (はじめに MIME に関してご存知ですか? と確認しなかったのが悪
> かったのかな)
僕の落度です。失礼しました。
Perlの勉強で少しかじった程度でした。EUCの環境でnkf -j
があれば、メールでの標準言語JISコードに変換されるので
それでいいのかなと簡単に考えていました。
> > 限られたやり取りの間で威圧ととられかねないのは致し方ないと思
> っていますが、不当に厳しくしたつもりはありません。
> > 何でもかんでも質問されるのには付き合うつもりが無いので、新し
> い疑問も調べられるような手掛かりを明示しているつもりです。
確かにお陰様で勉強になりました。ありがとうございました。
________________________
最後に、cygwinからリモートログインしたLinux上で次のコマンドを実行してみました。
mail -s "`echo " 正義 饅頭 表示" | nkf -j `" mail@xxx.ne.jp
サブジェクトは化けずに届きましたが、本文は化けていました。[C[C[C[C[C[C[Dst �ƥ���
�� end
テストなどの文字です。何も処理しなかったので当然ですが。
なお、cygwinでは-sオプションは使えないそうです。
それにリモートログインでcygwinのターミナルから日本語を入力すると表示上おかしな位置に挿入されます。これはコマンドライン上の問題であり、viなどで日本語の文章を作る場合などは問題ありません。
蒸し返す気持ちはないのですが、いくらか参考にして頂ければと言う思いの実験です。文字化けメールがなくなるための。
それにこれはcocotを使った結果です。これを使わないと>のサブプロンプトが出て、入力を受け付け、Ctl+dで入力を終了させると次のようなエラーが出ました。
> bash: unexpected EOF while looking for matching ``'
bash: syntax error: unexpected end of file
このあたりもsjisの問題がありそうですね。
なお、このコマンドはcygwinから実行しても絶対的にうまくいかないと思います。むやみに実行しないで下さい。
理由のわからない方は「cygwinで外部にメールを送信するには?」のスレッドをご覧願います。
スレッド一覧
>nkfのオプションは-j,-s,-kしか知りませんでした。自慢するわけ
>でなく、むしろ馬鹿ではないかと思うぐらいですが、一月に10冊
>ぐらいのLinux、UNIX関係の書籍を購入しております。それでもnkf
>についてはそれ以上のオプションについて解説してあるものを見出
>すことが出来ませんでした(くまなく目を通しているわけではあり
>ませんが。)
-M は nkf の歴史でもかなり後に実装された補助的(?)機能のはず
で、知らない事はおかしくないし、解説も少ないと思います。
こういうことがあるので、確認しないのは怖いし、何を調べるにせ
よ、解説書や検索だけに頼らずに、元に近いドキュメント等を参照
して欲しい、という希望の理由をご了承いただけるとうれしいです。
>文字コードの仕様など細かいところはむしろcygwinなど利用されて
>いるWindowsユーザの方がお詳しいのではと、思えます。
残念ながらそうとは限らないように思えます。
>これは一つの提案ですが、
ええと…、UNIX のかわりや入門として Cygwin を使うのは問題も
多い、というのはわりと話題になるようで、できるならば UNIXを
用意したほうがよいそうです。
>mail -s "`echo " 正義 饅頭 表示" | nkf -j `" mail@xxx.ne.jp
エエト…… "...", `...` の入れ子が構文的に正しくないので、意
図した実験にはなってないような気が…
>なお、cygwinでは-sオプションは使えないそうです。
それは mail,sendmail,ssmtp の話を混同されているような気が…
# おしまい。やっぱり雨の日も外に出よう。
>エエト…… "...", `...` の入れ子が構文的に正しくないので、意スレッド一覧
>図した実験にはなってないような気が…
失礼、「構文的には」正しいのでした。
SJIS の時、`...` の unmatch が起こるだけでした。
とにかくめんくらってしまって…
EUCのコマンドラインでは問題ないですが、SJIS のコマンドライン
では問題が生じるのは前から指摘してるのとまったく同じ問題です。
MIME対応 + 日本語対応 の mailコマンドかどうかがあきらかにさ
れておらず、また適切な設定かどうか第3者に確認できないままで、
Subject に漢字を使ったり本文にJISでない漢字で書き込む実験の
結果を流されても、他の人の妥当な参考にはなりにくい気が…
いろいろな考えがあると思いますが。
[root@hi-6 httpd]# which mailスレッド一覧
/usr/bin/mail
[root@hi-6 httpd]# whatis mail
Mail::Address (3) - Parse mail addresses
Mail::Cap (3) - Parse mailcap files
Mail::Field (3) - Base class for manipulation of mail header fields
Mail::Field::AddrList (3) - object representation of e-mail address lists
Mail::Filter (3) - Filter mail through multiple subroutines
Mail::Header (3) - manipulate mail RFC822 compliant headers
Mail::Internet (3) - manipulate Internet format (RFC 822) mail messages
Mail::Mailer (3) - Simple interface to electronic mailing mechanisms
Mail::Send (3) - Simple electronic mail interface
Mail::Util (3) - mail utility functions
mail (1) - send and receive mail
mail [Mail] (1) - send and receive mail
[root@hi-6 httpd]# where
whereami_applet whereis
[root@hi-6 httpd]# whereis mail
mail: /usr/bin/mail /usr/bin/mail.local /etc/mail.rc /etc/mail /usr/lib/mail.help /usr/lib/mai
.tildehelp /usr/local/sbin/mail.pl /usr/local/sbin/mail /usr/share/man/man1/mail.1.gz
これがTurboLinux8workstation付属のmailコマンドに関する情報です。
UCBmailなのかどうかわかりません。UNIXの本ではMailコマンドで読み出されるのが
UCBだと書いてありましたが、コマンドのパスは同じ/usr/bin/です。ucbというディレクトリは見あたらないので、ディストリビューション付属のプログラムなのかもしれません。よくわかりませんが。man mailで英語のマニュアルが出ましたが、MIMEで検索を掛けたところパターンマッチはないと答えが返りました。
これ以上のことはわかりません。参考にならなかったらすいません。
>上記ホームページ。参考にさせて頂きました。スレッド一覧
>Sabjectに日本語を使わない、と言うのがやはり結論になるのでしょうか?
>本文の方は一通り、理解できたように思います。
残念です。もっと適当なページがあるかもしれないので申し訳ない
のですが、下記の段落あたりはそんなに読み取りにくかったでしょ
うか。
* 電子メールと日本語
> さてくどくど書いてきましたが、現在ではヘッダや本文に ASCII
>以外の文字コードの格納が可能です。これは前述のように、RFC
>822 を拡張した規格である MIME のおかげです。次回はヘッダにつ
>いて詳しく説明します。
* MIMEの基礎
- ヘッダの国際化
(ちなみにここの記述のすべてが妥当かどうか私は未確認です)
>RFC2047 が策定される前までは、 よく「Subject: に日本語を>入れてはいけません」 と言われていました。 最近のメールリーダでは RFC2047 を実装しているので、 ユーザは気にせずに日本語を利用できます。 ただし、RFC2047 を実装していないメールリーダを使っているなら、 やはり日本語を使用してはいけません。スレッド一覧
このあたりが気になりました。実装しているメールソフトを使っているかどうかは相手次第なので、どんなリーダ(メールクライアントソフト?)が実装していないか具体例が書いてないのが少し残念でした。MIMEの登場が1992年と書いてありましたが、未だに対応していないものがあるのでしょうか?
いずれにせよ、紹介して頂いたホームページをけなす気持ちは少しもありません。元々難しい内容を丁寧に解説してある優れたページだと印象を受けました。
なるほど、「相手がMIME対応かわからないから」という前提があっスレッド一覧
て「Subject に漢字を使わないほうがいい」という結論でしたら、
それはひとつの見識で、間違いではないかもしれません。失礼しま
した。
私も MIME対応のソフトを使ってますが、自分からはほとんど
Subject に漢字を使いませんが、これは単に習慣。相手先から正し
い形式で来る場合や、漢字Subjectが普通に使われている
mailling-list などでは必要に応じています。
相手(とりあえず日本人)が MIME の Subject を読めない(今となっ
ては古い?)ソフトを使っている可能性はあるが、MIME対応のソフト
で正しく送るならば、プロトコル上の致命的なトラブルは起きない、
という解釈をする人もいると思います。(Subject の内容は本文で
補えなくはないし)
漢字には気をつけてね、だけではすまなくなってしまい、はげしくスレッド一覧
Cygwin の話ではなくなったついでに、いいわけを。
今年の3,4月頃まで受け取った中にいくつか、「不特定多数」宛(こ
れはいわゆる迷惑メール)だけでなく「特定多数」宛(フリーメール
の広告mailling-list) にも、MIME符号化されている Subject を復
号化すると SJIS だった、という、不思議なものに気がつきました。
(文字化けのspamは珍しくは無いですが)
ヘッダーには、X-Mailer: Personal_ML11F とあり、検索したとこ
ろ、大量送信を目的にフリーで配布されたもので、かなり使われて
いる(spamでも有名)らしいものでした。
どうやら、OutlookExpress 等ではいちおうは読めてしまうらしく、
気がつかないままの人もいるようです。
配布サイトでは (有料版)「NETSCAPE等でのSubject文字化けに対応」
などと書いてあり、トホホ感をつのらせます。
こういうものが使われつづけてしまうのには苦笑もできず、スクリ
プトといえど、問題がおきそうなものが広がらないよう祈るばかり
です。
nilさんが苦い経験をお持ちであることはよくわかりました。スレッド一覧
スクリプトを問題視する気持ちも、わかりました。決して間違ってはいないと思います。だから私も、無意識で加害者の立場にならないよう、MIMEについて勉強したいと思い。いろいろと質問させて頂いたのです。ただ、私の理解不足や早とちりもあって、少し不快な気分を与えてしまったかもしれないと反省します。その点はお詫びさせて頂きます。
お陰様で、今回の過程でいろいろと日本語の取り扱いについて得るところがありました。ありがとうございました。
>念のため。SJIS の場合、shell の "..." の中では 2byte目のスレッド一覧
>0x5c(\) だけでなく、0x60(`) (backquote)も問題になります。
あぁ、そういうこともあったんですね・・・。
私自身が MB (マルチバイト) な文字を
" ではクォーティングしないので、
そこまでは想像できてませんでした。
# \ の事だけを思ってました。
ここまでスレッド伸ばしておいて、
結局のところどう書くのが好ましいのか、
結果を書いてないじゃん!!?
っていらだつ人がいるかと思うので、
とりあえず私なりのスクリプトを書いてみます。
せっかくなので SJIS で書くことにしましょう♪
# SJIS だと想像して読んでください
shell 変数使いたいときには MB 文字を使わずに、
その部分だけシングルクォートを閉じて、
ダブルクォートでクォーティングして、
そのすぐ後でシングルクォートを開いて使ってくださいな。
添削は nil さんにお願いします☆
--
#!/bin/sh
export NKF=/usr/local/bin/nkf
SENDMAIL=/usr/sbin/sendmail
(
(
# ヘッダ部分
echo 'To: "あてさき (正義とか饅頭とか表示でも OK)" <to-mailaddress@subdomain.sld.tld>'
echo 'Subject: さぶじぇくと (正義とか饅頭とか表示でも OK)'
echo 'MIME-Version: 1.0'
echo 'Content-Type: text/plain; charset="ISO-2022-JP"'
echo 'Content-Transfer-Encoding: 7bit'
echo ''
) | $NKF -S -M
# 本文部分
echo ''
echo 'SJIS でメール本文を準備しておいて、'
echo 'ここでそのファイルを cat で流したりするのも'
echo '良いと思います♪'
echo ''
echo '正義とか饅頭とか表示でも OK'
echo ''
) | $NKF -S -j -m0 | $SENDMAIL -F "$(echo 'おくりぬし (正義とか饅頭とか表示でも OK)' | nkf -S -M)" -f "from-mailaddress@subdomain.sld.tld" to-mailaddress@subdomain.sld.tld
うう、0x5c だけじゃないと言ってたつもりなんだけど、メタキャスレッド一覧
ラクタなど、と言っただけでは、0x5c だけ思い浮かぶのかなあ。
例も出したのが遅かったのかな。すいません。
かと言って、問題のあるケース全部は知らないのであげられないし。
私自身、通常は '' 使ってても汎用的に問題ないかどうか確信は無
いし、ましてや "" でどういうケースが起きるかは検証していない
ので。
それで、「例」ならば、せめて警告も必要だと。
というわけで、スタンスも違うし、自分で使わないスクリプトの添
削など滅相も無いです。