`

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  
分享到:
评论

相关推荐

    将IBM notes rich text field 转换成html

    6. **实际应用**:转换后的HTML可以用于Web页面展示、邮件发送、数据导入等场景。例如,可以将其存储在Web服务器的数据库中,或者作为电子邮件的内容发送出去。 在提供的文件"RT2HTML.nsf"中,很可能包含了实现上述...

    C#中利用Lotus notes公共邮箱发送邮件的方法

    首先,需要了解的是,Lotus Notes的公共邮箱可以被多个用户共享,用于发送邮件时,实际上是从Lotus Notes服务器的公共邮箱账户中发起邮件。在C#中,我们通常需要借助COM(Component Object Model)技术来操作Lotus ...

    javamail-1.4.5

    通过使用“javamail-1.4.5”这个组件包,开发者可以快速地在Java项目中构建邮件功能,无论是简单的文本邮件还是复杂的HTML邮件,甚至包含附件和多个部分的MIME邮件,都能轻松应对。同时,这个版本还可能包含了针对...

    六个java源程序.rar_chat_chat java_简单计算器_简单计算器java_邮件 java

    这涵盖了MIME、附件、HTML邮件等内容。 这些源程序为学习者提供了丰富的实践素材,涵盖了网络编程、GUI编程、数据库交互、多线程和邮件服务等多个Java核心领域。通过分析和运行这些代码,不仅可以提升编程技能,还...

    JavaMail 1.5.5 包含说明文档 官网最新

    通过这些API,开发者可以轻松地实现邮件的发送、接收、搜索、删除等功能,还可以处理附件、HTML邮件和MIME格式。同时,JavaMail还提供了对垃圾邮件过滤、国际化和多线程处理的支持。 在实际开发中,JavaMail通常与...

    6个java源代码~

    可能还会涉及到MIME多部分消息(MimeMultipart)用于添加附件或者HTML内容。 6. **简单的聊天室应用程序**: 这可能是一个基于TCP或UDP的多用户聊天室应用。开发者需要实现客户端-服务器架构,使用Socket编程来...

    java-servlet-api.doc

    RFC2047多用途网际邮件扩充协议(MIME)(多用途Internet邮件扩展)第三部分:信息标题扩展用于非ASCII文本 RFC2048多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第四部分:注册步骤 RFC2049多用途Internet邮件...

    CISP培训PPT-7-恶意代码

    特别地, Lotus Notes邮件对象和Word 2000的RTF文件可能因为模板文件链接而成为恶意代码的载体。 系统漏洞的利用是恶意代码得以运行的另一个关键途径。例如, Lotus Notes、Word 2000、Flash以及IE浏览器等都曾有过...

    ZendFramework中文文档

    Notes Regarding Cascading Operations 11. Zend_Debug 11.1. 输出变量的值 (Dumping Variables) 12. Zend_Exception 12.1. 使用“异常” 13. Zend_Feed 13.1. 介绍 13.2. 导入Feeds 13.2.1. 定制 feeds ...

    Bugzilla-Guide.pdf

    - **Whining Cron Job**:定时任务,定期检查未解决的问题并发送提醒邮件。 - **Serving Alternate Formats with the right MIME type**:确保浏览器正确地解释不同的文件格式。 - **多数据库配置**:在单个Bugzilla...

    MapServer帮助文档

    - 设置正确的MIME类型。 6. **Oracle安装**: - 安装Oracle数据库驱动程序。 - 配置MapServer连接Oracle数据库的方法。 #### 五、Mapfile详解 1. **CLASS**: - 用于定义图层中的类别。 - 每个类别可以有多...

    网管教程 从入门到精通软件篇.txt

    EML:Microsoft Outlook Express邮件消息(MIME RTC822)文件 EXE:可执行文件(程序) F FAV:Microsoft Outlook导航条 FAX:传真类型图像 FCD:虚拟CD-ROM FDF:Adobe Acrobat表单文档文件 FLA:Macromedia...

Global site tag (gtag.js) - Google Analytics