`

Notes邮件HTML/MIME发送

阅读更多

Notes邮件显然是支持HTML/MIME的了。在Notes客户端RTF域里面写的邮件无论是文本、图片还是附件都能直接转为MIME发送出去,在Web下写在HTML编辑器里面的东西也能转成MIME的发出去。如何在程序里面发送HTML/MIME邮件呢?其实也很简单,就是用到 Domino的两个类:NotesMimeEntity和NotesMimeHeader就足够了。 

1、发送HTML文本含图片 

Java代码  收藏代码
  1. Sub SendMIMEMail  
  2. On Error Goto ErrorHandler  
  3.   
  4. sImage$ = “seal.jpg”  
  5.   
  6. sHtml$ = {  
  7. <table border=”0″ cellpadding=”0″ cellspacing=”0″ width=”700″ align=”center”>  
  8. <tr>  
  9. <td><img src=”cid:} + sImage$ + {“></td>  
  10. </tr>  
  11. </table>  
  12. }  
  13.   
  14. session.ConvertMIME = False  
  15.   
  16. Dim doc As NotesDocument  
  17. Set doc = curDb.CreateDocument  
  18.   
  19. Call doc.ReplaceItemValue(“Form”, “Memo”)  
  20. Call doc.ReplaceItemValue(“Principal”, “xxx@163.com“)  
  21.   
  22. Dim body As NotesMimeEntity  
  23. Dim header As NotesMimeHeader  
  24.   
  25. Set body = doc.CreateMIMEEntity(“body”)  
  26.   
  27. Set header = body.CreateHeader(“Content-Type”)  
  28. Call header.SetHeaderVal(“multipart/related”)  
  29.   
  30. Set header = body.CreateHeader(“Subject”)  
  31. Call header.SetHeaderVal(“MIME TEST!!!!”)  
  32.   
  33. Set header = body.CreateHeader(“To”)  
  34. Call header.SetHeaderVal(“xxx@gmail.com“)  
  35.   
  36. Dim stream As NotesStream  
  37. Set stream = session.CreateStream  
  38.   
  39. Dim child As NotesMimeEntity  
  40.   
  41. Set child = body.CreateChildEntity  
  42. Call stream.WriteText(sHtml$)  
  43. Call child.SetContentFromText(stream, “text/html;charset=gb2312″, ENC_NONE)  
  44. Call stream.Close()  
  45.   
  46. Set child = body.CreateChildEntity  
  47. Set header = child.CreateHeader(“Content-ID”)  
  48. Call header.SetHeaderVal(sImage$)  
  49. If stream.Open(“C:\” + sImage$) Then  
  50. If stream.Bytes <> 0 Then  
  51. Call child.SetContentFromBytes(stream, {image/jpeg; name=”} + sImage$ + {“}, ENC_IDENTITY_BINARY)  
  52. End If  
  53. End If  
  54. Call stream.Close()  
  55.   
  56. session.ConvertMIME = True  
  57. Call doc.Send(False)  
  58.   
  59. Exit Sub  
  60. ErrorHandler: Call curLog.Debug(1)  
  61. End Sub  



在HTML插入图片的关键是这一句:<img src=”cid:seal.jpg”> 

其中cid:seal.jpg就是后面创建的一个NotesMimeEntity,注意这个NotesMimeEntity加了一个名字是Content-ID值为seal.jpg的NotesMimeHeader。如此这个图片就能在邮件里面显示了。 

2、发送附件 

在Notes编程里面发送附件的方式至少有两种,一种是通过NotesRichTextItem的EmbedObject方法将附件扔到$File 域中,然后发送文档;另一种还是通过上面说得NotesMimeEntity和NotesMimeHeader的方式来发送。这里只说后面一种: 

Java代码  收藏代码
  1. Sub SendMIMEMail  
  2. On Error Goto ErrorHandler  
  3.   
  4. sAttach$ = “struts.txt”  
  5.   
  6. session.ConvertMIME = False  
  7.   
  8. Dim doc As NotesDocument  
  9. Set doc = curDb.CreateDocument  
  10.   
  11. Call doc.ReplaceItemValue(“Form”, “Memo”)  
  12. Call doc.ReplaceItemValue(“Principal”, “xxx@163.com”)  
  13.   
  14. Dim body As NotesMimeEntity  
  15. Dim header As NotesMimeHeader  
  16.   
  17. Set body = doc.CreateMIMEEntity(“body”)  
  18.   
  19. Set header = body.CreateHeader(“Content-Type”)  
  20. Call header.SetHeaderVal(“multipart/related”)  
  21.   
  22. Set header = body.CreateHeader(“Subject”)  
  23. Call header.SetHeaderVal(“MIME TEST!!!!”)  
  24.   
  25. Set header = body.CreateHeader(“To”)  
  26. Call header.SetHeaderVal(“xxx@gmail.com“)  
  27.   
  28. Dim stream As NotesStream  
  29. Set stream = session.CreateStream  
  30.   
  31. Dim child As NotesMimeEntity  
  32.   
  33. Set child = body.CreateChildEntity  
  34. Call stream.WriteText(sHtml$)  
  35. Call child.SetContentFromText(stream, “text/html;charset=gb2312″, ENC_NONE)  
  36. Call stream.Close()  
  37.   
  38. Set child = body.CreateChildEntity  
  39. Set header = child.CreateHeader(“Content-Type”)  
  40. Call header.SetHeaderVal(“multipart/related”)  
  41. Set header = child.CreateHeader(“Content-Disposition”)  
  42. Call header.SetHeaderVal(“attachment; filename=” + sAttach$)  
  43. Set header = child.CreateHeader(“Content-ID”)  
  44. Call header.SetHeaderVal(sAttach$)  
  45. If stream.Open(“C:\” + sAttach$) Then  
  46. If stream.Bytes <> 0 Then  
  47. Call child.SetContentFromBytes(stream, “application/octet-stream” + {“}, ENC_IDENTITY_BINARY)  
  48. End If  
  49. End If  
  50. Call stream.Close()  
  51.   
  52. session.ConvertMIME = True  
  53. Call doc.Send(False)  
  54.   
  55. Exit Sub  
  56. ErrorHandler: Call curLog.Debug(1)  
  57. End Sub  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics