0

私はInterop.Domino.dllを使用して、Lotus の「データベース」(大まかに使用される用語) から電子メールを取得しています。特定のフィールドを取得するのに苦労しており、これを適切に行う方法を考えています。NotesDocument.GetFirstItemSubject、From、および Body を取得するために使用しています。

したがって、この点に関する私の問題は次のとおりです。

  1. 返信先アドレスを取得するにはどうすればよいですか? どこかで入手できる「アイテム」のリストはありますか? 見つからない。
  2. From アドレスと Reply-To アドレスのわかりやすい名前を取得するにはどうすればよいですか?
  3. この方法で Body を取得すると、メッセージ本文全体に角かっこ ([]) がランダムに散りばめられた奇妙にフォーマットされ、テキストの一部が予期した場所にありません。

関連コード:

string 
  ActualSubject = nDoc.GetFirstItem("Subject").Text,
  ActualFrom = nDoc.GetFirstItem("From").Text,
  ActualBody = nDoc.GetFirstItem("Body").Text;
4

3 に答える 3

2

ハッ、わかった!

Object[] ni = (Object[])nDoc.Items;
string names_values = "";
for (int x = 0; x < ni.Length; x++)
{
NotesItem item = (NotesItem)ni[x];
if (!string.IsNullOrEmpty(item.Name)) names_values += x.ToString() + ": " + item.Name + "\t\t" + item.Text + "\r\n";
}

これにより、インデックス、名前、および値のリストが返されました。

0: Received     from example.com ([192.168.0.1])          by host.example.com (Lotus Domino Release 6.5.4 HF182)          with ESMTP id 2008111917343129-205078 ;          Wed, 19 Nov 2008 17:34:31 -0500
1: Received     from example.com ([192.168.0.2])          by host2.example.com (Lotus Domino Release 6.5.4 HF182)          with ESMTP id 2008111917343129-205078 ;          Wed, 19 Nov 2008 17:34:31 -0500
2: X_PGRTRKID       130057945714t
3: X_PGRSRC     IE
4: ReplyTo      "example" <name@email.example.com>
5: Principal        "example" <customerservice@email.example.com>
6: From         "IE130057945714t"<service@test.email.example.com>
7: SendTo       me@example.com
8: Subject      (Message subject redacted)
9: PostedDate       11/19/2008 03:34:15 PM
10: MIME_Version        1.0
11: $Mailer     SMTP DirectMail
12: $MIMETrack      Itemize by SMTP Server on xxxPT02-CORP/example(Release 6.5.4 HF182|May 31, 2005) at 11/19/2008 05:34:31 PM;Serialize by Router on xxxPT02-CORP/example(Release 6.5.4 HF182|May 31, 2005) at 11/19/2008 05:34:32 PM;Serialize complete at 11/19/2008 05:34:32 PM;MIME-CD by Router on xxxPT02-CORP/example(Release 6.5.4 HF182|May 31, 2005) at 11/19/2008 05:34:32 PM;MIME-CD complete at 11/19/2008 05:34:32 PM;Itemize by Router on camp-db-05/example(Release 7.0.2 HF76|November 03, 2006) at 11/19/2008 05:34:32 PM;MIME-CD by Notes Client on MyName/Guest/example(Release 6.5.6|March 06, 2007) at 11/20/2008 12:46:25 PM;MIME-CD complete at 11/20/2008 12:46:25 PM
13: Form        Memo
14: $UpdatedBy      ;CN=xxxPT02-CORP/O=example
15: $ExportHeadersConverted     1
16: $MessageID      <redacted@LocalDomain>
17: RouteServers        CN=xxxPT02-CORP/O=example;CN=camp-db-05/O=example
18: RouteTimes      11/19/2008 03:34:31 PM-11/19/2008 03:34:32 PM;11/19/2008 03:34:32 PM-11/19/2008 03:34:32 PM
19: $Orig       958F2E4E4B666AB585257506007C02A7
20: Categories      
21: $Revisions      
22: DeliveredDate       11/19/2008 03:34:32 PM
23: Body        []exampleexample

では、体がめちゃくちゃになる理由を誰が教えてくれますか?

于 2008-11-20T19:55:10.517 に答える
1

Body アイテムは NotesRichTextItem であり、通常の NotesItem ではありません。これらは、Lotus Notes の世界では異なるタイプのオブジェクトです (多くの場合、多くの開発者のフラストレーションの原因となります!)。

COM を使用して Domino に接続した経験はあまりなく、アクセスできるものに違いがあることはわかっていますが、Domino Designer ヘルプには、NotesRichTextItem などのクラスに関する多くの情報が記載されています。

おそらく、アイテムの Text プロパティにアクセスするよりも、「GetFormattedText」メソッドの方がうまく機能するでしょう。

メソッドの例を次に示します (Domino Designer ヘルプから引用)。

Dim doc As NotesDocument
Dim rtitem As Variant
Dim plainText As String
Dim fileNum As Integer
'...set value of doc...
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
  plainText = rtitem.GetFormattedText( False, 0 )
End If
' get a file number for the file
fileNum = Freefile
' open the file for writing
Open "c:\plane.txt" For Output As fileNum
' write the formatted text to the file
Print #fileNum, plainText
' close the file
Close #fileNum
于 2008-11-20T20:10:18.067 に答える
0

環境の設定によっては機能しない場合がありますが、ドミノでメールを処理する最も簡単な方法は、メールを MIME のままにして、NotesMIMEEntity と NotesMIMEHeader を介して値を取得することです。これは、メールがネイティブの Notes ではなく Web から受信され、環境がメールを MIME 形式で保存するように設定されている場合にのみ機能します。

それ以外の場合は、本文に NotesRichTextItem としてアクセスする必要があります。そのアイテムから、必要に応じてリッチ テキスト構造内を移動できる NotesRichTextNavigator を取得する必要があります。

構造が比較的単純であると思われる場合は、NotesRichTextItem.GetFormattedText() を呼び出してみてください。それでも問題が解決しない場合は、サンプル ドキュメントで遊んで、NotesRichTextNavigator の構造がどのように見えるかを確認して、何が起こっているのかを理解する必要があります。

于 2008-11-21T13:44:22.107 に答える