I have a mail-in database that receives e-mail with attachments. We need these attachments automatically saved...
to a network drive. I've found some code that will detach the file and save it to the network and document where it saved it to, but this only works when run from the client manually. I need an agent that will run on the server either on all new documents that will detach the file to the network drive.
Here's the code I've used to do it manually. How can this be tweaked to run from the server on a scheduled basis? If I use the code as is, in an agent set to run on a schedule, it does not run.
Sub Initialize Dim session As New NotesSession Dim db As NotesDatabase Dim doc As NotesDocument Dim dc As NotesDocumentCollection Dim rtitem As Variant Dim attachname As String Dim filename As String Dim body As NotesRichTextItem Dim emphasize As NotesRichTextStyle Set db = session.CurrentDatabase Set dc = db.UnprocessedDocuments Set doc = dc.GetFirstDocument Set rtitem = doc.GetFirstItem( "Body" ) If ( rtitem.Type = RICHTEXT ) Then Forall obj In rtitem.EmbeddedObjects If ( obj.Type = EMBED_ATTACHMENT ) Then Set emphasize = session.CreateRichTextStyle emphasize.Bold = True emphasize.NotesColor = COLOR_RED Set body = doc.GetFirstItem("Body") Call rtitem.AddNewLine( 2 ) Call body.AppendStyle(emphasize) attachname = obj.source Call obj.ExtractFile ( "\\ QDSWJDE1AMstarUnProcessed\" & attachname ) Call rtitem.AddNewLine( 2 ) Call rtitem.AppendText(( "Your file was downloaded to\ \QDSWJDE1AMstarUnProcessed as filename: " ) & attachname) Call doc.Save( False, True ) End If End Forall End If End Sub
This same code should work on the server (provided the filepath you specify is a valid path for the server -- I'm guessing this is a Windows server). You forgot to mention in what way this agent fails, but I assume that you're getting a "Not authorized to perform this operation" message.
Writing to the file system is a "restricted" operation, and for your agent to be able to do it, two things must be true. First, the ID that signed the agent must have access to run restricted agents. This is set in security tab of the server configuration document in the server's names.nsf. Second, the agent properties must have a "runtime security level" set to 2 or 3 -- the default is 1, which does not allow restricted functions.
One other consideration: it may be necessary to map the drive on the server so that you can specify the path using a drive letter (or, more generally for other server platforms, as a filepath that appears to be local).
Do you have comments on this Ask the Expert question and response? Let us know.
Dig Deeper on Lotus Notes Domino Agents
Related Q&A from Andre Guirard
Learn how you can use LotusScript and OLE to create and populate Microsoft Excel spreadsheets, as well as a little bit about Lotus Symphony. Continue Reading
Discover options you can use if you'd like external users to be able to access a workflow-based Notes Domino application through different ... Continue Reading
When Notes/Domino developers say they want to "update the fields" in tha Lotus Notes view, they usually mean that they want to cause computed fields ... Continue Reading