Lynchie435
asked on
How can I download attachments using EWS (Exchange Web Services) in VB .NET
Morning All,
I am really hoping somebody can help me here.
I have a mechanism that downloads attachments from email messages sent into an inbox to a folder for processing by another service.
Originally this was done using some VBA that was triggered by a rule in Outlook. This wasn't build with large amounts of information going in originally however it has got to the point now that lots of data is being passed through and it is causing me headaches using this Outlook VBA and SSIS Package combination.
Therefore I am working on a new version built entirely in VB .NET, this obviously will mean its more robust and a lot easier to debug problems.
I have started using the EWS API and have managed to successfully connect to the Exchange and I am able to read the relevant messages and store their Subject etc. to variables.
I am struggling however to find ANY documentation / help regarding downloading of attachements with EWS with VB .NET code.
Everything seems to be in C# and I unfortunately have no experience with this. I am totally open to 3rd Party Solutions that may need to be purchased or even pointed in the right direction of a book or documentation, this is not being done on a shoe string and is quite important.
Any assistance in any way shape or form would be GREATLY appreciated.
Cheers,
James
I am really hoping somebody can help me here.
I have a mechanism that downloads attachments from email messages sent into an inbox to a folder for processing by another service.
Originally this was done using some VBA that was triggered by a rule in Outlook. This wasn't build with large amounts of information going in originally however it has got to the point now that lots of data is being passed through and it is causing me headaches using this Outlook VBA and SSIS Package combination.
Therefore I am working on a new version built entirely in VB .NET, this obviously will mean its more robust and a lot easier to debug problems.
I have started using the EWS API and have managed to successfully connect to the Exchange and I am able to read the relevant messages and store their Subject etc. to variables.
I am struggling however to find ANY documentation / help regarding downloading of attachements with EWS with VB .NET code.
Everything seems to be in C# and I unfortunately have no experience with this. I am totally open to 3rd Party Solutions that may need to be purchased or even pointed in the right direction of a book or documentation, this is not being done on a shoe string and is quite important.
Any assistance in any way shape or form would be GREATLY appreciated.
Cheers,
James
First of all, which version of EWS are you using?
ASKER
Hi Bob,
I am using EWS 2.2.
Regards,
James
I am using EWS 2.2.
Regards,
James
I downloaded the EWSEditor project from CodePlex, so I didn't have to create something from the beginning.
EWSEditor
https://ewseditor.codeplex.com/
It has a form for file attachments, and shows you how to save to file.
EWSEditor
https://ewseditor.codeplex.com/
It has a form for file attachments, and shows you how to save to file.
private void MnuSaveAttach_Click(object sender, EventArgs e)
{
// Don't do anything if a content row is not selected
if (this.ContentsGrid.SelectedRows.Count == 0)
{
return;
}
Attachment attach = this.ContentsGrid.SelectedRows[0].Cells[ColNameAttachmentObj].Value as Attachment;
// If we can't get the attachment object bail out
if (attach == null)
{
return;
}
// Get the file name we'll save to and bail out if we don't succeed
string fileName = this.GetTargetFileName();
if (fileName == string.Empty)
{
return;
}
// If the attachment is a FileAttachment then simply save the content
FileAttachment fileAttach = attach as FileAttachment;
if (fileAttach != null)
{
if (fileAttach.Content == null)
{
ErrorDialog.ShowWarning("Cannot save FileAttachment because FileAttachment.Content is NULL.");
return;
}
try
{
this.Cursor = Cursors.WaitCursor;
System.IO.File.WriteAllBytes(fileName, fileAttach.Content);
}
finally
{
this.Cursor = Cursors.Default;
}
}
else
{
ItemAttachment itemAttachment = attach as ItemAttachment;
if (itemAttachment != null)
{
if (itemAttachment.Item == null)
{
ErrorDialog.ShowWarning("Cannot save ItemAttachment because ItemAttachment.Item is NULL.");
return;
}
try
{
this.Cursor = Cursors.WaitCursor;
EWSEditor.Common.DumpHelper.DumpXML(
itemAttachment.Item,
fileName);
}
finally
{
this.Cursor = Cursors.Default;
}
}
}
}
ASKER
Hi Bob,
I struggle to understand C# and I know that the converters aren't always reliable.
Where did you find that code using the EWSEditor?
Sorry for my late reply, - have been on holiday.
Cheers,
J
I struggle to understand C# and I know that the converters aren't always reliable.
Where did you find that code using the EWSEditor?
Sorry for my late reply, - have been on holiday.
Cheers,
J
Look at the Forms\AttachmentsContentFo rm file.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Bob's persistence put me on the right track - thanks so much!