Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lotus notes Lotusscript:以web用户身份发送电子邮件时的发件人地址_Lotus Notes_Lotus Domino_Lotusscript - Fatal编程技术网

Lotus notes Lotusscript:以web用户身份发送电子邮件时的发件人地址

Lotus notes Lotusscript:以web用户身份发送电子邮件时的发件人地址,lotus-notes,lotus-domino,lotusscript,Lotus Notes,Lotus Domino,Lotusscript,我有一个LotusScript代理,它以Web用户的身份运行,因为我需要知道当前用户是谁,并相应地处理信息。问题是,在此代理中发送电子邮件时,“发件人”电子邮件地址显示的是web用户的电子邮件地址,而不是我定义的电子邮件地址。在发送电子邮件之前,我正在设置以下字段(作为mime): 但发件人地址仍然显示为web用户的地址。我错过了什么?非常感谢您的帮助。Lotus Notes中的安全性不允许您通过LotusScript覆盖实际的发件人信息。控制它的唯一方法是将代理的属性设置为电子邮件应该来自的用

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


但发件人地址仍然显示为web用户的地址。我错过了什么?非常感谢您的帮助。

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

很难从您的问题中分辨出来,但是如果您尝试过,发现web用户设置覆盖了“代表”设置,您可以尝试将电子邮件的创建拆分为第二个代理,然后让第二个代理以非web用户的身份运行


希望这有帮助

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

原则=”customerservice@xyz.com"
maildoc.Form=“备忘录”
"主体凌驾于
'的格式必须如下所示,并且必须包含域@xyz.com
'格式应等于:“来自用户”
maildoc.Principal=|“客户服务”|
maildoc.From=原则
maildoc.AltFrom=原则
maildoc.SendFrom=原则
maildoc.INetFrom=原则
maildoc.tmpDisplaySentBy=原则
maildoc.tmpDisplayFrom_Preview=原则
maildoc.displayssent=原则

希望这对其他人有帮助-这对我来说已经是一个问题很久了

字段主体是正确的解决方案,但真正发送者的名字可能在水下可见。实际上,有不同的解决方案:直接在mail.box数据库中创建邮件。这就是TeamMail模板在OpenNTF上的作用。看

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


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

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

我去年在我的博客上发布了一些代码,在那里你可以看到如何做到这一点:
谢谢你,你救了我搜索解决方案的第二天!!)

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

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

最后的代码看起来像(XPages SSJS):


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

我在QuerySend就是这样做的

    .INetFrom = |"| + strDispName + |" <| + strEmail + ">"
    .Principal =  |"| + strDispName + |" <| + strEmail + "@" + profile.NotesDomain(0) + ">"
    .From = strEmail
    .tmpDisplaySentBy = strEmail

.INetFrom=|“|+strDispName+|”非常感谢Ken,这正是我所想的,但后来我在论坛上找到了一个解决方案-我将其作为答案发布。这是不正确的。正确设置Principal字段(包括Domino邮件域)可以解决此问题。@Alexey Zimarev否,设置Principal不会解决此问题,如果两个地址/ID不同,则会出现Sent by值,如本帖所述。如果我们也在更改回复地址,并且电子邮件被发送到非Notes外部邮件客户端,那么真实地址如何仍然可见?请详细说明。谢谢D.Bugger.AFAIK,您不能覆盖,它是由路由器任务设置的。如果我没记错的话,在邮件的来源中总是有原始发件人姓名的痕迹。您使用的邮件客户端可能不会显示它。免责声明。。。当然,我可能错了你是对的——虽然看不清楚,但如果你看一下邮件标题信息,就可以知道邮件来自谁。因此,原始发件人(签署该代理的开发人员/管理员)仍然显示在标题中!!如果你看邮件头,这是否真的显示了邮件的来源customerservice@xyz.com?  例如,尝试对gmail帐户进行测试,并查找其他用户发送的任何跟踪。我相信这是过去的情况(但已经有几年了…)你是对的,肯-我们发现在mail.box中添加邮件比这样做要好得多!非常感谢您分享此信息,这是一个非常有趣的解决方案。非常欢迎您,尽管像其他人建议的那样,如果您不希望您的邮件最终进入垃圾邮件文件夹,我会将邮件直接添加到mail.box。谢谢@Alexey Zimarev此项工作与预期相符,共有四行代码。对于所有其他提交者,也谢谢你。
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
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);
}
    .INetFrom = |"| + strDispName + |" <| + strEmail + ">"
    .Principal =  |"| + strDispName + |" <| + strEmail + "@" + profile.NotesDomain(0) + ">"
    .From = strEmail
    .tmpDisplaySentBy = strEmail