邮件是Lotus Notes体系的核心和基本功能,以至于Send()是NotesDocument的一个方法,任何一个文档都可以被发送出去,Notes里的一封邮件也只是一个有一些特殊字段的文档。在程序开发中,发邮件的功能也被广泛和高度使用。Notes中发邮件的功能可以被开发到很精致和复杂的程度,适应几乎所有的需求。笔者准备分几篇文章讨论这些功能。

首先是最简单的在LotusScript中发送邮件,包括传统的客户端和Html邮件。给出用户、主题和内容,发送邮件,这是最典型的需求,自然也应该被写成函数。

下面这个函数的参数分别为收件人、抄送给、盲送给、主题、正文和附上的链接文档(如果没有则传入Nothing)。各个收件人参数的数据类型与文本型字段所能接受的一样,即字符串或字符串数组。

  1. Public Sub CC(sendto As Variant,CopyTo As Variant,BlindCopyTo As Variant,subject As String,body As String,linkdoc As Variant)
  2. Dim s As New NotesSession
  3. Dim db As NotesDatabase
  4. Set db=s.CurrentDatabase
  5. Dim mailDoc As New NotesDocument(db)
  6. With mailDoc
  7. Call .ReplaceItemValue("Form", "memo")
  8. Call .ReplaceItemValue("SendTo",sendto)
  9. Call .ReplaceItemValue("CopyTo", CopyTo)
  10. Call .ReplaceItemValue("BlindCopyTo", BlindCopyTo)
  11. Call .ReplaceItemValue("Subject",subject)
  12. End With
  13. Dim rtItem As New NotesRichTextItem(mailDoc,"Body")
  14. Call rtItem.AppendText(body)
  15. If Not linkdoc Is Nothing Then
  16. Call rtItem.AppendDocLink(linkdoc,"click the link")
  17. End If
  18.  
  19. Call mailDoc.Send(False)
  20. Dim msg As String
  21. If IsArray(sendto) Then
  22. msg=Join(sendto)
  23. Else
  24. msg=sendto
  25. End If
  26. Print "sent mail to " & msg
  27. End Sub

因为LotusScript的函数不支持重载,下面这个函数接受更常见的收件人、主题、正文和附加的链接文档作为参数,调用起来省去两个参数更方便。

  1. Public Sub SendMail(sendto As Variant,subject As String,body As String,linkdoc As Variant)
  2. Call CC(sendto, "", "", subject, body, linkdoc)
  3. End Sub

下面这个函数发送一封Html邮件,参数分别为收件人、抄送给、盲送给、主题和Html的正文。

  1. Public Function CCHTMLMail(sendTo As Variant, copyTo As Variant, blindCopyTo As Variant, subject As String, html As String)
  2. Dim s As New NotesSession
  3. s.ConvertMIME=False
  4. Dim db As NotesDatabase
  5. Set db=s.Currentdatabase
  6. Dim memo As NotesDocument
  7. Set memo=db.Createdocument()
  8. Call memo.appendItemValue("Form", "Memo")
  9. Call memo.replaceItemValue("SendTo", sendTo)
  10. Call memo.Replaceitemvalue("CopyTo", copyTo)
  11. Call memo.Replaceitemvalue("BlindCopyTo", blindCopyTo)
  12. Call memo.replaceItemValue("Subject", subject)
  13.  
  14. Dim stream As NotesStream
  15. Set stream=s.CreateStream()
  16. Call stream.writeText(html)
  17. Dim entity As NotesMIMEEntity
  18. Set entity=memo.createMIMEEntity("Body")
  19. Call entity.setContentFromText(stream,"text/html;charset=UTF-8", 1725)
  20. Call stream.close()
  21. Call memo.Send(False)
  22. s.ConvertMIME=True
  23. End Function

最后这个函数同样省去了抄送给和盲送给两个参数,发送一封Html邮件。

  1. Public Function SendHTMLMail(sendTo As Variant, subject As String, html As String)
  2. Call CCHTMLMail(sendTo, "", "", subject, html)
  3. End Function

46. Lotus Notes中编程发送邮件(一)的更多相关文章

  1. Lotus Notes中编程发送邮件(二)

    在编程发送各种类似通知的邮件时,时常会需要发件人显示为某个特定的帐户,比如某个部门的名称或者管理员的名字.另一种需求是,用户收到某封邮件后,回复邮件的地址不同于发件人栏显示的地址.而正常情况下,发送邮 ...

  2. Lotus开发之Lotus Notes中域的验证

    一:介绍       Lotus中的域主要有以下的类型:文本,日期/时间,对话框列表,复选框,单选按钮,RTF等等.Lotus中域的验证方式有很多种公式,lotusscript,javascript等 ...

  3. C# 使用 Lotus notes 公共邮箱发送邮件

    公司的邮件系统用的是反人类的 Lotus notes, 你敢信? 最近要实现一个功能,邮件提醒功能,就是通过自动发送提醒邮件 前前后后这个问题搞了2天,由于公司的诸多条件限制,无法直接调用到公司发送邮 ...

  4. Lotus Notes 学习笔记

    这是一个学习关于如何使用Lotus Notes的Agent功能来实现自动化办公的学习笔记. 一. 介绍 Lotus Notes/Domino 是一个世界领先的企业级通讯.协同工作及Internet/I ...

  5. 52. 模版和设计元素——Lotus Notes的代码重用

    不论是理论上还是实用上,代码重用都是编程的一个重要议题.可以从两个角度来讨论代码重用. 一是逻辑上代码以怎样的方式被重用.既可以通过面向对象的思想普及以来耳熟能详的继承的方式.比如先建了一个车的基类, ...

  6. C# Windows Service调用IBM Lotus Notes发送邮件

    近日研究了下IBM Lotus Mail,这货果然是麻烦,由于公司策略,没有开放smtp,很多系统邮件都没有办法发送,于是入手google学习Lotus Mail,想做成Windows服务,提供wcf ...

  7. 55. 略谈Lotus Notes的与众不同及系列文章至此的总结

    在二十多年的悠久历史里,Lotus Notes发展出一整套独特的概念.技术和思维.由于它早期惊人的领先时代和后续发展中同样惊人的忠于传统,这位软件领域的寿星在如今发展更新速度远超往日和技术愈趋公开互通 ...

  8. 46. Spring Boot中使用AOP统一处理Web请求日志

    在之前一系列的文章中都是提供了全部的代码,在之后的文章中就提供核心的代码进行讲解.有什么问题大家可以给我留言或者加我QQ,进行咨询. AOP为Aspect Oriented Programming的缩 ...

  9. 使用LotusScript操作Lotus Notes RTF域

    Lotus Notes RTF域的功能也非常强大,除了支持普通的文本以外,还支持图片.表格.嵌入对象.Http 链接.Notes 链接.附件等等众多的类型.本文将介绍如何使用这些类来灵活操作富文本域. ...

随机推荐

  1. OO真经——关于面向对象的哲学体系及科学体系的探讨(下)

    真经第六章——运作 Moving “运动是绝对的——牛顿” 6.1.导言 在前五章中,我们从世界观的这话题开始,逐步引出了抽象.层次.继承和耦合.这些内容,形成了对象论中关于世界的结构体系.      ...

  2. jquery的$().each,$.each

    在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法.两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点. $().each,对于这个方法,在d ...

  3. jQuery实时获取checkbox状态问题

    在最近的项目开发中,使用jQuery操作checkbox时,发现一个问题. Html代码如下: <body> <div> <inputtype="checkbo ...

  4. No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=armv7 armv7s)

    In Build Settings are: Architectures: Starndard (armv7, armv7s) Base SDK: Latest iOS (iOS 6.0) Build ...

  5. 用1个 2个3个 5个div实现 十字架

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 终于懂了:两个UI组件同时在操作是不可能实现的

    // 目的:从某个对话框里,选择一些路径,然后用Tree自动展开这些路径,但至少需要几秒钟时间 // 问题:在这几秒钟期间,显示一个等待对话框,只能开多线程,因为后台继续要处理tree的一些事情.等待 ...

  7. Oracle 生成指定范围内随机日期

    Oracle生成一个指定范围内的随机日期 /* 年1月1日)的整数偏移量来保存(即把日期保存为一个数字); * 因此可通过寻找‘指定日期’与‘关键日期’相对应的整数偏移量,再加一个指定范围内的随机整数 ...

  8. 第三章 用 PowerShell 进行远程管理(remoting)

    第三章 用 PowerShell 进行远程管理(remoting) PowerShell V2 引进了一项强大的新技术,远程(remoting),PowerShell V3 进行了完善和扩展.主要基于 ...

  9. Android Develop【转】

    [Android Develop]   Android实现伸缩弹力分布菜单效果 摘要: 本文介绍下在Android中实现伸缩弹力分布菜单效果.关于这种菜单效果在IPhone中比较常见,效果比较酷.那么 ...

  10. zoj 1083 Frame Stacking

    其实就是一个拓补排序.(动态记录第i个之上的j存不存在,反过来就是第j个之下的i) 首先确立每个框的位置(题目明确说了每一边都不会被完全覆盖)./*可以通过搜索,搜索到该框的所有四个角*/||如果题目 ...