5

我有一个作为 Web 用户运行的 lotus-script 代理,因为我需要知道当前用户是谁并相应地处理信息。问题是,在此代理中发送电子邮件时,发件人电子邮件地址显示的是网络用户电子邮件地址,而不是我定义的电子邮件地址。在发送电子邮件(作为 mime)之前,我正在设置以下字段:

    mailDoc.Form = "Memo"
    mailDoc.Subject = strSubject
    mailDoc.InetSendTo = strFrom
    mailDoc.PostedDate = Now
    mailDoc.Principal = strFrom
    mailDoc.FROM = strFrom
    mailDoc.INETFROM = strFrom
    mailDoc.~INetPrincipal = strFrom
    mailDoc.ReplyTo = strFrom
    mailDoc.SendFrom = strFrom
    mailDoc.SentBy = strFrom
    mailDoc.altFrom = strFrom
    mailDoc.tmpDisplaySentBy = strFrom
    mailDoc.DisplaySent = strFrom
    mailDoc.ToShow = strFrom

    mailDoc.SendTo = strSendTo

但发件人地址仍显示为 Web 用户的地址。我在这里想念什么?任何帮助将非常感激。

4

6 回答 6

5

实际上通过论坛搜索,我找到了解决这个古老问题的方法(http://www-10.lotus.com/ldd/nd6forum.nsf/0/13706561dc7d693f852570af0062fcec?OpenDocument):

Principle = "customerservice@xyz.com"
maildoc.Form = "Memo"
' Principal overrides From
' Must be formatted as below and must include the domain @xyz.com
' Format should equal: "From User" <fromuser@xyz.com@DOMAIN>
maildoc.Principal = |"Customer Service" <| + Principle + |@xyz.com>|
maildoc.From = Principle
maildoc.AltFrom = Principle
maildoc.SendFrom = Principle
maildoc.INetFrom = Principle
maildoc.tmpDisplaySentBy = Principle
maildoc.tmpDisplayFrom_Preview = Principle
maildoc.DisplaySent = Principle

希望这对其他人有所帮助-这对我来说已经很长时间了!

于 2012-05-20T20:39:28.660 回答
4

Lotus Notes 中的安全性不允许您通过 LotusScript 覆盖实际的发件人信息。控制它的唯一方法是将代理的代表属性设置为发送电子邮件的用户。但是,您必须使用设计器进行设置,并且不能在运行时更改它。

很难从您的问题中看出,但如果您尝试过并发现网络用户设置覆盖了“代表”设置,您可以尝试将电子邮件的创建拆分为第二个代理,然后再使用它第二个代理不以 Web 用户身份运行。

希望这可以帮助!

于 2012-05-20T20:01:13.117 回答
3

字段 Principal 是正确的解决方案,但真正的发件人姓名可能会在水下可见。实际上,有不同的解决方案:直接在 mail.box 数据库中创建邮件。这就是 TeamMail 模板在 OpenNTF 上的作用。见http://www.openntf.org/Projects/pmt.nsf/ProjectLookup/Team%20Mail%20Tamer

当然,这不是正确的方法,但是如果您想混淆发送者,则没有其他解决方案。

好吧,从技术上讲,这并不完全正确:您可以创建一个扩展管理器 DLL 来更改发件人……脏,你说?当然。

于 2012-05-21T08:52:10.453 回答
3

您的代码的问题是您没有正确设置 Principal 字段。它应该包括 @NotesDomain,其中 NotesDomain 是您的 Domino 邮件域。

我在 QuerySend 中这样做

    .INetFrom = |"| + strDispName + |" <| + strEmail + ">"
    .Principal =  |"| + strDispName + |" <| + strEmail + "@" + profile.NotesDomain(0) + ">"
    .From = strEmail
    .tmpDisplaySentBy = strEmail
于 2013-05-31T15:14:53.590 回答
1

正如其他人已经说过的,除非您在 mail.box 中创建邮件,否则原始发件人将始终可见。这是 Notes/Domino 安全性的一部分。

我去年在我的博客上发布了一些代码,您可以在其中看到如何做到这一点: http: //blog.texasswede.com/lotusscript-mail-notification-class/

于 2012-05-30T18:46:31.493 回答
1

谢谢,您节省了我第二天的解决方案搜索!!)

在我的情况下(从标准邮箱如 info@server.xxx 向 Domino 服务器外部的用户发送通知电子邮件)我只需将以下字符串添加到备忘录文档:“INetFrom”,并将地址放在那里。

因此,即使查看邮件来源(在 gmail 帐户上),我也只能看到“INetFrom”字段中提到的人!

所以,最终代码看起来像(XPages SSJS):

try {
    var memo:NotesDocument = database.createDocument();
    memo.appendItemValue("Form", "Memo");
    memo.appendItemValue("Subject", "Subject text");
    memo.appendItemValue("Body", "Body text");
    memo.appendItemValue("SendTo", "userName");
    memo.appendItemValue("INetFrom", "info@server.com");
    memo.send(); 
}catch (e){
    print ("Send Error: " + e);
}
于 2013-05-24T07:26:39.787 回答