2012-05-20 8 views
5

Ich habe einen Lotus-Skript-Agent, der als Web-Benutzer läuft, da ich wissen muss, wer der aktuelle Benutzer ist und Informationen entsprechend verarbeiten. Das Problem besteht darin, dass beim Senden einer E-Mail in diesem Agenten die E-Mail-Adresse "Von" die E-Mail-Adresse des Webbenutzers und nicht die von mir definierte E-Mail-Adresse anzeigt. Ich stelle die folgenden Felder aus, bevor ich die E-Mail (als Mime) senden:Lotusscript: Von Adresse beim Senden von E-Mail als Web-Benutzer

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 

Aber immer noch die Absender-Adresse wird als die Web-Adresse angezeigt. Was fehlt mir hier? Jede Hilfe würde wirklich geschätzt werden.

Antwort

3

Das Feld Principal ist die richtige Lösung, aber der Name des echten Absenders wird wahrscheinlich unter Wasser sichtbar sein. Tatsächlich gibt es eine andere Lösung: die Mail direkt in der mail.box-Datenbank zu erstellen. Das ist das, was die TeamMail-Vorlage für OpenNTF tut. Siehe http://www.openntf.org/Projects/pmt.nsf/ProjectLookup/Team%20Mail%20Tamer

Natürlich ist dies nicht der richtige Weg, aber wenn Sie den Absender verschleiern wollen, gibt es keine andere Lösung.

Nun, technisch ist das nicht ganz richtig: Sie könnten eine Extension Manager DLL erstellen, die den Absender ändert ... Schmutzig, sagst du? Sicher.

+0

Wenn wir auch die Antwortadresse ändern und die E-Mails an externe Nicht-Notes-Mail-Clients gesendet werden, wie wäre die tatsächliche Adresse noch sichtbar - bitte erläutern. Danke D.Bugger. – pipalia

+1

AFAIK, Sie können nicht von "Von" überschreiben, es wird vom Router-Task festgelegt. Wenn ich mich richtig erinnere, gibt es immer eine Spur des ursprünglichen Absender-Namens (Von) in der Quelle der Mail. Es wird möglicherweise nicht von dem Mail-Client angezeigt, den Sie verwenden. Haftungsausschluss ... Ich könnte natürlich falsch liegen. ;-) –

+0

Okay, ich werde es versuchen und euch auf dem Laufenden halten - danke. – pipalia

4

Die Sicherheit in Lotus Notes lässt Sie nicht die tatsächlichen Absenderinformationen über LotusScript überschreiben. Die einzige Möglichkeit, es zu kontrollieren, ist die Run im Auftrag von Eigentum des Agenten an den Benutzer, von dem die E-Mail erscheinen soll zu kommen. Sie müssen dies jedoch mithilfe des Designers festlegen, und Sie können ihn zur Laufzeit nicht ändern.

Es ist schwer zu sagen von Ihrer Frage, aber wenn Sie das versucht haben und festgestellt haben, dass die Web-Benutzereinstellung die Einstellung 'im Auftrag von' überschreibt, könnten Sie versuchen, die Erstellung der E-Mail in einen zweiten Agenten aufzuteilen, und dann diesen zweiten Agenten nicht als Webbenutzer ausführen lassen.

Hoffe, das hilft!

+0

Vielen Dank Ken, das ist genau das, was ich dachte, aber dann fand ich nur eine Lösung in den Foren - ich habe es als Antwort hinterlassen wird. – pipalia

+0

Dies ist nicht korrekt. Durch das richtige Festlegen des Principal-Felds (einschließlich Domino-Mail-Domäne) wird das Problem behoben. –

+0

@Alexey Zimarev Nein, die Einstellung 'Principal' löst das Problem nicht, der Wert 'Gesendet von' wird angezeigt, wenn die beiden Adressen/IDs unterschiedlich sind, wie in diesem Thread beschrieben. – Ben

5

Eigentlich Foren gerade ich eine Lösung für dieses uralte Problem (http://www-10.lotus.com/ldd/nd6forum.nsf/0/13706561dc7d693f852570af0062fcec?OpenDocument) gefunden:

Principle = "[email protected]" 
maildoc.Form = "Memo" 
' Principal overrides From 
' Must be formatted as below and must include the domain @xyz.com 
' Format should equal: "From User" <[email protected]@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 

Hoffe das hilft anderen Menschen - das war schon lange ein Thema für mich !!

+1

Wenn Sie sich den Mail-Header ansehen, zeigt dies wirklich die E-Mail, die von [email protected] stammt? Versuchen Sie es beispielsweise mit einem Google Mail-Konto und suchen Sie nach einer beliebigen Ablaufverfolgung, die von einem anderen Benutzer gesendet wurde. Ich glaube, das war der Fall in der Vergangenheit (aber es sind ein paar Jahre ...) –

+0

Sie haben Recht Ken - wir fanden das Hinzufügen von Mail zu mail.box war viel besser als das tun! – pipalia

1

Wie bereits erwähnt, ist der ursprüngliche Absender immer sichtbar, es sei denn, Sie erstellen die Mail in mail.box. Dies ist Teil der Notes/Domino-Sicherheit.

gab ich einige Code auf meinem Blog im letzten Jahr, wo man sehen kann, wie man das tun: http://blog.texasswede.com/lotusscript-mail-notification-class/

+0

Vielen Dank für das Teilen, das ist eine sehr interessante Lösung. – pipalia

1

Danke, du bist mein zweiter Tag der Lösung Suche gespeichert !!)

In meinem Fall (E-Mail-Benachrichtigungen an Benutzer außerhalb des Domino-Servers aus Standard-Postfach wie [email protected]) Ich muss nur die folgende Zeichenfolge zum Memo-Dokument hinzufügen: "INetFrom", und geben Sie die Adresse dort.

Also, selbst wenn Sie auf die Quelle der Mail (auf Google Mail-Konto) schauen, sehe ich nur die Person, die im Feld "INetFrom" erwähnt!

Also, schaut endgültiger Code wie (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", "[email protected]"); 
    memo.send(); 
}catch (e){ 
    print ("Send Error: " + e); 
} 
+0

Sie sind herzlich willkommen, aber wie andere empfohlen haben, würde ich Mail direkt in mail.box hinzufügen, wenn Sie nicht möchten, dass Ihre E-Mail im Spam-Ordner landet. – pipalia

3

Das Problem mit dem Code ist, dass Sie nicht Hauptfeld richtig eingestellt haben. Es sollte @NotesDomain enthalten, wobei NotesDomain Ihre Domino Mail-Domäne ist.

ich es so in QuerySend

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

Danke @ Alexey-Zimarev Das funktioniert wie erwartet und ist vier Zeilen Code. An alle anderen Übermittler, danke auch. – Ewen