• ベストアンサー
  • 困ってます

メール本文をbase64でエンコードする方法

既存システムとの連携のためにメール本文をbase64でエンコードするというハメになってしまいました。 いくつか試してみたのですが message.setHeader("Content-Transfer-Encoding", "base64");とか message.setContent(MimeUtility.encodeText(Content, "ISO-2022-JP", "B"),"iso-2 022-jp");とかやっても 常にContent-Transfer-Encoding: quoted-printableとなってしまいます。 JAVAmailを使って、添付ファイルではなくメール本文をbase64でエンコードする方法ご存知の方いらっしゃいませんか。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数1279
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.3

Base64Decoder、Base64Encoderというクラスがある ページを書きます。商用でない利用の場合は無料、 商用利用の場合は、開発者が全員本を買うことで利用可能なライセンスのようです。

参考URL:
http://www.servlets.com/cos/index.html

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。試してみます。

関連するQ&A

  • phpで送ったメールのヘッダーが本文にはみ出す

    表題のことでこまっております。 phpでメールフォームを作ったのですが、送ったメールをOutlookExpress(OE)で受信したときに、ヘッダーの一部が本文に表示されてしまいます。 OEで受信メールのプロパティを開くと下記のようになっております。 Return-Path: <xxx@xxx> Delivered-To: xxxxx_xxxxx@xxxx.xxx Received: (qmail 16291 invoked by uid 48); 1 Feb 2007 16:26:13 +0900 Date: 1 Feb 2007 16:26:13 +0900 Message-ID: <20070201072613.16290.qmail@xxxx.xxx> To: yyyyy@yyyy.yyy Subject: =?iso-2022-jp?B? From: zzz@zzzz.zzz X-Mailer: ContactForm MIME-Version: 1.0 Content-Type: text/plain;charset=ISO-2022-JP Content-Transfer-Encoding: base64 本文にはみ出るのは最後の3行(MIME~base64)です。 原因は空行が入っているためだと思いますが、OEのメールソースでは空行はありません。 プログラムのソースは $header ="From: $from\r\n"; $header ="CC: $cc\r\n"; $header .= "X-Mailer: $mailer\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: text/plain;charset=ISO-2022-JP\r\n"; $replyheader .= "Content-Transfer-Encoding: base64\r\n"; $Subject='=?iso-2022-jp?B?'.base64_encode(mb_convert_encoding($Subject,'JIS','SJIS')).'?='; @mail($from,$Subject,$Message,$header); hotmailなどのwebメーラーで見たときにははみ出していません。 これはなぜでしょうか?宜しくお願いします。

    • ベストアンサー
    • PHP
  • C言語でBASE64のエンコードのプログラミング

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

  • PHPから携帯へメール送信

    いつもお世話になっております。 PHPから携帯電話へ"絵文字付き"でメールを送るプログラムを作成している のですが、『base64_encode』等を使用して絵文字の表示までは行う事がで きました。 ですが、本文が途中で途切れてしまうのです・・・。 PHP側は、 $to = mb_convert_encoding(mb_decode_mimeheader($structure->headers['from']), 'SJIS', 'ISO-2022-JP'); $subject = mb_convert_encoding(mb_decode_mimeheader($structure->headers['subject']), 'SJIS', 'ISO-2022-JP'); (省略)  ・  ・ $body = $structure->body; $body = preg_replace('/\s*>\s.*/', '', $body); $body = mb_convert_encoding($body, 'SJIS', 'ISO-2022-JP'); //---------------------------------- // base64_encode //---------------------------------- $subject = "=?shift_jis?B?" . base64_encode($subject) . "?="; $body = base64_encode($body); //---------------------------------- // ヘッダを作成 //---------------------------------- $headers = "From: test@mail.com\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Type: text/plain; charset=Shift-JIS\n"; $headers .= "Content-Transfer-Encoding: base64"; //---------------------------------- // メール送信 //---------------------------------- $res = mail($to, $subject, $body, $headers);  ・  ・ (省略) 上記のように記述しています。 メールは送れます。絵文字も表示されます。ですが、本文が途中で途切れ てしまいます。 どなたかご教授をお願い致します。

    • ベストアンサー
    • PHP

その他の回答 (3)

  • 回答No.4

もうひとつApache CodecにもBase64のクラスがあるようです。

参考URL:
http://jakarta.apache.org/commons/codec/

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。試してみます。

  • 回答No.2

ついでですが、 このページに書かれていますが、 sun.misc.BASE64Decoderという、非公式のものも存在するようです。

参考URL:
http://www.lake.its.hiroshima-cu.ac.jp/~mondo/Java/TnE/003.html

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 試してみます。

  • 回答No.1

base64というのは、文字コードの種類ではないのでそのやり方ではできません。 簡単に言うならば、バイナリをメールで扱える文字列に変換しているのです。 ですので、そのロジックを理解し、そのプロセスを踏むことで同様のことが行えます。 参照ページをごらんになった後、ググって見ればいろいろ情報が拾えますよ。

参考URL:
http://www.mars.dti.ne.jp/~torao/program/mail/base64.html

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます。 教えていただいたURLの内容は理解しました。 JAVAmailだけでは メール本文はSubjectなどと同じようにbase64にエンコードできないのですね。

関連するQ&A

  • 題名が化ける(本文は読める)

    タイトルの様に、 題名が化ける 本文は読める ・・・メイルを受け取っています。 日本語での、 アメリカからのメイルマガジンです。 ISO-2022-JP で送られてきます。 HTML形式です。 Content-Type: text/plain; charset="iso-2022-jp" Content-transfer-encoding: 8bit ・・・となっていますが、 どうして、8bit ? と思っています。 Encodingを、 Shift_JIS にすると、 題名は、見られますが、 本文が、化けます。 ISO-2022-JP にすると、 題名が化けますが、 本文が読めます。 どの様なMUAを使っているか、問い合わせていますが、 題名が、Shift_JIS 本文が、ISO-2022-JP ・・・の設定はあるのでしょうか? これを、統一すれば、化けないと思うのですが。

  • Gmailへのメール送信で文字化け

    PHPでフォームメールの作っているのですが、Gmailで送信したメールを受け取ると□□□□□というように文字化けが起こっていまいます。 アウトルック、ホットメールなどは大丈夫なのですが、グーグルのGmailだけ駄目なようです。なぜ文字化けするのでしょうか? mb_language("Ja"); $header = "From: reminder@aaa.com\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: text/plain;charset=ISO-2022-JP\r\n"; $header .= "Content-Transfer-Encoding: base64"; $to = "aaa@gmail.com"; $subject = "送信テスト"; $body = "本文テスト本文テスト"; $subject = base64_encode($subject); $subject = mb_convert_encoding($subject,"ISO-2022-JP"); $subject = "=?ISO-2022-JP?B?" . $subject . "=?="; $body = base64_encode($body); $body = mb_convert_encoding($body,"ISO-2022-JP"); $success = @mail($to,$subject,$body,$header); if($success) print "成功"; else print "失敗";

    • ベストアンサー
    • PHP
  • メールから本文だけを取り出す方法

    今、迷惑メールフィルタリングを作成しているのですがメールの本文だけを取り出す方法がわかりません。 本文の前には Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-UIDL: B1("!E-U"!Lj<"!Se_"! などが書かれているのですが、これらに規則性がなく文字列処理で取り出すのに苦戦しているところです。 添付ファイルのないメールだと大体X-UIDLで終わっているのですが、 添付ファイルが付いているとメーラーごとに違うのか --Multipart=とあったり--Apple-Mail-5-234401926と書いてあったりします。 メーラーを作成している人ならきっと詳しいと思うのですが、誰か教えていただけませんでしょうか。

  • Perlでのメール本文の解析について

    ここで一週間も止まっています、どなたか助けてください。 あるサーバーにたまっているメールを受信して Net::POP3; MIME::Parser; などを利用して本文を取り出したりしています。 件名などはきちんと解析できて日本語にできるのですが、どうしても本文だけはどうなっているのかわかりません。エンコード、デコードなどの説明が書いてあるサイトをたくさんみて200回くらいいろんな方法やパターンを試してみて本文を復元しようと試みましたが 「$B$^$7$m?'%7%s%U%)%K!<$N%Q%s$K$c(B」の文字は何も変わることなく、さすがに気が狂いそうになりましたのでここで質問しようとおもいます。 emlで保存したファイルから本文を取り出すことはできますが、読める状態になりません。 どなたか教えていただけないでしょうか? いったい、どうしたらメールの本文をきちんと読める状態にできるのしょう? ========================= Subject: =?ISO-2022-JP?B?GyRCJF4kNyRtPyclNyVzJVUlKSVLITwbKEI=?= To: test@test.com Status: RO X-UIDL: 1358842469.4950.s323,S=1722 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit $B$^$7$m?'%7%s%U%)%K!<$N%Q%s$K$c(B

    • ベストアンサー
    • Perl
  • Quoted Printableのエンコードに対応するのは難しいのですか?

    1.概要 From: 5147golden_women_max@***.com To: ****@***.*******.**.** Message-id: <20050518135341@******.**.**> MIME-version: 1.0 X-MIME-Autoconverted: from 8bit to base64 by proc01.***.**.** id j4I4jrj05713 Content-type: text/plain; charset=SHIFT_JIS Content-transfer-encoding: base64 X-HIHO-meiwaku-status: normal X-HIHO-FILTER: Wed, 18 May 2005 13:45:53 +0900 (JST) X-NAS-Language: Japanese X-NAS-Bayes: #0: 1; #1: 2.16264E-118 Subject: [Norton AntiSpam] { C C x ?= --------------ここです! X-NAS-Classification: 1 X-NAS-MessageID: 240 X-NAS-Validation: {1359D949-4E7B-4948-8968-C36EA7269910} 2.背景 Quoted Printableのエンコードには対応していません。日本語の件名(Subject)に全角文字がある場合、エンコード方法として最も一般的であるBASE64エンコードに対応しておりますが、quoted printableエンコードには対応しておりません。このため、フィルタリングに設定された文字列を含む件名のメールでも、quoted printableでエンコードされているメールはフィルタリングされません。

  • メール本文に変な文字が

    outlookでメールを送信したら、 本文の前後に ------=_NextPart_000_0008_01C63A76.9E0B9930 Content-Type: text/html Content-Transfer-Encoding: quoted-printable <html xmlns:o=3D"urn:schemas-microsoft- 省略 <p class=3DMsoNormal><font size=3D2 face=3DCentury><span = lang=3DEN-US><o:p>&nbsp;</o:p></span></font></p> </div> </body> </html> ------=_NextPart_000_0008_01C63A76.9E0B9930-- というような文字がついてしまいます。 何か設定がおかしいのでしょうか? どなたかわかるかたがいらっしゃったら教えていただけないでしょうか? パソコンはwindowsXPです。

  • メールが読めない

    hotmailからgooメールに送られたメールの本文が英数字の羅列になっていて読めません。 冒頭の2行は Content-type: text/plain; charset=big5 Content-Transfer-Encoding: base64 となっています。 文字コードの違いでしょうか。

  • Perlでメール本文と添付ファイルを切り分ける方法?

    perlでメールを受信して、添付ファイル部分をファイルにするスクリプトを書こうとしているのですが 知識がなく進めません。 単なるメールの受信は Mail::POP3Clientを使えば、簡単に出来ましたが BODY部で、本文と 添付ファイルを区別して 本文には $honbun 添付ファイル @tenpu({-fname=>ファイル名, -content=>中身ファイル}, ... という風に、簡単にメールボディ部を切り分ける方法やモジュールはあるのでしょうか? 例) This is a multi-part message in MIME format.------=_NextPart_000_000F_01C59927.53E8 B0E0Content-Type: text/plain; format=flowed; charset="iso-2022-jp"; reply-type= originalContent-Transfer-Encoding: 7bit------=_NextPart_000_000F_01C59927.53E8B0E0C ontent-Type: application/octet-stream; name="Tk-800.024.tar.gz"Content-Transfer-En coding: base64Content-Disposition: attachment; filename="Tk-800.024.tar.gz"H4sICBX bhDwCA1RrODAwLjAyNC50YXIA7DxrV9vIkvka/Yq6xBvLQX7ySnDCxRgTvAs2i0weJx ...

    • ベストアンサー
    • Perl
  • 文字化けメールについて

    こんにちは。 最近、海外の方とメールのやり取りを始めたんですが、 英語だけのメールはちゃんと表示されるのですが、 日本語を加えたメールだと、お互い受信側は文字化けをしているみたいなんです。 (わたしのメールソフトはOutlook Expressです) それぞれのメールのプロパティを見ると、 私からのメールは Content-Type: text/plain; charset=iso-2022-JP または Content-Type: multipart/mixed; boundary="----=_NextPart_000_001E_01C67DBD.095E3E20" 相手からのメールは Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit または Content-Transfer-Encoding: quoted-printableとなっています。 私のほうで調べようと思い、 私のヤフーメール、ホットメール宛てに「エンコード」を 「日本語」「UTF-7」「UTF-8」「西ヨーロッパ言語」などいろいろ変えてメールを送信したところ、 ヤフー、ホットメールともちゃんと表記されるのは「日本語」設定のメールだけでした…。 お互いどういう点を設定しなおしたり、注意すれば、 英語、日本語ともにちゃんと表記されるのでしょうか? アドバイスよろしくお願いします。

  • quoted-printableについて

    メールのデコード処理のプログラムに不具合があるため、調査しています。 問題となっているメールは、 「quoted-printable」でエンコードされています。 また、デコード前の本文は下記のようになっています。 <本文> ********************************** ○○○株式会社    山田太郎    TEL xxx-xxxx-xxxx    FAX xxx-xxxx-xxxx ********************************** 最後の"*"の後には改行はありません。 このメールが「quoted-printable」でエンコードされると **********************************= となり、末尾に"="が付与されます。 「quoted-printable」でエンコードされる場合は、 エンコード後の文字列長を76文字以下にする必要があるため、 "="が付与されることは、調べてわかったのですが、 上記の場合、76文字に満たないため、"="は不要かとおもいますが、 "="が何故付いてしまうのかわかりません。 ヘッダには、 Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable となっているため、「quoted-printable」でエンコードされていると判断しました。 何故エンコード後に"="が付与されてしまうのかを わかる方、いらっしゃいませんでしょうか? 駄文で、申し訳ありませんが、よろしくお願いいたします。