The project of U-WA-
http://uwa.potetihouse.com/
戻る
TKMP.DLL   プログラミングTips

メールのヘッダをテキストデータとして取り出す

 接続中の場合はTKMP.Net.MailDataクラスでTKMP.Net.MailData.ReadHeaderメソッドを実行した後に、 TKMP.Net.MailData.HeaderStreamプロパティを読み出すことで取り出すことが可能です。
 すでに読み込み済みのストリームから取り出す場合は、独自にコードを作成する必要があります。 ヘッダ部分と本文の間には空白行が必ず存在するので、「CR+LF+CR+LF」を目印にヘッダ部分だけを切り分けます。 次のサンプルでは、メールストリームを一旦文字列に読み直した後、ヘッダ部分までの検索を行なっています。
C#.NET
//メールデータが格納されたストリームからヘッダ部分を取り出す
public string GetHeaderString(System.IO.Stream MailStream)
{
    //ストリームをJISコードで読み込むためのエンコードクラスを準備します
    System.Text.Encoding encode = System.Text.Encoding.GetEncoding("iso-2022-jp");
    //ストリームをテキストデータで読み出します
    System.IO.StreamReader sr = new System.IO.StreamReader(MailStream , encode);

    //メール全文をテキストに読み込みます
    string mailstring = sr.ReadToEnd();
    //ヘッダ部分の最後を検索します
    int headersize = mailstring.IndexOf("\r\n\r\n");
    
    //ヘッダ部分を切り出します
    string header = mailstring.Substring(0 , headersize);

    return header;
}
VB.NET
'メールデータが格納されたストリームからヘッダ部分を取り出す
Public Function GetHeaderString(ByVal MailStream As System.IO.Stream) As String
    'ストリームをJISコードで読み込むためのエンコードクラスを準備します
    Dim encode As System.Text.Encoding = System.Text.Encoding.GetEncoding("iso-2022-jp")
    'ストリームをテキストデータで読み出します
    Dim sr As New System.IO.StreamReader(MailStream, encode)

    'メール全文をテキストに読み込みます
    Dim mailstring As String = sr.ReadToEnd()
    'ヘッダ部分の最後を検索します
    Dim headersize As Integer = mailstring.IndexOf(ControlChars.Cr + ControlChars.Lf + ControlChars.Cr + ControlChars.Lf)

    'ヘッダ部分を切り出します
    Dim header As String = mailstring.Substring(0, headersize)

    Return header
End Function
VB.NETのコードはC#.NETを元に「C#.NET to VB.NET Translator」によって作成したものです

トップページへ移動
The project of U-WA-
http://uwa.potetihouse.com/