Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Legolas am 20.04.08 - 21:54:59
-
Hallo Forum,
ich habe folgendes Problem und weis nicht weiter.
Ich habe einen Mail-In Agenten in einer Maildatenbank der eine Bestätigungsmail (Autoreply) versenden soll.
Das Problem was ich habe ist allerdings, dass in der Reply-Mail das "From" Feld nicht mehr vorhanden ist, ovbwohl es explizit befüllt wurde.
Hierdurch wird die Mail (z.B in GMX) als Mail ohne Absender angezeigt und somit als Spam behandelt.
Wird die Mail "normal" vom Client mit diesem Code versendet, funktioniet es.
Client Server: 7.x
Hat hier jemand eine Idee woran das liegen kann?
Gruß und danke im Voraus
Bernd
Hier der Code:
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim IncomEmail As NotesDocument
Dim ReplyEmail As NotesDocument
Dim stRecipient As String
stRecipient = "max.mueller@firma.de"
Set db = s.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set IncomEmail = dc.GetFirstDocument
While Not IncomEmail Is Nothing
Dim stFrom As String
Dim stSendTo As String
Dim Position As Long
Dim Temp As String
stFrom = IncomEmail.From(0)
stSendTo = Ucase$( IncomEmail.SendTo(0) )
' Wenn Mailempfänger = "max.mueller@firma.de" dann Rückantwort erstellen und an den Absender zurücksenden
If Instr(1, stSendTo, Ucase(stRecipient )) <> 0 Then
'if an internet address format as name@internetdomain@notesdomain,
'regardless if with my notesdomain
If Instr(1, stFrom, "@") <> 0 Then
Position = Instr(1, stFrom, "<")
Temp = Right(stFrom, (Len(stFrom) - Position))
stFrom = Left(Temp, (Len(Temp) - 1))
Elseif IncomEmail.hasitem("Principal") Then
stFrom = IncomEmail.Principal(0)
End If
'create Memo
Set ReplyEmail = db.CreateDocument
ReplyEmail.SendTo = stFrom
ReplyEmail.Subject = "Re.: " + IncomEmail.Subject(0)
ReplyEmail.Body = "Thank you"
ReplyEmail.Principal = stRecipient
ReplyEmail.From = stRecipient
ReplyEmail.SaveMessageOnSend = True
Call ReplyEmail.Send(False)
End If
Call s.UpdateProcessedDoc(IncomEmail)
Set IncomEmail = dc.getnextdocument(IncomEmail)
Wend
End Sub
-
Lotus Notes/Domino Agent FAQ (http://www-10.lotus.com/ldd/46dom.nsf/869c7412fe5d56b7852569fa007826e3/574c99ccb345839185256976004e811e?OpenDocument) updated 4/18/07 by Julie Kadashevich
1) How to change the apparent sender of the agent generated mail.
Information on three different ways to do it with code samples has been moved to the "Troubleshooting agents" article.
http://www-10.lotus.com/ldd/today.nsf/62f62847467a8f78052568a80055b380/ef1565a0b202808285256c94004fd0fb?OpenDocument&Highlight=0,kadashevich
Related information not covered in the article:
What is $INetFrom:
http://www.notes.net/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/7de5b937e6b113438525680f006f3597?OpenDocument&Highlight=0,inetfrom
http://www.notes.net/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/0a2fb58af0864fff852568e30055b386?OpenDocument&Highlight=0,inetfrom
And if you have problems even if you have used the right syntax and followed instructions:
http://www.notes.net/46dom.nsf/7d6a87824e2f09768525655b0050f2f2/61c58ede8a7178458525693c006129b6?OpenDocument
From field has format name%doman@company.com, how do to drop %doman portion:
http://www.notes.net/46dom.nsf/7d6a87824e2f09768525655b0050f2f2/9253ec348d06535b852569f20067617b?OpenDocument
2
-
Hallo,
bin mir nicht ganz sicher ob ich diese Antwort richtig verstehe! ???
Um Missverständnissen vorzubeugen:
Ich möchte nicht den Absender der ursprünglichen E-Mail abändern sonder ein neues Mail an den Absender zurücksenden.
Der Absender für die Replay-Mail ist immer auch der Besitzer der Maildatenbank.
-
Hallo Bernd,
was Du richtig verstehen musst (und das findest Du auch in den verlinkten Artikeln) ist das Funktionieren der Methode NotesDocument.Send: Diese setzt immer den Namen des aktuellen Benutzers ein. Wenn es sich um eine Internet-Adresse handeln muss, hast Du bei einem Server natürlich schlechte Karten ...
Du solltest darüber nachdenken, dass Mail nicht zu "Senden", sondern in der MAIL.BOX (oder MAILx.BOX - das solltest Du gleich mit berücksichtigen) anzulegen und zu speichern. Den Rest übernimmt dann der Router - ohne Send-Methode.
Weiterhin:
Du willst immer mit dem aktuellen Eigentümer des Mailfiles anworten, hast das aber hardcodiert. Warum liest Du das nicht aus dem "(CalendarProfile)" aus? Ich finde auch weitere Teile in diesem Code, die völlig unnötig sind und darauf hindeuten, dass Du das Zeugs irgendwo "gefunden" hast. Mach sowas nicht! Nimm derartigen Code als Beispiel und Lernstoff oder Anti-Beispiele und baue es nach dem Durchdenken immer ganz neu auf entsprechend Deiner Kenntnisse und Standards.
HTH,
Bernhard
-
Hallo Bernhard,
der Code ist reiner Testcode.
Der soll so nicht zum Einsatz kommen.
Mir ging's hier vor allem um das Verständnis warum die Reply-Mail nicht korrekt versendet wird.
Eine Frage ist aber für mich immer noch offfen!
Warum wir das Feld "From" nicht mit übertragen?
Gruß
Bernd
-
Hast Du den ersten Teil meiner Antwort denn nicht gelesen?
Bernhard
-
Hallo Bernhard,
wer lesen kann hat schon so seine Vorteile im Leben! ;)
Bin mir wegen dem richtigen Lösungsansatz immer noch nicht ganz sicher:
Ist dies die bestmöglichste Variante ein Mail-In Agent zu erstellen, der Replay-Mails für einen bestimmten Absender aus dem Internet erstellt und versendet?
oder...
gibt es noch andere Lösungsansätze die sinnvoll sind?
Gruß
Bernd
-
Irgendwie hast Du immer noch nicht richtig gelesen (und verstanden).
Die Methode NotesDocument.Send hilft Dir sehr wenig bis gar nicht (je nachdem, wie Deine ganz konkrete Aufgabenstellung aussieht).
Du brauchst einen Agent, der Mails in der MAIL.BOX erstellt und dann kannst Du ein NotesDocument.From / INetFrom Deiner Wahl erstellen.
Liegt der Agent in einer stino Mail-Datenbank, kannst Du den erforderlichen Absender (From) aus dem "(CalendarProfile)" dynamisch auslesen.
Alternativ kannst Du Dich kaputtadministrieren und mit OnBehalfOf arbeiten oder die Signierung veranlassen oder ähnliches Zeugs, was man eigentlich scheut wie der Teufel das Weihwasser. Gute Programmierer sind faul (und arbeiten deshalb beim ersten Mal gleich richtig).
Bernhard
-
Hi,
warum so "kopliziert", mail.box...
Hast Du die möglichkeit einen "User" dafür anzulegen?
Du kannst den Agenten dann im Namen des Benutzers ausführen oder
ihn gleich mit diesem Benutzer signieren, falls eine Notes-ID da ist.
Dieser Benutzer benötigt dann noch im Feld "Internet-Adresse" deinen gewünschten Absender,
wobei die Domäne (@blablab.com) schon bei deinen sein sollte.
Gruss, Pete(r)
-
Pete, das war jetzt aber aber ein ganz arger Schnellschuss. Lies bitte nochmals und wirklich aufmerksam das Ausgangspostings und den weiteren Verlauf des Threads.
Ausserdem: Für solch eine simple Aufgabe Lizenzgebühren zahlen müssen ... ich weiss nicht.
Aus meiner bisherigen Sicht des Threads ist Dein Lösungsvorschlag sehr kurzsichtig.
Bernhard
PS: Ad "kompliziert" - drei Zeilen wären beim bisherigen Code auszutauschen. Eigentlich natürlich der komplette Code, aber das wird ja hier gar nicht diskutiert.