PDA

Vollständige Version anzeigen : SendObject Problem


michaelkalo
20.01.2003, 09:22
Hallo liebe Access Gemeinde,

ich benutze folgenden Befehl in Access 97 in Kombination mit Outlook 97(nicht Express) :

Private Sub_Click()

Dim strOutPutFormat

strOutPutFormat = "Snapshot-Format (*.snp)"

Syntax:

'DoCmd.SendObject [Objekttyp][, Objektname][, Ausgabeformat][, An][, cc][, Bcc][, Betreff][, Nachricht][, Nachricht bearbeiten][, Vorlagedatei]


DoCmd.SendObject acSendReport, "rpt_ÄdF", strOutPutFormat, "TestAdresse@TestServer.de", , , "Test", , -1

End sub
***********************

Alles läuft super - aber wenn ich möchte, das die E-Mail sofort rausgeht (muß unbedingt sein) und ich am Schluß von docmd.sendobject eine 0 (Null) setze, sagt mir das Programm:

DoCmd.SendObject acSendReport, "rpt_ÄdF", strOutPutFormat, "TestAdresse@TestServer.de", , , "Test", , 0



Laufzeitfehler 2293: Die Nachricht konnte aus folgendendem Grund nicht gesendet werden ,der in der Warnung angegeben wurde.

Beheben Sie das Problem bevor Sie versuchen, die nachricht zu senden.

****************************

Meine Frage:

Wer weiß was über den Fehler 2293 bzw. wo kann ich etwas über Fehlercodes nachlesen ?


Vielen Dank für eure Hinweise

Michael Kalo

Karlheinz
20.01.2003, 10:10
Hallo Michael,

ersetze die 0 doch einmal durch False.

Vielleicht hilft es.

Gruß Karlheinz

michaelkalo
20.01.2003, 10:16
Hallo Karl-Heinz,

danke für den Tip - funktioniert aber nicht:

DoCmd.SendObject acSendReport, "rpt_ÄdF", strOutPutFormat, "TestAdresse@TestServer.de", , , "Test", , False

Ergibt den gleichen Fehler 2293, wie vorher .


Wer hätte da noch einen Tip ?

Danke

Michael

Aquarii
20.01.2003, 10:31
Hallo Michael,

also bei mir funzt das mit "False".

Ich meine, ich hätte mal in der dt. Microsoft Knowledge Base etwas über Probleme gelesen, sofern man das Outlook-E-Mail-Sicherheitsupdate installiert hat. Wenn das bei Dir der Fall sein sollte, schau mal nach, was Microsoft dazu schreibt.

michaelkalo
20.01.2003, 11:03
Hallo Aquarii,

genau das scheint da Problem zu sein. Danke für den Tip !

Danke

Michael

michaelkalo
26.01.2003, 19:18
Hallo Access Gemeinde,

dieses Thema ist für mich nach wie vor aktuell, unzwar geht es um folgendes Problem:

Die SendObject Methode funktioniert nicht, wenn ich als Paramter am Schluß "False" eingebe:

*****************************

DoCmd.SendObject acSendReport, "rpt_ÄdF", strOutPutFormat, "TestAdresse@TestServer.de", , , "Test", , False

******************************

False heißt in diesem Fall, die Nachricht soll nicht mehr bearbeitet werden und direkt per Outlook ohne vorheriges Ansehen versendet werden.

Das Sicherheitsupdate von Outlook 97 verhindert ein solches Verhalten, damit sich gemeine Viren nicht unbemerkt per Outlook verbreiten - konkret
Tritt der Fehler 2293 auf. Natürlich verstehe ich den Sinn des Sicherheitsupdate, dennoch möchte ich an meiner Idee festhalten.

Meine Frage an euch:

Wer hat das gleiche Problem gehabt und kann mir einen konkreten Vorschlag oder einen Tip in die richtige Richtung geben, wie man E-Mails versenden kann, ohne das das Sicherheitsupdate dazwischen funkt ?

Vielen Dank für eure Anregungen.

Michael


********************************

PS: Ich habe von der Seite www.freeaccess.de in der Rubrik Access Downloads eine Datenbank heruntergeladen: "e-mails versenden".

Diese Lösung greift direkt auf Windows API Funktionen zurück und soll in der Lage sein E-Mails direkt und ohne zusätzliches Hilfsprogramm E-Mails zu versenden - also ohne Outlook. Obwohl ich der Meinung bin, das ich den Code einigermaßen durchschaue und die richtigen Parameter übergebe, habe ich es nicht geschafft E-Mails an mein eigenes Postfach zu versenden.

Falls jemand weiß, ob diese Lösung praktikabel sein könnte - danke für eure Tips !

michaelkalo
28.01.2003, 10:50
Hallo Leute,

da ich noch keine Lösung habe, wollte ich das Thema ein letztes Mal mal auf den Tisch bringen.

Gibt es eine Lösung dieses Problem zu umgehen ?

Bin ich der einzige, der dieses Problem hat ?

Vielen Dank für eure Anregungen.

Michael

HLeske
31.01.2003, 07:38
Hallo Michaelkalo

Ich benutze Office 2000 und schaffe die Daten erst in eine Datei und verschiecke sie dann ohne Probleme mit Outlook.

Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.Recipient
Dim objOutlookAttach As Outlook.Attachment
Dim Pfad As String
Dim Datei As String
Dim Attachment As String

Pfad = "C:/senden/"
Datei = "test.xls"

Attachment = Pfad + Datei

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Abfrage1", Attachment, True


' Create the Outlook session.
Set objOutlook = CreateObject("Outlook.Application")

' Create the message.
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg

' Add the To recipient(s) to the message.
Set objOutlookRecip = .Recipients.Add("webmaster@ig-lgb.de")
objOutlookRecip.Type = olTo

' Add the CC recipient(s) to the message.
Set objOutlookRecip = .Recipients.Add("webmaster@ig-lgb.de")
objOutlookRecip.Type = olCC

' Set the Subject, Body, and Importance of the message.
.Subject = "Das ist ein Test"
.Body = "Das sind Daten." & vbCrLf & vbCrLf
.Importance = olImportanceHigh
'High importance

' Add attachments to the message.
If Not IsMissing(AttachmentPath) Then
Set objOutlookAttach = .Attachments.Add(Attachment)
End If

' Resolve each Recipient's name.
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
If Not objOutlookRecip.Resolve Then
objOutlookMsg.Display

End If

Next

.Send

End With

Set objOutlookMsg = Nothing
Set objOutlook = Nothing


ob das unter 97 geht kannst Du nur Testen.

gruß
Hans-Jürgen

Thomas Braun
19.09.2003, 14:30
Hallo, hatte eben dasselbe Problem und verschicke Mails jetzt so:
Das Beispiel arbeitet mit Late-Binding. Dadurch ist keine Verweis auf die Outlook-Bibliothek nötig und sollte somit unter allen Versionen laufen.

' simuliert die Funktion 'SendObject' falls die
' Outlook Sicherheitseinstellungen den Befehl unterbinden

Public Function fct_SendeMail(Optional strAn As String, _
Optional strBetreff As String, Optional strText As String, _
Optional blnBearbeiten As Boolean)
Dim objOutlook As Object
Dim objNachricht As Object

If Nz(strAn) = "" Then
MsgBox "Bitte geben Sie einen Empfänger an.", , "Fehler"
Exit Function
End If

Set objOutlook = CreateObject("Outlook.Application")
Set objNachricht = objOutlook.CreateItem(0)
With objNachricht
.To = Nz(strAn)
.Subject = Nz(strBetreff)
.Body = Nz(strText)
' ... hier evtl. noch weitere Felder definieren
If blnBearbeiten = True Then .Display Else .Send
End With

Set objNachricht = Nothing
Set objOutlook = Nothing

End Function