linux文字コードはutf8,linuxからOutlook Expressに送信する。
受信したメールのタイトルは文字化けとなる。なぜですか。

linuxで、シェルの中で、下記の部分で、送信する。
/sbin/service snmpd start 2>&1 | \
/bin/mail -s "日本語" s@ks.co.jp

上記のソースを見ると、分かると思いますが。
どうすれば、文字化けがなくなれますか。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

subjectを、ISO-2022でエンコードしなければいけません。



こんなページがあったので。。。
http://www.kcn.ne.jp/~idic/cgi-bin/mime.cgi

/bin/mail -s =?ISO-2022-JP?B?GyRCRnxLXDhsGyhC?= s@ks.co.jp

で試してみて下さい。

この回答への補足

件名は必ず"日本語"ではないです。件名は日本語文字です。シェルの中で、件名の変数を受け取って、送信する。
例:/sbin/service snmpd start 2>&1 | \
/bin/mail -s "[$HOSTNAME]" $MAILTO

上記の"[$HOSTNAME]" は日本語文字となります。
ソースの中で、"[$HOSTNAME]" を文字コードiso-2022-jpに変換して、送信してほしいです。

補足日時:2009/05/12 11:17
    • good
    • 0

Subjectの非Asciiの場合、Base64エンコード又はQエンコードする必要があります。



形式は以下
encoded-word = "=?" charset "?" encoding "?" encoded-text "?="

"日本語"をBase64エンコードした場合
?iso-2022-jp?B?GyRCRnxLXDhsGyhC?=

詳細はRFC2047参照

この回答への補足

件名は必ず"日本語"ではないです。件名は日本語文字です。シェルの中で、件名の変数を受け取って、送信する。
例:/sbin/service snmpd start 2>&1 | \
/bin/mail -s "[$HOSTNAME]" $MAILTO

上記の"[$HOSTNAME]" は日本語文字となります。
ソースの中で、"[$HOSTNAME]" を文字コードiso-2022-jpに変換して、送信してほしいです。

補足日時:2009/05/12 11:13
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qlinuxのmailコマンドの文字化けについて

linuxのmailコマンドの文字化けについて

今Ubuntuマシンを使っているのですけど
このマシンでpostfixを使ってgmailサーバーを経由して外部にメールをおくれるように設定してあるのですが、
これでmailコマンドでドコモの携帯にメールを送るとき
mail XXX@docomo.ne.jp < (UTF-8のファイル) だと文字化けします。
mail XXX@docomo.ne.jp < (EUCのファイル) だと文字化けしません。
受信側で文字コードを変更すればいいのですが、送信側でなんとかしたいと思いました。
でメールヘッダをみると content-type:が設定されてないようなので、これのcharsetを設定したらうまくいくかもとおもいました。(そこで端末のコードUTF8を設定したい)
のですが、postfixのmain.cfのどこをみてもそのような設定はないようです。
もっとmailer側の設定なんだろうか?
どこで設定すればいいのかわかる人教えてください

Aベストアンサー

送信するメッセージのエンコード、およびそれに関するMIMEヘッダの付与はメーラー側の責任…だったかと。

postfix単体ではどうにもならないと思われます。
# SpamAssassinでチェックする方法のように外部プログラムに頼ることになる…かと。

/bin/mailでは追加のヘッダを指定することができないようですので、postfixインストール時に追加されているであろうsendmail互換プログラムを使用することになると思われます。
# CentOS5.5ならsendmail.postfixという名前で入っています。

ちなみに、sendmail.postfixで送信する場合はToヘッダなど、諸々自分で指定する必要がある…みたいです。
# そのあたりは大本のsendmailでのメール送信に関して検索すると出てくるのではないでしょうか…。

Subjectで日本語を使う場合もいろいろと決まり事がありますし…
# 一般的な日本語メールではISO-2022-JPでエンコードされているかと。

本文の部分はnkfでISO-2022-JPにエンコードで、Subjectは-Mオプションでできる…ようです。
# 手元のCentOS5.5に入っているnkfでは-MオプションだけだとSubjectヘッダにそのまま渡せるような形式にはなってくれませんでしたけど。
# なぜか終端の"?="が付かない……。しかも途中で切れている感じでしたし…。

送信するメッセージのエンコード、およびそれに関するMIMEヘッダの付与はメーラー側の責任…だったかと。

postfix単体ではどうにもならないと思われます。
# SpamAssassinでチェックする方法のように外部プログラムに頼ることになる…かと。

/bin/mailでは追加のヘッダを指定することができないようですので、postfixインストール時に追加されているであろうsendmail互換プログラムを使用することになると思われます。
# CentOS5.5ならsendmail.postfixという名前で入っています。

ちなみに、sendmail.postfixで...続きを読む

Qlinuxからのメールが文字化けとなる

linux文字コードはutf8,linuxからOutlook Expressに送信する。
受信したメールは文字化けとなる。なぜですか。

linuxで、シェルの中で、下記の部分で、送信する。
/sbin/service snmpd start 2>&1 | \
/bin/mail -s "snmpd was restarted tomatically." s@ks.co.jp

上記のソースを見ると、分かると思いますが。
メールの本体について、linuxで、VIモードで、
snmpd を起動中: ^[[60G[ ^[[0;32mOK^[[0;39m ]となっています。
catモードで、見ると、snmpd を起動中: [OK] となっています。

どうすれば、文字化けがなくなれますか。

Aベストアンサー

>「snmpdを起動中」の部分も化けています。

では、serviceコマンドの出力をメールで標準的に用いられる文字コードに変換する

/sbin/service snmpd start 2>&1 | iconv -f UTF-8 -t iso-2022-jp | mail -s .....

とか、そもそもメッセージを英語にする

LANG=C /sbin/service snmpd start 2>&1 | mail -s .....

などの対応が考えられます。
ただし、それでも [OK] の前後の制御文字列は残ってしまいますので、

> 制御文字列を取り除くようなフィルタを通す必要があります。』はどいうことですか。

sed などを使って、制御文字を削除するということです。

Qutf-8でメールを送信すると件名が文字化け

Perlでメールフォームを作成しております。
今後のこともあってUTF-8でファイル、HTMLの出力をおこなっております。
なにかとutf-8便利でさくさくと問題なく作成していたのですがメール送信の肝心な部分で問題が出てきました。
送信先はiモードで506iです。
メールのヘッダーを以下のようにして送ると件名の日本語がどうしても文字化けします。本文はしません。アウトルックエクスプレス6.0では文字化けしません。YahooWebメールは文字化けしました。

Reply-To: $adminmail
Errors-To: $adminmail
To: $user_mail
From: $adminmail
Subject: $subject
content-transfer-encoding: 7bit
Content-type: text/plain; charset=utf-8

・携帯がutf-8に対応していないメーラーなんだろうと思いますがなぜ本文は文字化けしないんでしょうか。
・件名を文字化けをしないようにする方法はありますでしょうか?(ファイルの保存形式はutf-8を変えずに)

Perlでメールフォームを作成しております。
今後のこともあってUTF-8でファイル、HTMLの出力をおこなっております。
なにかとutf-8便利でさくさくと問題なく作成していたのですがメール送信の肝心な部分で問題が出てきました。
送信先はiモードで506iです。
メールのヘッダーを以下のようにして送ると件名の日本語がどうしても文字化けします。本文はしません。アウトルックエクスプレス6.0では文字化けしません。YahooWebメールは文字化けしました。

Reply-To: $adminmail
Errors-To: $adminmail
To: $u...続きを読む

Aベストアンサー

私もサブジェクトが文字化けしてしまい苦しみました。
携帯での文字化けということなので役に立つかわかりませんが、

以下のサイトを参考にして、
http://www.securehtml.jp/utf-8/perl_utf_mail.html
メールフォーム用に書き直してみたものです。

<!-- ここから -->
##Perlの冒頭に入れる1行
##MIME::Base64がインストールされていることが前提
use MIME::Base64;

##送信処理
local($msub,$mbody,$headers);
$msub = $_[0];
$mbody = $_[1];
$headers = $_[2];

# メールタイトル
$msub = "テスト送信完了通知";

$mbody .= "メール送信テスト\n\n";
$mbody .= "名前:$in{'name'}\n\n";

$msub = $subject;

$headers = "From:$email\nMIME-Version: 1.0\nContent-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: base64\n";

$eol = "";
$msub_b = encode_base64($msub,$eol);
$msub_b = "=?utf-8?B?" . $msub_b . "?=";

open(MAIL,"| $mailprog -t") || &error("メール送信に失敗しました");
print MAIL $headers;
print MAIL "To: $mailto\n";
print MAIL "Subject: $msub_b\n\n";
print MAIL encode_base64($mbody);
close(MAIL);
<!-- ここまで -->

$msubがサブジェクトで、$mbodyが本文です。
$msub_bがエンコードされたサブジェクトということになります。
エンコード対象外(半角英数のみ)の部分を$headersにまとめています。
参考サイトのソース順のまま流用しようとすると文字化けします。

参考URL:http://www.securehtml.jp/utf-8/perl_utf_mail.html

私もサブジェクトが文字化けしてしまい苦しみました。
携帯での文字化けということなので役に立つかわかりませんが、

以下のサイトを参考にして、
http://www.securehtml.jp/utf-8/perl_utf_mail.html
メールフォーム用に書き直してみたものです。

<!-- ここから -->
##Perlの冒頭に入れる1行
##MIME::Base64がインストールされていることが前提
use MIME::Base64;

##送信処理
local($msub,$mbody,$headers);
$msub = $_[0];
$mbody = $_[1];
$headers = $_[2];

# メールタイトル
$msub = ...続きを読む

Q「mail」コマンドと「sendmail」コマンドについてのくだらない質問です

よろしくお願いします。
電子メールの送受信を行う「mail」コマンドというのがあるのですが、そのほかに「sendmail」というコマンドがあるようです。
この「sendmail」もメールの送受信に使うコマンドでしょうか。
ちなみに、うちの自宅サーバでは「mail」コマンドは使えますが「sendmail」コマンドが使えません。
$ /usr/lib/sendmail
というようにフルパスで指定してもダメでした。
5分経っても10分経っても次のプロンプトが表示されずに反応が無くなってしまいますので「Ctrl」+「c」キーで強制的にプロンプトを表示させるしかありません。
ひょっとして最近コマンド名が変わったとか、そういうことでしょうか。

ディストリビューションはRed Hat Linux8.0で
SMTPサーバはsendmail-8.12.5-7.i386.rpmとかいうものです。
どなたか教えてください。

Aベストアンサー

vオプションと宛て先を指定して起動し、メール本文、「.」(ピリオド)で完了です。

マシンのFQDN:hogehoge.somedomain.net
ユーザ名  :honyarara
だとするとこうなります。

-------------------------------------------
$ /usr/lib/sendmail -v honyarara@hogehoge.somedomain.net
This is test mail  <-- メール本文
.          <-- ピリオドのみ
-------------------------------------------

ひょっとしたら root権限が必要かも。

Qbashなどのシェル変数の値に改行を含める事は可能でしょうか?

タイトルの通りですが、通常のシェル変数の値として

 [prompt]$ aaa="bbb<改行>ccc"

のようなセットを行い、

 [prompt]$ echo $aaa
 bbb
 ccc
 [prompt]$

のような結果を得たいのですが、可能でしょうか。

Aベストアンサー

可能です.
というか,やってみたら出来ることがわかると思います.こんなところで聞くより早い.
なお,sh/bash系では改行文字は特にエスケープせずそのまま入れられます.

aaa='bbb
ccc'

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

Qmailコマンドでメール送信が出来ない

Linuxでメール送信をしようとmailコマンドを使用してみたのですが、携帯(それ以外でも)で受信することが出来ません。

**********************************************
$ mail xxxxx@xx.ne.jp(携帯のアドレスetc)
Subject: TEST
This is test.
.
Cc:
**********************************************

という感じでターミナルからコマンドでメールを送信しようとしたのですが、メールが届きません。知識不足のためどこをどうしていいのか分かりません。原因はどこなのか分かる方がいらっしゃいましたらご教授お願いします。Linux初心者なので、分かりやすく教えて頂けるとありがたいです。宜しくお願いします。

Aベストアンサー

yahoo側のメールサーバで拒否されているようですが、伏字になっている「ctladdr=<root@***>」の***の部分はホスト名+ドメイン名になっていますか?もしホスト名だけだったら送信先のホスト名とアドレスのチェックに引っかかっているのでしょう。

使用しているのがsendmailであれば、/etc/mail/sendmail.cf や /etc/hosts あたりの修正(もしかしたらDNSも)が必要と思われます。

またroot宛てにエラーメールが返ってきていれば、もうちょっとわかりやすいエラーメッセージが書いてあると思いますのでチェックしてみてください。

Qmailコマンドで外部メールに送れない

内部からmailコマンドで rootに送信すると/var/spool/mail にデータが入る、これは、要するに内部から内部に送られたと思っていいのでしょうか、今度は、内部から外部ドメインに送る
#mail xxx@yahxx.co.jp
#Subject: test
#test
#.
#Cc:
と行うと、外部に届かないのです。
sendmailは8.12.5です
考えられる事は何がありますでしょうか?

Aベストアンサー

>Oct 18 18:04:09 localhost sendmail[26578]: j9I9491Y026578: to=xxx@yahxx.co.jp,
>delay=00:00:00, mailer=esmtp, pri=30037, dsn=4.4.3, stat=queued

メールログからDSN(Delivery Status Notification)が4.4.3だからDNSが利用出来ずに送信先メールサーバが分からずメールが送信出来ていないのだと思います。
メールログにホスト名がlocalhost.localdomainと表示されているようですしネットワーク周りの設定はちゃんと行っていますか?

○RFC 3463より抜粋
 http://www.ietf.org/rfc/rfc3463.txt?number=3463
-------8<-------8<-------8<-------8<-------
X.4.3 Directory server failure

The network system was unable to forward the message, because a
directory server was unavailable. This is useful only as a
persistent transient error.

The inability to connect to an Internet DNS server is one
example of the directory server failure error.
-------8<-------8<-------8<-------8<-------

>Oct 18 18:04:09 localhost sendmail[26578]: j9I9491Y026578: to=xxx@yahxx.co.jp,
>delay=00:00:00, mailer=esmtp, pri=30037, dsn=4.4.3, stat=queued

メールログからDSN(Delivery Status Notification)が4.4.3だからDNSが利用出来ずに送信先メールサーバが分からずメールが送信出来ていないのだと思います。
メールログにホスト名がlocalhost.localdomainと表示されているようですしネットワーク周りの設定はちゃんと行っていますか?

○RFC 3463より抜粋
 http://www.ietf.org/rfc/rfc3463.txt?n...続きを読む

Qレッドハットのバージョン確認方法

自分のサーバで使用しているREDHATのバージョン確認はどうすればいいのでしょうか?

more /etc/issue
とやっても英文しか出てきませんでした。

uname -all
でもカーネルのバージョンは出るのですが、REDHATのバージョンは出ませんでした。

Aベストアンサー

> more /etc/issue
> とやっても英文しか出てきませんでした。

その英文にはRedHatのバージョンは書いてなかったのですか?
書いていなかったとしたら、管理者により編集されている可能性
がありますね。

cat /etc/redhat-release

ではいかがでしょう?
やっぱり英文ですけど。

rpm -q redhat-release

でもいいかも

QDirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)

いろいろ調べましたが不明な点があり、質問します。

WindowsのDOSプロンプトでdirコマンドを打つとフォルダ・ファイルの一覧が表示されますが、その中にファイルサイズが表示されています。
このサイズを合計できるコマンドはありませんか?
DIRコマンドのオプションを調べましたがそれらしいものが見当たりません。
具体的には
C:\xxx\配下に50個程度のファイルがあります。
その50個の合計サイズを知りたいです。
xxxフォルダの親フォルダにはアクセス不可です。

ずーっと悩んでいます。よろしくお願いします。

なお、OSはWindowsNTか2000で使用予定です。

Aベストアンサー

カレントドライブ、カレントフォルダを
C:\xxx\
にした状態で、

dir /s /a-d

/sパラメータででサブディレクトリすべてを検索
/a-dパラメータでディレクトリ以外のファイル(つまり属性に関係なくすべてのファイル

これを実行すると最後にファイルの個数とファイルサイズの合計を表示します。

もし、隠し属性のファイルは合計しないのであれば、

dir /s

だけで良いと思われます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報