ingchris
Goto Top

Email versenden direkt aus Access 2010?

Hallo,

Wie kann ich direkt aus einem Access 2010 - Formular emails versenden?

Var1) z.B. eine Bestellung (Lieferantendaten vorhanden, Bestellung wird z.B. in einem Textfeld eingegeben od. automatisiert in die email übernommen)
Var2) eine email mit Anhang (word, .pdf o.ä)

Es gibt zwar z.B. bei access-paradies.de einen Mailmanager für Access (dz. aber anscheinend nur bis Access 2007 unterstützt).

Kennt jemand ein entspr. Tool, daß unter Access 2010 funktioniert (zusätzl. Anforderung: die DB soll dann auf einem Win Terminalserver 2008 R2 (64Bit) laufen.

Vielen Dank

LG IngChris

Content-ID: 151012

Url: https://administrator.de/contentid/151012

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

Berrnd
Berrnd 14.09.2010 um 21:18:57 Uhr
Goto Top
Hi,

funktioniert ziemlich einfach per Makro (senden direkt über einen SMTP Server).
Hier mal direkt eine kleines Beispiel:
Set EMail = CreateObject("CDO.Message")  
With EMail
	.From = "absender@domain.tld"  
	.To = "empfaenger@domain.tld"  
	.Subject = "Betreff"  
	.TextBody = "Mail Text......"  
	With .Configuration.Fields
		.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2  
		.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.domain.tld"  
		.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25  
		.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Benutzer"  
		.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Passwort"  
		.Update
	End With
	.Send
End With
Gruß
Bernd
IngChris
IngChris 14.09.2010 um 22:13:29 Uhr
Goto Top
Hallo Bernd

Dickes Lob. Hat auf Anhieb funktioniert; hab schon testweise ein Formular gebaut, wo ich in einem Textfeld die entspr. Nachricht übergeben kann...

- Kannst Du mir bitte noch sagen, wie man dem Anwender, der jetzt z.B. im Formular auf email senden klickt, auch noch eine Rückmeldung geben kann, daß die email auch versendet wurde (ich meine aber nicht eine Meldung die ich über Access simuliere, sobald der Programmcode zum Senden der Mail ausgeführt wurde)?

- Wie kann ich einen Anhang mitsenden?

- Hast du vielleicht eine Link zum Thema email über Access?


Vielen Dank IngChris
Berrnd
Berrnd 14.09.2010 um 22:28:11 Uhr
Goto Top
Hi,

was stellst du dir denn für eine Rückmeldung vor?
Ganz einfach z. B. 'ne Messagebox mit (direkt im makro)
MsgBox "Mail war super erfolgreich!"  
Oder du könntest dem Absender auch eine Bestätigungsmail schicken, dazu bräuchtest du halt dessen Mail Adresse.

Anhang geht mit (in Bezug auf das Snippet oben):
EMail.AddAttachment "C:\DeineDatei.pdf"  

Links/Hilfen/Anleitung zu dem Thema findest du massig -> Google:
http://goo.gl/xkku

Gruß
Bernd
IngChris
IngChris 14.09.2010 um 23:03:11 Uhr
Goto Top
hallo,


eine Meldung kann ich nach ausführen des VBA-Codes schon generieren.

Ich meinte nur, ob es noch einen späteren Zeitpunkt - z.B eine Windows-Systemroutine o.ä. gibt, die vielleich noch einen in Access auswertbaren Fehler bringt, dass die email den Rechner doch nicht verlassen hat, oder ist das ausführen meiner Senderoutine schon der letzte Zeitpunkt?

Einen Fehler kann ich zumindest auswerten, das wäre wenn z.B. keine Internetverbindung besteht, hier bekomm ich beim Ausführen meiner Senderoutine einen entspr. Laufzeitfehler (Laufzeitfehler: -2147220973. "Der Transport konnte keine Verbindung zum Server herstellen.")
Solche auswertbaren Fehler meinte ich, gibt´s von denen noch mehr ?

PS: Attachments funktionieren auch.
Zu diesem Thema hab ich noch entspr. VBA-Code gefunden, um das Dateidialog - Formular zu öffnen --> dann eine Datei auswählen, diese wird dann bei Klick auf Öffnen in ein Textfeld übernommen. Dieser Textfeldeintrag (Datei) kann dann als Attachment verwendet werden; d.h. der Dateipfad muß nicht händisch ins Textfeld eingegeben werden, sondern kann bequem über das Dateidialog-Formular gesucht und ausgewählt werden. (hat bei mir auch unter Access 2010 funktioniert).
http://support.microsoft.com/kb/888695/de

LG
Berrnd
Berrnd 15.09.2010 um 17:22:58 Uhr
Goto Top
Hi,

ja, das Ausführen der Routine ist der letzte, und einzige, Zeitpunkt, an dem die Laufzeitfehler passieren können.
Evtl. könntest du ja, wenn unbedingt nötig, vorher überprüfen ob der SMTP Server erreichbar ist (z. B. durch Ping oder so).

Ob es noch mehr definierte Laufzeitfehler der CDO-Komponente gibt, weiss ich leider grad auch nicht. Da hilft aber doch sicher Google... ;)

Gruß
Bernd
IngChris
IngChris 15.09.2010 um 22:23:34 Uhr
Goto Top
hallo,

I. Ich generiere jetzt die Meldung "email gesendet" unmittelbar nach dem .SEND-Kommando; die Ausführung des .SEND - Kommandos dauert eh einige Sekunden, dann erst wird meine Meldung "email gesendet" angezeigt. (ich nehme an, daß .Send auf ein OK vom System wartet (vielleicht aber auch nicht), wie auch immer so funktioniert´s ganz fein).

Eines möchte ich noch ergänzen:

Auf meinem TerminalServer 2008 R2 hat die email-Versendung über Access 2010 nicht sofort funktioniert:
(hier hatte ich allerdings bei SMTP, Username u. Kennwort andere Einstellungen als auf meinem Win7-Notebook und access 2010 , wo es ja auf Anhieb funktionierte)

Erst nach Einfügen des folgenden Befehl funktionierte es:
 .Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1  

Beschreibung Smtpauthenticate: gibt den Mechanismus an, der bei dem Authentifizieren an einem SMTP-Dienst über das Netzwerk verwandt wird. Mögliche Werte
--cdoAnonymous schätzt 0. Authentifizieren Sie nicht.
--cdoBasic wertet 1. Verwenden Sie grundlegende Klartext Authentifizierung. Wenn Sie diese Option verwenden, müssen Sie den Benutzername und das Kennwort durch die Sendusername- und die Sendpassword-Feld eingeben.
--cdoNTLM wertet 2. Das current process security context wird zu dem Authentifizieren mit dem Dienst verwandt.

Hoffe daß ich damit dem einen oder anderen User ein bißchen an Zeit zu ersparen kann.

Nochmals vielen Dank an Bernd.

Ich denke, wir können das Thema email über Access 2010 generieren als gelöst betrachten

LG IngChris
moinAuch
moinAuch 18.05.2011 um 18:46:39 Uhr
Goto Top
Hallo Bernd,

sehr schöne Lösung, funktionier sehr gut. Ich habe aber noch mal ne Frage bezüglich der Sicherheit. Wo schicke ich da meine Emaildaten(u.a. ja auch Passwort) hin? Was ist "schemas.microsoft.com"? kann ich mir sicher sein das MS diese Daten nicht zweckentfremdet? Evtl. weißt du was dazu.

Schon mal Danke und Grüße
Berrnd
Berrnd 18.05.2011 um 19:23:22 Uhr
Goto Top
Hi,

du schickst deine Daten nirgendwo hin! ;)
Die URL definiert lediglich einen Namespace, mehr dazu z. B. hier http://msdn.microsoft.com/en-us/library/ms872853(v=exchg.65).aspx

Viele Grüße
Bernd
moinAuch
moinAuch 18.05.2011 um 19:51:37 Uhr
Goto Top
Hallo Bernd,

vielen Dank für deine schnelle Antwort.
Auch wenn ich die Angabe des Namespace in Form einer http-Adresse irgendwie iritierend finde.

Aber evtl. kann ich dir noch eine Frage stellen:

Ich hatte bis jetzt meine Mails aus Access heraus nach Outlook geschickt und von dort versendet. Allesdings funktioniert dies nicht mehr mit dem 64 Bit System.
Weißt du ob es für 64 Bit auch eine Outlook Lösung gibt?

Danke noch mal, Gruß

Andi
Berrnd
Berrnd 18.05.2011 um 20:05:54 Uhr
Goto Top
Hi,

das weiß ich leider nicht, mit Outlook hab ich das noch nie gemacht...
Die 64-bit Office Version wird ja von Microsoft für den "normalen Gebrauch" eh nicht empfohlen...

Viele Grüße
Bernd
pwakolbi
pwakolbi 20.09.2013 um 12:52:39 Uhr
Goto Top
Hallo Bernd!
Ich bin neu hier und bitte um deinen Hilfe:

Ich habe deinen Betrag gelesen und auch versucht zu realisieren.
Ich komme aber nicht ganz klar. Meinst du mit "Makro" ein Makro oder einen VBA-Cod?
Ich möchte einen Access-Bericht ohne Outlook versenden.
Meine bisherigen Bemühungen waren nur bedingt funktionsfähig.
Ich bin dann zufällig auf deinen Eintrag gekommen.


mfg

Peter
Berrnd
Berrnd 20.09.2013 um 14:32:34 Uhr
Goto Top
Hi,

ich denke du bringst da grundlegend was durcheinander oder ich versteht deine Frage nicht.

Makros sind Funktionen oder Prozeduren.
Das da oben ist nichts fertiges, sondern nur ein Schnipsel.
Makros kann man in Office nur in "Visual Basic for Applications" schreiben.
Den passenden Editor kannst du mit Alt + F11 starten.

Vielleicht hilft das ja.
Ansonsten einfach ganz am Anfang der Hilfe oder eines beliebigen Tutorials anfangen, nicht böse gemeint.

Viele Grüße,
Bernd