Gets an array of the attachments of the email message.
[Visual Basic 6.0] Public Property Get Attachments() As Variant
[Visual C++] public: get_Attachments(VARIANT* pVal);
Property Value
Example
[Visual Basic 6.0, VBScript, Visual C++] To get the full samples of EAGetMail, please refer to Samples section.
[Visual Basic 6.0]
Private Sub ParseAttachment()
On Error GoTo ErrorHandle
Dim oMail As New EAGetMailObjLib.Mail
Dim oTools As New EAGetMailObjLib.Tools
oMail.LicenseCode = "TryIt"
oMail.LoadFile "c:\test.eml", False
Dim tempFolder As String
tempFolder = "c:\temp"
Dim i, Count
Dim atts
atts = oMail.Attachments
i = LBound(atts)
Count = UBound(atts)
If (Count >= i) Then
If Not oTools.ExistFile(tempFolder) Then
oTools.CreateFolder (tempFolder)
End If
For i = LBound(atts) To Count
Dim att As Attachment
Set att = atts(i)
'this attachment is in OUTLOOK RTF format, decode it here.
If LCase(att.Name) = "winmail.dat" Then
Dim tatts
tatts = oMail.ParseTNEF(att.Content, True)
For x = LBound(tatts) To UBound(tatts)
Dim tatt As Attachment
Set tatt = tatts(x)
Dim tattname As String
tattname = tempFolder & "\" & tatt.Name
tatt.SaveAs tattname, True
Next
Else
Dim attname
attname = tempFolder & "\" & att.Name
att.SaveAs attname, True
End If
Next
End If
Exit Sub
ErrorHandle:
MsgBox Err.Description
End Sub
[VBScript]
Sub ParseAttachment()
Dim oMail
Set oMail = CreateObject("EAGetMailObj.Mail")
Dim oTools
Set oTools = CreateObject("EAGetMailObj.Tools")
oMail.LicenseCode = "TryIt"
oMail.LoadFile "c:\test.eml", False
Dim tempFolder
tempFolder = "c:\temp"
Dim i, Count
Dim atts
atts = oMail.Attachments
i = LBound(atts)
Count = UBound(atts)
If (Count >= i) Then
If Not oTools.ExistFile(tempFolder) Then
oTools.CreateFolder (tempFolder)
End If
For i = LBound(atts) To Count
Dim att
Set att = atts(i)
'this attachment is in OUTLOOK RTF format, decode it here.
If LCase(att.Name) = "winmail.dat" Then
Dim tatts
tatts = oMail.ParseTNEF(att.Content, True)
For x = LBound(tatts) To UBound(tatts)
Dim tatt
Set tatt = tatts(x)
Dim tattname As String
tattname = tempFolder & "\" & tatt.Name
tatt.SaveAs tattname, True
Next
Else
Dim attname
attname = tempFolder & "\" & att.Name
att.SaveAs attname, True
End If
Next
End If
End Sub
[Visual C++]
//if you do not use MFC, please add this line to support CString type.
#include <atlstr.h>
#include "eagetmailobj.tlh"
using namespace EAGetMailObjLib;
void ParseAttachment()
{
IMailPtr oMail = NULL;
CString tempFolder = _T("c:\\temp");
try
{
oMail.CreateInstance("EAGetMailObj.Mail");
oMail->LicenseCode = _T("TryIt");
oMail->LoadFile( _T("c:\\test.eml"), VARIANT_FALSE );
LONG UBound = 0, LBound = 0;
_variant_t atts = oMail->Attachments;
SAFEARRAY *psa = atts.parray;
SafeArrayGetLBound( psa, 1, &LBound );
SafeArrayGetUBound( psa, 1, &UBound );
INT count = UBound-LBound+1;
::CreateDirectory( tempFolder.GetString(), NULL );
for( long i = LBound; i <= UBound; i++ )
{
_variant_t vtAtt;
SafeArrayGetElement( psa, &i, &vtAtt );
IAttachmentPtr pAtt;
vtAtt.pdispVal->QueryInterface( __uuidof(IAttachment), (void**)&pAtt);
CString name = (TCHAR*)pAtt->Name;
//this attachment is in OUTLOOK RTF format, decode it here.
if( name.CompareNoCase( _T("winmail.dat")) == 0 )
{
//this attachment is in OUTLOOK RTF format, decode it here.
_variant_t tatts;
try
{
tatts = oMail->ParseTNEF( pAtt->Content, VARIANT_TRUE );
}
catch(_com_error &ep )
{
MessageBox( NULL, (TCHAR*)ep.Description(), NULL, MB_OK );
continue;
}
long XLBound = 0, XUBound = 0;
SAFEARRAY* tpsa = tatts.parray;
SafeArrayGetLBound( tpsa, 1, &XLBound );
SafeArrayGetUBound( tpsa, 1, &XUBound );
for( long x = XLBound; x <= XUBound; x++ )
{
_variant_t vttAtt;
SafeArrayGetElement( tpsa, &x, &vttAtt );
IAttachmentPtr ptAtt;
vttAtt.pdispVal->QueryInterface(__uuidof(IAttachment), (void**)&ptAtt);
CString tattname = tempFolder;
tattname.Append( _T("\\"));
tattname.Append((TCHAR*)ptAtt->Name );
ptAtt->SaveAs( tattname.GetString(), VARIANT_TRUE );
}
continue;
}
CString attname = tempFolder;
attname.Append(_T("\\"));
attname.Append((TCHAR*)pAtt->Name);
pAtt->SaveAs( attname.GetString(), VARIANT_TRUE );
}
}
catch( _com_error &ep )
{
MessageBox( NULL, (TCHAR*)ep.Description(), _T("Error"), MB_OK );
}
}