0

EML ファイルを読み取り、Lotus Notes NSF ファイルに追加する CPP COM dll を作成しました。MIMEContent を使用してメールを作成しますが、ドキュメントをフォルダー ビュー $Inbox に追加すると、同じメールが $Sent アイテム フォルダーにコピーされます。

私はchilkatメールを介してemlをmime文字列として読み取り、メモ文書に追加しています

MIMEStreamWrite(( unsigned char*)ch_mimeContent,strlen(ch_mimeContent),hMIMEStream); 
if ( error == MIME_STREAM_IO )
 { printf("MIMEStreamPutLine error.\n"); 
MIMEStreamClose(hMIMEStream); return ; } 
// itemize the mime stream to the note error = MIMEStreamItemize( handle,NULL, 0, MIME_STREAM_ITEMIZE_FULL,hMIMEStream); –

私に与えられた解決策は、配達日を設定することでした

SYSTEMTIME sysdate;

char   dateFormat[100];
 TIMEDATE    start_time;                   
char        timetext[MAXALPHATIMEDATE+1];   
char        far *text_pointer;
email.get_LocalDate(sysdate);
sprintf(dateFormat,"%02d/%02d/%04d %d:%d:%d",
        //      // sysdate.wMonth, sysdate.wDay, sysdate.wYear,sysdate.wHour,sysdate.wMinute,sysdate.wSecond);
strcpy (timetext, dateFormat);
text_pointer = timetext
STATUS STATUS;
if(STATUS  error2 =     ConvertTextToTIMEDATE(NULL,NULL,
                                                      &text_pointer,
                                                      MAXALPHATIMEDATE,
                                                      &start_time))

if(Status= MailAddHeaderItem(handle, MAIL_DELIVEREDDATE_ITEM_NUM, (char *)(&start_time), (WORD)sizeof(TIMEDATE)))
MIMEStreamClose(hMIMEStream);       
newdoc.Save();

問題は、このコードを「English us」のロケールで実行すると問題なく動作することです。しかし、他のロケール (ドイツ) では、ロータス ノートの日付が 17.06 であると失敗します。** **: ;

私も試してみました

LNITEM date;
getitem("Posted date",&date);
and the set the delivery date CreateItem("Delivered Date",&date)

しかし、nsf にファイルが見つかりませんでした。

配達日を設定するコードに何か問題がありますか。または私が試すべき他の代替手段

4

1 に答える 1

0

まず、DeliveredDate を設定するソリューションは正しいです。

ローカリゼーションの問題については、C-API ドキュメントを参照してください。NULL にした ConvertTextToTIMEDATE の最初のパラメーターは、有効な国際化設定を含む構造体へのポインターです。

ドイツ語のロケールは、使用している「月/日/年」の構文を理解しないため (ヨーロッパでは通常、より適切な day.month.year または year.month.day 構文を使用します;)、ConvertTextToTIMEDATE は、お気付きのように失敗します。

ロケールに従って dateFormat 文字列を作成するか、ConvertTextToTIMEDATE に US ロケールを使用するように指示する必要があります。

于 2012-07-22T12:34:31.793 に答える