可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have a lotus-script agent which runs as Web User since I need to know who the current user is and process information accordingly. The problem is that when sending a email in this agent the From email address shows the web user email address rather than the one I have defined. I am setting the following fields before I send the email (as 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
But still the From address is shown as the web user's address. What am I missing here? Any help would be really appreciated.
回答1:
The field Principal is the proper solution, but the real sender's name will probably be visible under water. Actually, there is different solution: to create the mail directly in the mail.box database. That's what the TeamMail template does on OpenNTF. See http://www.openntf.org/Projects/pmt.nsf/ProjectLookup/Team%20Mail%20Tamer
Of course, this is NOT the proper way, but if you want to obfuscate the sender, there's no other solution.
Well, technically that's not entirely true: you could create an Extension Manager DLL that changes the sender... Dirty, you say? Sure.
回答2:
Actually searching through the forums I found a solution to this age old problem (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
Hope this helps other people - this has been a issue for me for a very long time!!
回答3:
The security in Lotus Notes won't let you override the actual sender information via LotusScript. The only way to control it is to set the Run on behalf of property of the agent to the user from which the email should appear to come. However, you have to set that using the designer and you can't change it at runtime.
It's hard to tell from your question, but if you've tried that and found that the web user setting is overriding the 'on behalf of' setting, you might try splitting the creation of the email into a second agent, and then having that second agent run not as a web user.
Hope this helps!
回答4:
The issue with your code is that you do not set Principal field correctly. It should include @NotesDomain where NotesDomain is your Domino mail domain.
I do it like this in QuerySend
.INetFrom = |"| + strDispName + |" <| + strEmail + ">"
.Principal = |"| + strDispName + |" <| + strEmail + "@" + profile.NotesDomain(0) + ">"
.From = strEmail
.tmpDisplaySentBy = strEmail
回答5:
As other already said, unless you create the mail in mail.box, the original sender will always be visible. That is part of the Notes/Domino security.
I posted some code on my blog last year, where you can see how to to do that:
http://blog.texasswede.com/lotusscript-mail-notification-class/
回答6:
Thank you, you saved my second day of solution searching!! )
In my case (send notification emails to users outside the Domino server from standard mailbox like info@server.xxx) I need only to add the following string to memo document: "INetFrom", and put the address there.
So, even if look at source of the mail (on gmail account), I see only the person that mentioned in "INetFrom" field!
So, final code look like (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);
}