ちょっと変わったマニアな作品が集結

mailにおいて、MIMEにてエンコードされたSubject:
の内容をテキストに落とすと例えば下のような
エンコードされた文字列になります。
これをデコードし、かつエンコードするための
VisualC++のコードを教えてください。

Subject: =?ISO-2022-JP?B?GyRCJTUlcyVXJWslYSUkJWsbKEI=?=

よろしくお願いします。

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

A 回答 (1件)

=? と ?= ではさまれた部分を ? で区切ります。



[1] ISO-2022-JP
[2] B
[3] GyRCJTUlcyVXJWslYSUkJWsbKEI=

[2]部が'Q'なら quoted-printable, 'B'ならbase-64で
[3]部をデコードし、バイナリを作ります。

そのバイナリは[1]部で指定された文字コードでエンコードされています。

下記URLにはbase-64/quoted-printableエンコード/デコードのサンプルがあります。

参考URL:http://www.s34.co.jp/cpptechdoc/misc/b2a/index.h …
    • good
    • 1
この回答へのお礼

さっそく回答いただき、ありがとうございます。
完璧な内容でした。問題は即座に解決しました。
どうも、ありがとうございました。

お礼日時:2003/04/11 17:14

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

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

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

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

QC言語でのメール送信

C言語でメール送信するプログラムを作りたいのですが、良く分かりません。ある条件を満たしたら設定しておいたメールアドレス先にメールを自動送信するようなプログラムを作ろうと思っています。どなたかご教授お願いいたします。(プログラム初心者)
OSはLinuxです。
(例)
if (i == 100) {
メール送信***********
}

Aベストアンサー

Linux なら (というかUNIX系OSなら) sendmail コマンドを popen() で開いてヘッダと内容を書き込んで pclose() するだけでできます。(つまり、メールの送信は sendmail コマンドに任せるということです)。但し sendmail がデーモンとして動いている必要はあります。



FILE *fp;

if ((fp = popen("/usr/lib/sendmail -t", "w")) == NULL) exit(1);
fputs("From: xxxx@xxxx.com\n", fp);
fputs("To: yyyy@yyyy.jp\n", fp);
putc('\n', fp);
fputs("Test\n", fp);
fputs("Hello\n", fp);
pclose(fp);

実はこれはシェルスクリプトで書いた方がすっきり見易くなります。
シェルスクリプトだとこんな感じです。

#!/bin/sh

/usr/lib/sendmail -t <<EOL
From: xxxx@xxxx.com
To: yyyy@yyyy.jp

Test
Hello
EOL

ということで、まずは自分のアドレスに対してシェルスクリプトでメールを送ってみて届くか確認してみたらどうでしょうか。

Linux なら (というかUNIX系OSなら) sendmail コマンドを popen() で開いてヘッダと内容を書き込んで pclose() するだけでできます。(つまり、メールの送信は sendmail コマンドに任せるということです)。但し sendmail がデーモンとして動いている必要はあります。



FILE *fp;

if ((fp = popen("/usr/lib/sendmail -t", "w")) == NULL) exit(1);
fputs("From: xxxx@xxxx.com\n", fp);
fputs("To: yyyy@yyyy.jp\n", fp);
putc('\n', fp);
fputs("Test\n", fp);
fputs("Hello\n", fp);
pclose(fp)...続きを読む

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 = ...続きを読む

Qemlをtxtに変換するには?

パソコンに詳しくないので教えてほしいことがあります。

emlのファイルをtxtに変換したいのですが、1件ずつのやり方しかわかりません。
emlファイルがたくさんあるので変換に時間がかかります。

早急にtxtに変換し、wordに貼り付けて印刷したいのですが、
一気にtxtに変換する方法はないでしょうか?
教えてください、お願いします。


ちなみにoutlook2010、Windows7を使用中です。

Aベストアンサー

>携帯のメールを変換してemlでメールを開くことはできました。

eml形式のファイルは、Thunderbirdのどれでもよいですが、トレイの画面にドラッグ&ドロップで取り込めます。
その方法で閲覧できたら、次のアドオンのImport Export ToolsをThunderbirdにインストールして、有効にしたら、前記のemlファイルを取り込んだトレイの上で右クリック→インポート・エクスポート→フォルダ内の全てのメッセージをエクスポートで、
〇プレーンテキスト形式
〇プレーンテキスト形式(単一ファイル)
が実行できますから、それぞれtxtファイルとして出力できます。
それぞれ指定した場所にフォルダに入った状態でエクスポートされます。

単一ファイルの方はそのままそのtxtファイルを印刷したら、褌状態で連続した印刷物が手に入ります。
添付ファイルは当然落ちますが、ファイル名はスタンプされます。
今後もそのような利用をされることがあるのでしたら、Thunderbirdは便利ですから、入れておけばよいですね。
http://mozilla-remix.seesaa.net/article/28838742.html

>携帯のメールを変換してemlでメールを開くことはできました。

eml形式のファイルは、Thunderbirdのどれでもよいですが、トレイの画面にドラッグ&ドロップで取り込めます。
その方法で閲覧できたら、次のアドオンのImport Export ToolsをThunderbirdにインストールして、有効にしたら、前記のemlファイルを取り込んだトレイの上で右クリック→インポート・エクスポート→フォルダ内の全てのメッセージをエクスポートで、
〇プレーンテキスト形式
〇プレーンテキスト形式(単一ファイル)
が実行できますから、そ...続きを読む

QJavaMailの受信処理で質問

ヤマトです。

JavaMailを使用してメールの送受信ができるようにしました。
メールの送信も受信も基本的には問題なく動作します。
しかし、一点問題がありまして、メール受信時なのですが、受信したメールをメールサーバから取得した後、
そのメールをメールサーバに残したままにしてしまいます。
(なのでもう一度実行すると同じメールを受信してしまいます)
受信した後メールサーバから削除したいのですが、調べたのですが、分かりません。
どなたか、以上の件に関し、ご教授願えますでしょうか?

以下に、作成したメール受信のソースを載せます。
javamail-1_2.zip とjaf1_0_1.zip をダウンロードして使用しています。JDK1.3です。
宜しくお願い致します。

== メール受信ソース(一部抜粋)

// メールサーバーへ接続
Session session = Session.getDefaultInstance(System.getProperties(), null);
Store store = session.getStore("pop3");
store.connect(PopServerAddress, -1, MailUser, MailPassword);

// メールサーバのフォルダーを開く
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);

// フォルダーのメール件数を取得
int totalMessages = folder.getMessageCount();
if (totalMessages == 0) {
System.out.println("メールは0件です");
folder.close(false);
store.close();
return;
}

// フォルダーのメールを取得
Message[] messages = folder.getMessages();

// フォルダーを閉じます
folder.close(false);
store.close();

ヤマトです。

JavaMailを使用してメールの送受信ができるようにしました。
メールの送信も受信も基本的には問題なく動作します。
しかし、一点問題がありまして、メール受信時なのですが、受信したメールをメールサーバから取得した後、
そのメールをメールサーバに残したままにしてしまいます。
(なのでもう一度実行すると同じメールを受信してしまいます)
受信した後メールサーバから削除したいのですが、調べたのですが、分かりません。
どなたか、以上の件に関し、ご教授願えますでしょうか?

以...続きを読む

Aベストアンサー

kero-piです。

たしか、こんな感じでできたと思います。。。

Message[] messages = folder.getMessages();
for(int i=0;i<messages.length;i++){

// メールに削除フラグをたてる
messages[i].setFlag(Flags.Flag.DELETED, true);
}
folder.close(false);
store.close();

QC言語でBASE64のエンコードのプログラミング

現在、C言語(OS:Linux)でSMTPのメールを送るプログラムを作っています。
しかし、送信のところまでは完成したのですが、日本語では送れません。
そこでContent-transfer-encodingをBase64にしようと考えています。
インターネットや本でいろいろ調べましたが、VCでのソースしか載っていなくて、
それを改良しても出来ない状況が続いています。
BASE64については理解していますが、プログラムが組めません。

どなたか、C言語(VCではないもの)でBASE64のエンコードのプログラミングのソースを
公開しているサイトを知りませんか。
また、ソースを公開してくれる人がいましたら、教えてください。
よろしくお願いします。

Aベストアンサー

ここかな?
http://www.kumei.ne.jp/c_lang/sdk3/sdk_235.htm

見ながら作りました。

参考URL:http://www.kumei.ne.jp/c_lang/sdk3/sdk_235.htm

QシフトJIS⇒MIMEエンコード(RFC2047)

シフトJISの文字列をMIMEエンコード(RFC2047)
(メールのヘッダに使うような、=?ISO-2022-JP?B?・・・というようなヤツ)
に変換する、unix系gcc(C++ではなくてC)でコンパイルできるライブラリ、
ないでしょうか。。?

途中まで作りかけたのですが、
あまりに複雑でギブアップしてしまいまして。。
また、用途上、nkfなどの外部プログラムは呼び出せないのです。

Aベストアンサー

iso-2022-jpのmimeですよねえ。
SJIS→JISのコンバートとbase64のエンコードはできたものとして、説明します。
確かに少し難しいですが、行カウントを工夫すれば可能ですよ。要は、
1. ASCII→JISのタイミングで16文字のヘッダが入る
2. base64エンコードでは、元のJIS文字列(エスケープシーケンス含む)のバイト長さ(3+文字数*2+3)/3*4がbase64のバイト長なので毎回計算して比較する
3. JIS→ASCIIのタイミング(行末も)では2文字のトレーラが入る

この3点をカウントの際に条件づけるだけです。
簡単に計算すると、一度"=?iso..."とMIMEエンコードに入ると最低でも16+(3+1*2+3)/3*4+2=30バイトなければ抜けられない。

ASCII・JISを1文字単位でバッファリングして行内の文字列をカウントして条件をコントロールすれば大丈夫です。

どうでしょ?

Qポートの80と443

こちらのサービス(https://secure.logmein.com/)を利用すると、インターネットを見られるサーバーのポートの80と443が空いていればルータやファイアウォールに特段の設定なく外部からサーバーを操作できるそうですが、逆にサーバーのポートの80や443を空けることには何か危険性があるのでしょうか。

Aベストアンサー

ポート80は一般的なHTTP、ポート443はHTTPSです。
この2つのポートがあいていなければインターネット接続(WEBブラウジング)は出来ません。
ですから、ほとんどのファイアウォールでこのポートは開いています。(インターネット接続を制限している社内LANでは当然閉じていますが)

ちなみに、よく使うポートとしてはFTPで20、21、SMTP(送信メール)で25、受信メールPOP3で110あたりです。セキュリティポリシー上、この辺は制限される事も多いですが、HTTP 80、HTTPS(暗号化用)443は通常閉じません。


危険性?
WEBプロトコルを使ってFTP的なファイル転送(WebDAV)やVPN等も出来るようになっています。当然そこにはある種の危険はつきものですが、WEBブラウジングに伴う危険と大きく変わりません。ウィルス等に感染していればこの2つのポートだけでも相当危険でしょうね。

参考まで。

Qapt-get install ****** でinstallしたものをuninstallするには?

御世話になります。
vncserverだけをinstallするつもりが
誤って
apt-get install vncとうってしまいました。
これをuninstallしたいのですが
どのようにすればよろしいでしょうか?

教えて下さい。

Aベストアンサー

# apt-get remove パッケージ名
では、設定ファイルは削除されずに残ります。

完全に削除するときは、
# apt-get --purge remove パッケージ名
です。

QJavaで文字列をゼロ埋め(ゼロパディング)

Javaで文字列を前ゼロで埋め(ゼロパディング)たいのですが、
exceptionが発生してうまくいきません。
だれかお助け頂けたら助かります。

(例)123の前に0を5つ結合したい場合、

String str2="123";
String str = String.format("%08s",str2);

で問題無いと思ったのですが、
exceptionが発生してしまいます。

回答お待ちしております。

Aベストアンサー

そのExceptionはどういったExceptionなのか把握されてますか?
何が悪いのかの理由もそのExceptionからわかると思いますが。

http://docs.oracle.com/javase/jp/6/api/java/util/Formatter.html#syntax
をよく読んで"%08s"という指定ができるのかどうか確認しましょう。

やられたいことは"123"の先頭に"00000000"をつけて後ろから8文字取り出せばできると思いますが。

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(を含む...続きを読む


人気Q&Aランキング