Autor Thema: Mail mit Excel generieren: Bestimmte Absenderadresse benötigt  (Gelesen 5786 mal)

Offline Chirin

  • Frischling
  • *
  • Beiträge: 6
Hallo,

ich arbeite gerade an einem Skript, um aus Excel heraus E-Mails zu generieren (und vor dem Senden manuell kontrollieren, ggf. nachbearbeiten) und würde gern die Absenderadresse anders festlegen. Das Standardpostfach trägt bei mir meinen Nutzernamen "Vorname.Nachname@domain.de", allerdings benötige ich den Versand aus einer Sammeladresse "info@domain.de".

Gibt es dafür irgendwo eine Möglichkeit?

Aktuell verwendetes Skript
Code
Sub SendNotesMail2(sRecipient As String, sSubject As String)
On Error Resume Next
    '#  MAIL VORBEREITEN   

    'Variablen Dimensionieren, die benötigt werden, um das Mail zu senden
    Dim mRows As Integer
    Dim mCols As Long
    Dim Maildb As Object 'Die Datenbank
    Dim UserName As String 'Der Benutzername
    Dim MailDbName As String 'Der Datenbankname
    Dim MailDoc As Object 'Das Maildokument selbst
    Dim Session As Object 'Die Notes Session
    Dim EmbedObj As Object 'Ein eingebettetes Objekt (Anhang)
    Dim ClipBoard As DataObject
    Dim SaveIt As Boolean
    
    Dim BodyText As String
    
    Dim filename As String
    Dim numrows As Long
    Dim numcols As Integer
    Dim r As Long
    Dim c As Integer
    Dim data
    Dim exprng As Range
    Set exprng = Selection
    numcols = exprng.Columns.Count
    numrows = exprng.Rows.Count
      
    'Vorgabetext, der gesendet werden soll
    BodyText = "Test. Hier soll später der richtige Text stehen."

    'Die Session starten
    Set Session = CreateObject("Notes.NotesSession")      
    UserName = Session.UserName
   
    'Datenbank öffnen
    Set Maildb = Session.GETDATABASE("Mailserver", MailDbName)
    If Maildb.IsOpen = True Then
    'Fertig zum mailen!
    Else
        Maildb.OPENMAIL
    End If
     
    'Ein neues Maildokument erstellen
    Set MailDoc = Maildb.CREATEDOCUMENT
    MailDoc.Form = "Memo"
    MailDoc.sendto = sRecipient
    
    MailDoc.Subject = sSubject
    MailDoc.body = BodyText
    MailDoc.SAVEMESSAGEONSEND = SaveIt
       
    Dim Workspace As Object
    Set Workspace = CreateObject("Notes.NOTESUIWORKSPACE")
    Call Workspace.EDITDOCUMENT(True, MailDoc).GOTOFIELD("Body")

    'Aufräumen
    Set Maildb = Nothing
    Set MailDoc = Nothing
    Set Session = Nothing
    Set EmbedObj = Nothing

End Sub

Vielen Dank für eure Hilfe schon im Voraus

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Chirin

  • Frischling
  • *
  • Beiträge: 6
Ich fürchte ich verstehe dich nicht.
Es geht mir nicht darum eine andere Adresse zu faken, sondern ein real existierendes anderes Ausgangspostfach für den Mailversand zu benutzen.

Im Unternehmen haben die Mitarbeiter Zugriff auf verschiedene Postfächer, ein persönliches und verschiedene, entpersonalisierte Postfächer.
Eines davon (info@) soll für den Versand dieser Mails genutzt werden.

Bisher kann ich das Fach info öffnen und die Mails von Hand schreiben und schicken. Allerdings möchte ich eben das automatisieren.
Es fällt mir schwer zu akzeptieren, dass zwar zB in Outlook, aber nicht in Lotus Notes funktionieren soll, wenn ich doch Zugriff auf
das entsprechende Postfach habe.

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Hallo,

Und was kommt beim Empfaenger an, wenn dein Mitarbeiter ein mail aus dem "entpersonalisiertem" Postfach sendet?
(Was kommt bei einem "internen" Empfaenger an?)

Und mit welchem Benutzer meldet sich der Anwender den im Postfaach "info@..." an, wenn er von ier ein Mail senden?


Andreas

P.S.:
Outlook ist nicht Notes.
Also nicht alles was in Outlook funktioniert, muss auch in Notes so funktionieren.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Notes ist -im Gegensatz zu Outlook- SICHER.

Wenn Du Code schreibst, der in Deinem Namen läuft (oder dem Namen des Servers, oder wem auch immer), dann ist immer der, der den Code geschrieben hat der Absender, und eben NICHT die Mailbox aus der die Mail versendet wurde...
Deshalb ist auch die Verwendung eines "existierenden" anderen Absenders ein "Faken" -> Daher meine erste Antwort.

Und ob Du das akzeptierst oder nicht, ist Notes eigentlich relativ egal...

Ach ja: Wenn Du das "Fach" info öffnest und manuell versendest, dann schau Dir doch mal das Ergebnis beim Empfänger an...

Aber wenn Dir GENAU das Ergebnis (Absender: Info, Gesendet von Dir) reicht, dann füge einfach vor dieser Zeile:
Code
Set Maildb = Session.GETDATABASE("Mailserver", MailDbName)
diese Zeile ein:
Code
MailDbName = "PfadZurInfo.nsf"
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Den Absender, in einer Mail zu "überschreiben", wird über die mail.box gemacht, das ist nicht schwierig wenn man die Bedingungen kennt, wie z.B. das Feld Recipients. Wichtig, das geht nur im Backend, also ohne Nutzeraktionen.

In deinem Code wird die Mail im Notes-Client geöffnet, das muss dann eine Mail-DB sein. Notes-Standard Mail: Zustelloption, hier gibt es die Einstellung "Antwort auf dieses Memo senden an:". Kann über das Feld "ReplyTo" vorbelegt werden.

Wo der Code geschrieben wird, Notes, Java oder VBA spielt dabei keine Rolle ;)
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline thkn777

  • Aktives Mitglied
  • ***
  • Beiträge: 176
@jBubbleBoy
Ein Dokument kann auch aus dem Frontend in einer mail.box erzeugt werden.

Aber: FÜR DIESE METHODE GIBT ES SEITENS DER IBM KEINEN SUPPORT.

Für viele Anwender/Entwickler ist das kein Hindernis. In manchen Umgebungen schon. Also vorher unbedingt klären, ob man wirklich so vorgehen möchte/darf.

Zitat
Ich fürchte ich verstehe dich nicht.
Es geht mir nicht darum eine andere Adresse zu faken, sondern ein real existierendes anderes Ausgangspostfach für den Mailversand zu benutzen.

Im Unternehmen haben die Mitarbeiter Zugriff auf verschiedene Postfächer, ein persönliches und verschiedene, entpersonalisierte Postfächer.
Eines davon (info@) soll für den Versand dieser Mails genutzt werden.

Bisher kann ich das Fach info öffnen und die Mails von Hand schreiben und schicken. Allerdings möchte ich eben das automatisieren.

@Chirin
Du redest über SMTP-Mail. In Notes erstellst Du aber keine SMTP-Mails, sondern Notes-Dokumente, die Du dem Notes Router zur weiteren Verarbeitung übergibst. Die Umwandlung des Notes-Dokumentes in eine SMTP-Mail kannst Du nicht 100% steuern. Der Router besteht doch tatsächlich  :o darauf, die Wahrheit zu sagen --> Skandal!  ;)

Was zur Lösung Deines Problems wichtig ist: Es gibt ein Mapping zwischen den Notes-Items und den Header-Feldern einer SMTP-Mail:

SmtpOriginator --> Return-Path
From --> From

Ich empfehle, zusätzlich das Item "Principal" auf den voll qualifizierten Notes Namen zu setzen, der zur Absenderadresse gehört.

Dein Problem ist das "Sender" Feld im SMTP-Header. Selbst wenn Du manuell das Item "Principal" setzt, schreibt der Notes-Router die SMTP-Adresse des "wahren" Absenders da hinein. Viele Mail-Clients zeigen das dann als "gesendet von" an UND, was viel schlimmer ist, NDR's würden zum Beispiel auch dahin gehen.

Sprich, es würde etwa SO aussehen:
Return-Path: <info@xx.yy>
Received: from ...
Received: from ...
From: info@xx.yy
Subject: Absender umschreiben
To: an.wen@soll.die.mail.gehen
Message-ID: <...>
Sender: vorname.nachname@xx.yy
...

Wenn ich Dich richtig verstanden habe, reicht Dir das aber so aus. Also: Items setzen, fertig.

Was Dir die anderen netten Forums-Bewohner sagen wollten: das "Sender: vorname.nachname@xx.yy" Feld im Header bekommst Du so einfach nicht weg. DAS ist es aber, was wirklich wichtig ist, wenn Du sauber einen Absender "faken" möchtest.

Das WILLST Du aber gar nicht. Du möchtest "nur" als Vertreter im Namen von "info@..." senden und es ist Dir egal, daß in der SMTP-Mail der tatsächliche Nutzer als Sender steht mit allen Folgen.

Ergo: Versuch's mal so, wie oben gesagt. Alles ist gut.

Viel Erfolg!
« Letzte Änderung: 08.12.15 - 14:08:50 von thkn777 »

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
@thkn777:
Wenn ich aus der mail.box eine Mail erstelle, dann habe ich nur das Feld Recipients als Text-Eingabe, kein Inhalt, Betreff oder Sonstiges.
Klar kann man den Senden-Button, oder auch die mail.box, umprogrammieren. In diesem Fall würde ich die Standard-Templates aber nicht anfassen sondern eine eigene DB programmieren - eine Art "Mail-Middleware". Das wäre die sauberste Lösung und für gleichgelagerte Anwendungsfälle nutzbar.

Es bleibt die Frage ob die Standard-Mail-Funktion "ReplyTo" ausreicht, bzw. ob die Mail im Backend ohne Nutzeraktionen versendet werden kann - dann wäre der Aufwand nicht sehr groß.
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline Chirin

  • Frischling
  • *
  • Beiträge: 6
Vielen Dank. Es hat nach zwei Anläufen dann doch endlich noch funktioniert :)

Set Maildb = Session.GETDATABASE("server", "mailadresse.nsf") war es

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz