Mail und VB6

Hallo,
vor kurzem wurde bei uns ‚David‘ von Tobit durch den Exchange-Server der Muttergesellschaft ersetzt. Als Mailclient benutzen wir Outlook97 oder Outlook2000 (auf jedem Rechner anders)

Mit einem Programm habe ich bisher Mails versendet. Der Programmteil war hiervon abgeleitet. …

Private Sub Command1_Click()
MAPISession1.SignOn
MAPIMessages1.MsgIndex = -1
MAPIMessages1.MsgNoteText = Text2.Text
MAPIMessages1.SessionID = MAPISession1.SessionID
MAPIMessages1.MsgSubject = Text3.Text
MAPIMessages1.RecipAddress = Text1.Text
MAPIMessages1.Send
MAPISession1.SignOff
End Sub

Mit David hat das so geklappt, mit OE habe ich das auch probiert, auch das hat funktioniert.
Mit Outlook will’s nicht gehen.

Hat jemand einen Tipp, warum?
Wenn ich mich in Outlook anmelde muß ich nich eine Domain angeben. Dafür habe ich in MAPI nichts gefunden. Habe ich nicht richtig gesucht?

Danke für Tipps!

cu Rainer

Hallo Rainer,

Ich habe vor Urzeiten mal so ein Ding gebastelt. dummerweise ist der Code nicht mehr da. Ich erinnere mich aber vage, daß es dabei um eine Exchange-Abgleich ging, der aus VB heraus getriggert wurde. Vielleicht kommst Du ja weiter, wenn du nach den Stichworten „Synchronisation“ und „Exchange Server“ im MSDN nachsiehst (Geht auch auf der Webseite von Microsoft)

Nach dem Abgleich waren jedenfalls alle Mails, die im Outlook-Posteingang lagen versandt.

Eine neue Mail zu erstellen ist relativ simpel:
Du stellst in den Projekt-Referenzen Die „Microsoft Outlook 9.0 Object Library“ ein. Danach hast Du ein Outlook-Objekt zur Verfügung mit dem Du Mails erstellen kannst:

Hier ein Beispiel (Aus meine Sourcen kopiert, das mußt Du natürlich umbauen)
_____________________________________________________________
Public Function MAIL_NEW_OBJECT( _
Optional EMPFAENGER As String = „“, _
Optional BETREFF As String = „“, _
Optional INHALT As String = „“, _
Optional SOFORT_SENDEN As Boolean = False, _
Optional SOFORT_SPEICHERN As Boolean = False, _
Optional SOFORT_ANZEIGEN As Boolean = False _
) As outlook.MailItem
Dim OL As outlook.Application
Dim MyNameSpace As Object
Dim MAIL As outlook.MailItem

’ – Ein Mail-Objekt bitte!
Set OL = New outlook.Application
Set MyNameSpace = OL.GetNamespace(„MAPI“)
Set MAIL = OL.CreateItem(olMailItem)

’ – Alles, was wir haben, schütten wir
’ – in das neue Mail-Objekt
With MAIL
.To = EMPFAENGER
.Subject = BETREFF
.Body = INHALT
If SOFORT_SENDEN Then
’ – wir senden nur, wenn mindestens ein
’ – Empfänger und eine Betreffzeile enthalten sind
If Len(.Subject) > 0 And Len(.To) > 0 And InStr(.To, „@“) > 0 Then
.Send
Else
’ – Es fehlen Daten, die Mail wird zum
’ – Bearbeiten in den Editor geholt
SOFORT_ANZEIGEN = True
End If
End If

If SOFORT_SPEICHERN Then
.Save
Exit Function
End If

If SOFORT_ANZEIGEN Then
.Display
Exit Function
End If

End With

Set MAIL_NEW_OBJECT = MAIL

End Function
______________________________________________________________

Eine Mail, die hiermit erstellt wurde, landet einfach im Postausgang, und wird von Outlook bei nächster passender Gelegenheit versandt.

Für diese Funktion brauchst Du normalerweise keine weiteren Anmeldedaten für Outlook, die sind erst fällig, wenn Outlook eine Verbindung zum Exchange-Server aufbauen soll.

So, hoffe ich konnte helfen!
Gruß aus dem sonnigen Elmshorn!

Sven

        • S C H N I P P - - - - -

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Sven,
erst mal danke, werde ich bald ausprobieren.
Im Moment habe ich noch etwas anderes laufen und komme nicht gleich dazu. Ich melde mich dann noch einmal, hoffentlich nicht mit dummen Fragen. :wink:

Gruß, Rainer