在 java 中使用 notesFactory 向 lotus notes 中的通用 ID 发送电子邮件

send email to generic ID in lotus notes using notesFactory in java

他们在一个项目中要求通过 lotus notes 从 java 应用程序发送电子邮件。

注意:多米诺服务器安装在客户端服务器上。

目前我可以在本地 machine.using notes.jar 文件

上使用 notesFactory 发送电子邮件

通过 .nsf 通过其密码访问用户。

即通过密码创建安全连接。 并通过调用

获取数据库对象

Session.getdatabase(null,"user.nsf")

它完美地工作。

但对于某些类型的电子邮件,客户通过电子邮件共享了一个通用 ID...(link)...通过单击该 link,通用邮箱将在活动状态下打开用户。在单独的选项卡中...我们可以通过它发送电子邮件。

但尚未共享他们的 .nsf 路径或 ID 或密码。

点击那个link直接打开。

现在我想在 notesfactory 会话中访问该通用 ID

我试图保持打开该 ID,然后 运行 我的代码...但它仍然通过活跃用户本身发送电子邮件。

客户端尚未准备好共享该用户的 ID 和密码详细信息。不是在我们的本地机器上生成 id 文件。

他们有什么办法可以通过那个 ID 发送电子邮件吗?

如果有人想要我正在使用的代码..我会分享。

But for some types of emails the client have shared a generic id...(link) over an email... By clicking on that link the generic mail box opens under active user. In separate tab... Through which we can send emails.

这听起来不像 "shared id",它听起来更像是一个设置了 ACL 以授予一组用户访问权限的邮件数据库。 当您从 Notes 中发送电子邮件时(无论是通过 UI 还是通过代码),实际登录的用户都将用作发件人。这是故意设计的,以防止用户欺骗发件人。

有一种不支持的伪造发件人地址的方法,方法是将电子邮件直接放入 mail.box,但这只能由知道自己在做什么的人来完成。

我几年前写了一个脚本库,旨在帮助发送电子邮件。它包括设置发件人地址的能力。您可以在 my blog 上找到它,它是免费使用的。但我不建议您在不先了解代码的作用之前使用它。

代码的相关部分如下:

   Set mailbox = New NotesDatabase(mailservername,"mail.box")
   If mailbox.Isopen = False Then
      Print "mail.box on " & mailservername & " could not be opened"
      Exit Sub
   End If
   Set me.maildoc = New NotesDocument(mailbox)
   Call me.maildoc.ReplaceItemValue("Form","Memo")
   Set me.body = New NotesRichTextItem(maildoc,"Body")
   Call maildoc.ReplaceItemValue("Principal", me.p_principal)
   ' If principal is set, we want to fix so mail looks like
   ' it is coming from that address, need to set these fields
   Call maildoc.ReplaceItemValue("From", me.p_principal)
   Call maildoc.ReplaceItemValue("Sender", me.p_principal)
   Call maildoc.ReplaceItemValue("ReplyTo", me.p_principal)
   Call maildoc.ReplaceItemValue("SMTPOriginator", me.p_principal)
   Call maildoc.ReplaceItemValue("PostedDate",Now())
   If me.p_principal<>"" Then
      Call maildoc.Save(True,False) ' Save in mail.box
   Else
      Call maildoc.Send(True)       ' Send mail normally
   End If   

您使用 Principal 字段设置发件人地址。