如何通过Notes API创建仅允许成员发信的Lotus Domino受限邮件组
解决Lotus Domino邮件组仅允许成员发送邮件的问题
嘿,我看你已经成功用Notes API创建了邮件组,但碰到了非组内成员也能发邮件的问题——这是因为你当前代码里的$Readers字段其实管的是谁能查看这个组的配置文档,不是限制谁能向该组发送邮件哦!
要实现“仅组内成员可向此邮件组发送邮件”的需求,你需要用到Domino组表单里的AllowSendTo字段,这个字段专门用来指定允许向该组发送邮件的对象。把它的值设为你的邮件组名称mymailgroup,Domino就会自动校验发送者身份,只有组内成员才能成功发送邮件到这个组地址。
下面是修改后的完整代码,我标出来了新增的关键行:
class MyGroup { public static void main(String args[]) { Session session = NotesFactory.createSession(host, username, password); Database directory = session.getDatabase(host, "names.nsf"); Document doc = directory.createDocument(); doc.appendItemValue("Form", "Group"); doc.appendItemValue("ListName", "mymailgroup"); doc.appendItemValue("ListOwner", "akash"); doc.appendItemValue("LocalAdmin", "administrator"); doc.appendItemValue("InternetAddress", "mymailgroup@abc.com"); doc.appendItemValue("ListDescription", "My mail group"); doc.appendItemValue("Members", ""); Item memberList = doc.getFirstItem("Members"); memberList.appendToTextList("member1@abc.com"); memberList.appendToTextList("member2@abc.com"); doc.appendItemValue("GroupType", "1"); // 新增:设置允许发送邮件到该组的对象为组本身 doc.appendItemValue("AllowSendTo", "mymailgroup"); doc.replaceItemValue("$Readers", "mymailgroup"); doc.save(); } }
补充说明几点:
GroupType设为"1"是正确的,对应Domino里的邮件组类型;- 如果你不需要限制组配置文档的查看权限,可以去掉
$Readers的设置,它和发送限制无关; - 确保你的Domino服务器配置没有覆盖这个组级别的发送限制(比如全局允许所有用户发送到任何组的设置),不过默认情况下,只要设置了
AllowSendTo,这个限制就会生效。
内容的提问来源于stack exchange,提问作者Akash Gupta




