Notes MIME

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