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

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

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

Public Sub CC(sendto As Variant,CopyTo As Variant,BlindCopyTo As Variant,subject As String,body As String,linkdoc As Variant)
Dim s As New NotesSession
Dim db As NotesDatabase
Set db=s.CurrentDatabase
Dim mailDoc As New NotesDocument(db)
With mailDoc
Call .ReplaceItemValue("Form", "memo")
Call .ReplaceItemValue("SendTo",sendto)
Call .ReplaceItemValue("CopyTo", CopyTo)
Call .ReplaceItemValue("BlindCopyTo", BlindCopyTo)
Call .ReplaceItemValue("Subject",subject)
End With
Dim rtItem As New NotesRichTextItem(mailDoc,"Body")
Call rtItem.AppendText(body)
If Not linkdoc Is Nothing Then
Call rtItem.AppendDocLink(linkdoc,"click the link")
End If Call mailDoc.Send(False)
Dim msg As String
If IsArray(sendto) Then
msg=Join(sendto)
Else
msg=sendto
End If
Print "sent mail to " & msg
End Sub

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

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

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

Public Function CCHTMLMail(sendTo As Variant, copyTo As Variant, blindCopyTo As Variant, subject As String, html As String)
Dim s As New NotesSession
s.ConvertMIME=False
Dim db As NotesDatabase
Set db=s.Currentdatabase
Dim memo As NotesDocument
Set memo=db.Createdocument()
Call memo.appendItemValue("Form", "Memo")
Call memo.replaceItemValue("SendTo", sendTo)
Call memo.Replaceitemvalue("CopyTo", copyTo)
Call memo.Replaceitemvalue("BlindCopyTo", blindCopyTo)
Call memo.replaceItemValue("Subject", subject) Dim stream As NotesStream
Set stream=s.CreateStream()
Call stream.writeText(html)
Dim entity As NotesMIMEEntity
Set entity=memo.createMIMEEntity("Body")
Call entity.setContentFromText(stream,"text/html;charset=UTF-8", 1725)
Call stream.close()
Call memo.Send(False)
s.ConvertMIME=True
End Function

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

Public Function SendHTMLMail(sendTo As Variant, subject As String, html As String)
Call CCHTMLMail(sendTo, "", "", subject, html)
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. webService接口大全

    中文<->英文双向翻译WEB服务 获得标准数据 Endpoint: http://fy.webxml.com.cn/webservices/EnglishChinese.asmx Disc ...

  2. Hadoop学习之Mapreduce执行过程详解

    一.MapReduce执行过程 MapReduce运行时,首先通过Map读取HDFS中的数据,然后经过拆分,将每个文件中的每行数据分拆成键值对,最后输出作为Reduce的输入,大体执行流程如下图所示: ...

  3. JavaScript 网页链接调用Android程序

    如何让网页链接实现启动Android的应用,网上有说重写WebView相关的shouldOverrideUrlLoading方法,但是这种理论上能实现,因为你的网页不是仅仅被你自己的webview来浏 ...

  4. Linux系统环境变量的四个配置文件的关系

    Linux系统环境变量配置有四个文件分别是: /etc/environment,/etc/profile,/etc/bash.bashrc,~/.bashrc 各配置文件意义 /etc/environ ...

  5. Gson使用初探

    参考地址: http://www.stormzhang.com/android/2014/05/22/android-gson/ 我的示例代码: public void doGsonTest(View ...

  6. 导出csv文件代码示例

    //当数据量达到一定级别后(大概60000以上),excel会溢出,不能全部显示,而新版的csv好像不会出现这个问题.为什么用好像,我也是听别人说,暂时没有去验证. <?php $sql = & ...

  7. Stars(树状数组+线段树)

    Stars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  8. Objective-C分类 (category)和扩展(Extension)

    1.分类(category) 使用Object-C中的分类,是一种编译时的手段,允许我们通过给一个类添加方法来扩充它(但是通过category不能添加新的实例变量),并且我们不需要访问类中的代码就可以 ...

  9. linux 之进程间通信-------------InterProcess Communication

    进程间通信至少可以通过传送打开文件来实现,不同的进程通过一个或多个文件来传递信息,事实上,在很多应用系统里,都使用了这种方法.但一般说来,进程间 通信(IPC:InterProcess Communi ...

  10. 2015腾讯暑期实习生 Web前端开发 面试经历 --作者imwtr

    1.现在有100亿个数字大小为1到10亿的数字,在这100亿个数字里边只有一个数字出现的次数是奇数次的,你用什么方法,找出这个数字呢? 答:显然至少要全部过一遍,可以用位运算,遍历数组,最后剩下的数字 ...