The project of U-WA-
http://uwa.potetihouse.com/
トップページ > 記事閲覧
アイコン 【tkmp】windows-31jのメール本文をデコードした
日時: 2020/03/18 09:46
名前: うし

TKMPを重宝しPowerShellでメール受信させているのですが、
charset="windows-31j" で届いたメール本文をデコードできません。
※charset="iso-2022-jp" と判断されデコードされてしまいます

$body = New-Object TKMP.Reader.MailReader($mail.DataStream, $False)
$body.EncodeCharset = "sjis"  →  効果なし
$body.MainText  →  iso-2022-jpと判断されデコードされている

**********メール本体情報(ここから)**********
Content-Type: text/plain; charset="windows-31j"
Content-Transfer-Encoding: base64
**********メール本体情報(ここまで)**********


非対応キャラクタセットの場合、
添付ファイル名や件名を取り出すとデコードされない文字列
「=?windows-31j?B?xxxxxxxxxxxx?=」
が返ってきたので対応できたのですが、
本文はどのように取り出すのがよいでしょうか?
メンテ

Page: 1 |

ファイル Re: 【tkmp】windows-31jのメール本文をデコードした ( No.1 )
日時: 2020/03/18 17:53
名前: Toki

TKMP.Reader.MailReaderのMainDataプロパティで
デコード前のバイト配列が取り出せると思います
メンテ
ファイル Re: 【tkmp】windows-31jのメール本文をデコードした ( No.2 )
日時: 2020/03/18 19:14
名前: うし

早々にお返事いただきありがとうござます!

$body = New-Object TKMP.Reader.MailReader($mail.DataStream, $False)
$body.MainData  →  (正常にデコードされるメールも含め)何も取得できませんでした

確認すべき点がありましたら教えていただければ助かります。
メンテ
ファイル Re: 【tkmp】windows-31jのメール本文をデコードした ( No.3 )
日時: 2020/03/19 07:11
名前: Toki

MainTextプロパティはMainDataプロパティのデータを元に
デコードしているので何も取得できないことはないと思いますが
可能性があるとしたら
メールがマルチパートになっていて
本文がサブパート中にありませんか?

MainTextプロパティはメール中の最初のテキストパートを取得するので
サブパートのデータをデコードしている可能性があります
メンテ
ファイル Re: 【tkmp】windows-31jのメール本文をデコードした ( No.4 )
日時: 2020/03/19 09:15
名前: うし

以下、MainDataプロパティで本文を取得できないメールです(一部加工)。

======================================
Subject: =?windows-31j?B?WlpagXmBm4GbgZuBm4GbgZuBeoGb?=
=?windows-31j?B?gZuBm4GbgZuBm4GbgZuBm4GbgZuBm4GbgZs=?=
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_Part_00000_00000000.0000000000000"
Date: Fri, 28 Feb 2020 15:00:00 +0900 (JST)

------=_Part_00000_00000000.0000000000000
Content-Type: text/plain; charset="windows-31j"
Content-Transfer-Encoding: base64

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxx
------=_Part_00000_00000000.0000000000000
Content-Type: application/octet-stream;
name="=?windows-31j?B?gZuBm4GbgZuBm4GbgZuBm4GbgZuBm4GbgZs=?=
=?windows-31j?B?gZuBm4GbgZuBm4GbgZuBm4GbgZsyMDIwMDIyODE1MDAwMC5wZGY=?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="=?windows-31j?B?gZuBm4GbgZuBm4GbgZuBm4GbgZuBm4GbgZs=?=
=?windows-31j?B?gZuBm4GbgZuBm4GbgZuBm4GbgZsyMDIwMDIyODE1MDAwMC5wZGY=?="

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
------=_Part_00000_00000000.0000000000000--
======================================

このようなメール本文の取得方法を模索しています。
メンテ
ファイル Re: 【tkmp】windows-31jのメール本文をデコードした ( No.5 )
日時: 2020/03/19 18:17
名前: Toki

$body.FirstTextPart.MainData
で取り出せませんか?

メンテ
ファイル Re: 【tkmp】windows-31jのメール本文をデコードした ( No.6 )
日時: 2020/03/23 11:40
名前: うし

ありがとうございます!
無事メール本文を取得できました。
メンテ

Page: 1 |

題名 スレッドをトップへソート (必ず題名内に日本語を使用してください)
名前
E-Mail
URL
パスワード (記事メンテ時に使用)
コメント 顔smile01.gif 顔smile02.gif 顔smile03.gif 顔smile04.gif 顔smile05.gif 顔smile06.gif 顔smile07.gif

   クッキー保存