Hi,
i’m writting concerning a problem I have regarding Mime Entity. I’ve developped a newsletter program with Lotus Notes, managing Mailing List, subscription… but I do encounter a problem when I want to include attachments.
The problem I encounter:
-If I don't include any attachment (Me.IncludeAttachments()), I receive the newsletter correctly formated with my text and html part. I'm able to read it from gmail / hotmail.... If I include the attachment part, the previous part never get displayed. I've certainly missed something but I'm not able to find a solution and the various search on the net didn't provide me any valuable solution.
I’ve joined part of the code to my email.
Thank you in advance for your help.
Feel free to contact me directly.
here is an abstract of the code being used:
Public Sub SendEmail()
Set m_Se = New NotesSession
Set m_Newsletter = myNewsletter
Set m_NewsletterDoc = m_Newsletter.getNewsletterDoc()
Set m_DistributionListDoc = m_Newsletter.getDistributionListDoc()
Set m_Db = m_Env.getCurrentDatabase()
Set m_Recipient = myRecipient
Set m_PixNews = m_db.CreateDocument
m_PixNews.Form = "Memo"
m_PixNews.pGen_Newsletter_Ref = m_NewsletterDoc.pGen_Newsletter_Ref
m_PixNews.pGen_Memo_Status = "To be Sent"
Set m_Body = m_PixNews.CreateMIMEEntity
Set header = m_Body.CreateHeader({MIME-Version})
Call header.SetHeaderVal("1.0")
Set header = m_Body.CreateHeader("Content-Type")
Call header.SetHeaderValAndParams( {multipart/alternative;boundary="=NextPart_="} )
Set Header = m_Body.CreateHeader("Subject")
Call Header.SetHeaderVal(m_NewsletterDoc.pGen_Newsletter_Subject(0))
Set Header = m_Body.CreateHeader("To")
Call header.SetHeaderVal(m_Recipient.getemail())
Set Header = m_Body.CreateHeader("Reply-To")
Call Header.SetHeaderVal(m_NewsletterDoc.pGen_Newsletter_ReplyTo(0))
Set Header = m_Body.CreateHeader("From")
Call Header.SetHeaderVal(m_NewsletterDoc.pGen_Newsletter_From(0))
Set Header = m_Body.CreateHeader("INetFrom")
Call Header.SetHeaderVal(m_NewsletterDoc.pGen_Newsletter_From(0))
Set Header = m_Body.CreateHeader("SMTPOriginator")
Call Header.SetHeaderVal(m_NewsletterDoc.pGen_Newsletter_From(0))
Set Header = m_Body.CreateHeader("DisplaySent")
Call Header.SetHeaderVal(m_NewsletterDoc.pGen_Newsletter_From(0))
Set Header = m_Body.CreateHeader("Sender")
Call Header.SetHeaderVal(m_NewsletterDoc.pGen_Newsletter_From(0))
'Send the plain text part first
Set m_mc = m_Body.createChildEntity()
Call m_mc.SetContentFromText(Me.getEmailBody("text"), {text/plain;charset="iso-8859-1"} , ENC_NONE) 'This retrieves the body in plain text
'Now send the HTML part. Order is important!
Set m_mc = m_Body.createChildEntity()
Call m_mc.SetContentFromText(Me.getEmailBody("html"), {text/html;charset="iso-8859-1"} , ENC_NONE) ''This retrieves the body in html
’ Call Me.IncludeAttachments()
Call m_PixNews.CloseMIMEEntities(True, "Body")
End Sub
Public Sub IncludeAttachments()
On Error Goto ErrorHandler
Dim Stream As NotesStream
NEWS_DIRECTORY = "C:\PixTmp\"
If Left$(Lcase(m_Se.Platform), 3) = "win" Then
If Dir$(NEWS_DIRECTORY,16) = "" Then Mkdir NEWS_DIRECTORY
Else
' sigpath = NEWS_DIRECTORY & "/" & HTML_FILENAME
End If
Forall item In m_NewsletterDoc.Items
If item.Type = ATTACHMENT Then
Set obj = m_NewsletterDoc.GetAttachment(item.Values(0))
If Left$(Lcase(M_Se.Platform), 3) = "win" Then
Call obj.ExtractFile(NEWS_DIRECTORY & "\" &item.Values(0))
Else
Call obj.ExtractFile(NEWS_DIRECTORY & "/" &item.Values(0))
End If
Set m_mc = m_Body.createChildEntity()
Set m_header = m_Body.CreateHeader("Content-Disposition")
' Call m_header.SetHeaderValAndParams(|attachment; filename="| & item.Values(0) &|"|)
' application entity, encoding type ENC_IDENTITY_BINARY
Set Stream= m_Se.CreateStream
Call Stream.Open( NEWS_DIRECTORY & "\" &item.Values(0) , "binary" )
Call m_mc.SetContentFromBytes( stream, "application/octet-stream", ENC_BINARY )
Call m_mc.EncodeContent(ENC_BASE64) ' create another MIME part for the attachment. (repeat as needed)
End If
End Forall
Exit Sub
ErrorHandler:
’ Call m_env.createLog(4,“pInv_objects”, Typename(Me) & “:” & Getthreadinfo(1) & ": Error " & Err() & “: " & Error() & " Line :” & Erl())
Error Str(Err), Error
Exit Sub
End Sub