Subject: RE: MIssing text with GetFormattedText
This is the code (on Scheduled agent):
...declaration........
Set s = New NotesSession
........
If DocTme.TMEMime(0) = "1" Then 'DocTme is document Profile
ConvertToMime = True
Else
ConvertToMime = False
End If
Call ConvertiBody(DocMail, ConvertToMime) 'I've Tried to REM this code , but it doesn't work.
'Raccoglie il body della mail in arrivo
Set BodyItem = doc.GetFirstItem( "Body" )
TestoCompleto = BodyItem.GetFormattedText( False, 200 ) 'this looses spaces
Call CreaFileDaTesto(DirectoryDiLavoroTmp,DirectoryDiLavoroTmp + SepDir + "File." + EstensioneFile , TestoCompleto , "Allegato.txt", Mittente, SepDir, EstensioneFile)
Function CreaFileDaTesto(DirectoryDiLavoroTmp As String,NomeFile As String,TestoFile As String,NomeAllegati As String, Mittente As String,SepDir As String, EstensioneFile As String ) As Integer
NumeroFile = Freefile()
Open NomeFile For Output As NumeroFile 'Charset = "Windows-1252"
On Error Goto ErroreNumeroFile
Print #NumeroFile , TestoFile
Close #NumeroFile
exit function
Sub ConvertiBody(MailDoc As NotesDocument, ConvertToMime As Integer )
'Se la mail è di tipo MIME, la converte in rich text ' If mail is Mime , Convert to RichtText (for avoid crash of server)
'Utilizzata per mail di solo tipo testo
Dim s As New NotesSession
Dim BodyDocArrivato As NotesItem
Dim BodyNewDoc As NotesRichTextItem
Dim TestoBody As String
Dim mime As NotesMIMEEntity
If ConvertToMime Then
s.convertMime = True
Else
s.convertMime = False
End If
On Error Goto ErroreGenerale
Set BodyDocArrivato = MailDoc.GetFirstItem("Body")
If BodyDocArrivato.Type = MIME_PART Then 'enr
Set mime = BodyDocArrivato.GetMimeEntity
TestoBody = mime.ContentAsText
Set BodyNewDoc = New NotesRichTextItem(MailDoc,"BodyTmp")
Call BodyNewDoc.AppendText(TestoBody)
Call MailDoc.RemoveItem("Body")
Call MailDoc.CopyItem(BodyNewDoc,"Body")
Call MailDoc.RemoveItem("BodyTmp")
Call MailDoc.save(True,False)
Else
Print "Non è un documento di tipo MIME" 'The mail isn't Mime Format
End If
Exit Sub
ErroreGenerale:
Print "Routine: ConvertiBody " + "Errore alla linea: " + Cstr(Erl()) + " " + "numero: "+ Cstr(Err) + " " + "Tipo: " + Error$
Resume fine
fine:
Print "Non è stato possibile ricavare il testo della mail"
End Sub
and a simple action on view (in Java) doesn’t work :
import lotus.domino.*;
import java.io.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
// (Your code goes here)
Database dbThis = agentContext.getCurrentDatabase();
DocumentCollection docs = agentContext.getUnprocessedDocuments();
Document note = docs.getFirstDocument();
RichTextItem rtBody = (RichTextItem)(note.getFirstItem("Body"));
BufferedInputStream bis = new BufferedInputStream(rtBody.getInputStream());
int c = 0;
while ((c = bis.read()) != -1) {
System.out.println(c);
//System.out.print(".");
}
} catch(Exception e) {
e.printStackTrace();
}
}
}