"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

E-Mails aus MS Access versenden

JonnyB 15.09.2003 - 20:01 1377 14
Posts

JonnyB

Blutiger Neubei
Registered: Mar 2001
Location: Leoben
Posts: 656
Folgende Knobelei steht bei mir derzeit an:
In einer Access 2000-Datenbank sind Adressdaten (inkl. E-Mail-Adressen) gespeichert. Um die Daten auf Aktualität prüfen zu lassen sollen die Daten den betreffenden Personen per E-Mail zugeschickt werden. Jede Person soll also nur ihre eigenen Daten zugeschickt bekommen. Da es sich um > 700 Datensätze handelt sollte möglichst wenig manueller Aufwand bei der Bedienung nötig sein.
Praktisch wäre also eine Lösung per VBA direkt in Access, falls das aber nicht funktioniert, dann könnte ich mir auch einen Export in eine Datei (z.B. .csv) und Bearbeitung/Versand per externem Programm oder Script vorstellen (bevorzugt VBA, Perl oder ähnliches da ich mich damit schon etwas intensiver beschäftigt habe, notfalls muß ich mich ein wenig einarbeiten).
Hat wer kreative Vorschläge? Bis jetzt hab ich nicht wirklich brauchbare Infos zu dem Thema gefunden, meistens geht's um Massenmailings mit dem gleichen Text für alle Empfänger (in diesem Fall leider völlig nutzlos).
Vielen Dank!

murcielago

Dr. Doom
Avatar
Registered: Oct 2002
Location: *
Posts: 2689
mach a neue odbc-datenquelle dann kannst mit php (ev. perl?) ganz einfach alle adressen durchgehen und mailen.

JonnyB

Blutiger Neubei
Registered: Mar 2001
Location: Leoben
Posts: 656
Zitat von murcielago
mach a neue odbc-datenquelle dann kannst mit php (ev. perl?) ganz einfach alle adressen durchgehen und mailen.

Muß zu meiner Schande gestehen, daß ich mich mit ODBC bisher überhaupt nicht beschäftigt habe. Werd mir das jetzt aber mal genauer anschaun. Vielen Dank schon mal für den Tip!

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
imho kann man mit vba eh wunderbar emails verschicken...

stichwort "SendObject" ;)

murcielago

Dr. Doom
Avatar
Registered: Oct 2002
Location: *
Posts: 2689
ok, kenn mich mit vba genau 0 aus.

Frys_Assassin

information keeper
Avatar
Registered: Oct 2001
Location: New New York
Posts: 2503
mit asp (eigentlich eh VBA ähnlich, aber halt skriptsprache) ziemlich simpel.
zB

Daten=DBConn.execute("SELECT * FROM tabelle WHERE Kürzel = 'mb'")
'das is halt die datenbank connection, da will ich jetzt net auf details eingehen

strTo=Daten("Empfaenger")
strFrom="Frys_Assassin"
strSubject="Massenmail Nr. " & Daten("Nr")
strMemo="Folgende Daten sind eingetragen:" & chr(13)
strMemo=strMemo & Daten("Bla") & chr(13)
'Ich tu immer der Übersichtlichkeit die DAten zwischensppeichern

Set objMail=Server.CreateObject("CDONTS.Newmail")
'mittels ASP das Mail-Object generieren

objMail.From=strFrom
objMail.To=strTO
objMail.Subject=strSubject
objMail.Body=strMemo
objMail.Send
'alle daten initialisieren und abschicken

das ganze dann in einer endlosschleife für alle Datensätze in der struktur "Daten" und fertig

hab das thema jetzt aber nur grob umrissen, für details empfehle ich ein kleines selbststudium im internet :)

edith: möglich dass du eh die selbe syntax auch im vba übernehmen kannst, ich weiss es aber net ;)
Bearbeitet von Frys_Assassin am 15.09.2003, 20:33

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von murcielago
ok, kenn mich mit vba genau 0 aus.
vba hat nen grindigen object-tree, is aber sonst wie vb - dazu kommt halt noch dass die doku keine struktur hat, aber sonst is top :rolleyes:

JonnyB

Blutiger Neubei
Registered: Mar 2001
Location: Leoben
Posts: 656
Hmmm ... SendObject in VBA hatte ich mir eigentlich schonmal angeschaut, aber da war ich offenbar ein bisserl blind. :bash:
Klingt eigentlich relativ brauchbar, werd mir das noch genauer zu Gemüte führen.
Danke fürs Input!

Bimminger

christoph-bimminger.at
Avatar
Registered: Nov 2001
Location: Linz
Posts: 684
wenns was einmaliges is würd is viel simpler machen - ohne coden...

hmmm export in xls... dann mit word an serienbrief erstellen - da müssts gehn den als serien-email versenden wenn i mi richtig erinnere.
dann kommts halt irgendwie als word an - evtl gibts da nu a "NUR TEXT" funktion. habs aba nu nie braucht, alles nur vermutungen.

mfG
CB

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
wo is das problem?

du holst dir ein outlook object und erstellst deine mailobjects und schickst die dann weg (bzw. du kannst sie ja in einen outlook ordner speichern lassen). über dieses thema gibt es genug tutorials..

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von mat
wo is das problem?

du holst dir ein outlook object und erstellst deine mailobjects und schickst die dann weg (bzw. du kannst sie ja in einen outlook ordner speichern lassen). über dieses thema gibt es genug tutorials..
muss man nicht outlook haben um aufs outlook-object zugreifen zu können? :rolleyes:

haemma

SSD FTW!
Registered: Feb 2003
Location: wean
Posts: 1780
hab sowas auch mal gemacht - vielleicht hilft dir dieser code weiter - ist aber für lotus notes R5 abgestimmt - aber kannst sicher für outlook umwandeln....



Private Function subSendNotesMail(Subject As String, Attachment As String, ByRef recipient As String, BodyText As String, SaveIt As Boolean)
' http://www.lotus.com/products/lotusscript.nsf/
'http://www.lotus.com/products/lotusscript.nsf/Notes%204.6%20Classes?OpenNavigator
'Set up the objects required for Automation into lotus notes
Dim Maildb As Object 'The mail database
Dim UserName As String 'The current users notes name
Dim MailDbName As String 'THe current users notes mail database name
Dim MailDoc As Object 'The mail document itself
Dim AttachME As Object 'The attachment richtextfile object
Dim session As Object 'The notes session
Dim EmbedObj As Object 'The embedded object (Attachment)
Dim version

Set session = CreateObject("Notes.NotesSession") 'Start a session to notes

version = session.NotesVersion


'Get the sessions username and then calculate the mail file name
UserName = session.UserName
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
'MailDbName = session.GetEnvironmentString("MailFile", True) ' Alternative zur Zeile darüber

'Open the mail database in notes
Set Maildb = session.GetDatabase("", MailDbName)


If Maildb.IsOpen = True Then
'Already open for mail
Else
Maildb.OPENMAIL
End If

'Set up the new mail document
Set MailDoc = Maildb.CreateDocument
MailDoc.Form = "Memo"

MailDoc.sendto = recipient

MailDoc.Subject = Subject
'MailDoc.Body = BodyText

MailDoc.SaveMessageOnSend = SaveIt

Set AttachME = MailDoc.CreateRichTextItem("Body")
AttachME.AppendText (BodyText)
Call AttachME.AddNewLine(2)


'Set up the embedded object and attachment and attach it
If Attachment <> "" Then
Set EmbedObj = AttachME.EmbedObject(1454, "", Attachment, "Body")
'MailDoc.CREATERICHTEXTITEM ("Attachment")
End If

Call AttachME.AddNewLine(1)

Set richStyle = session.CreateRichTextStyle
richStyle.FontSize = 10
richStyle.NotesColor = blue
Call AttachME.AppendStyle(richStyle)
Call AttachME.AppendText("Mit freundlichen Grüßen")
Call AttachME.AddNewLine(2)

richStyle.FontSize = 10
richStyle.Bold = True

Call AttachME.AppendStyle(richStyle)
Call AttachME.AppendText("")
Call AttachME.AddNewLine(1)

richStyle.NotesColor = red
richStyle.Bold = False
Call AttachME.AppendStyle(richStyle)
Call AttachME.AppendText("")
Call AttachME.AddNewLine(1)

richStyle.FontSize = 8
richStyle.NotesColor = blue
Call AttachME.AppendStyle(richStyle)

AttachME.AppendText ("Tel: " & "")
Call AttachME.AddNewLine(1)
AttachME.AppendText ("Fax: " & ")
Call AttachME.AddNewLine(1)
AttachME.AppendText ("e-mail: protected")
Call AttachME.AddNewLine(1)


'Send the document
MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items folder
'MailDoc.Send 0, recipient

MailDoc.Send True

'Clean Up
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set session = Nothing
Set EmbedObj = Nothing
End Function

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
wer access hat.. sollt outlook auch haben - das IMO die leichteste variante.

du kannst auch eine c++ COM DLL machen und über SMTP mails wegschicken..

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von mat
wer access hat.. sollt outlook auch haben - das IMO die leichteste variante.

du kannst auch eine c++ COM DLL machen und über SMTP mails wegschicken..
stimmt schon, aber ich versteh sowieso nicht warum der thread wieder ausgegraben wurde, er hat sich nimmer gemeldet, also nehm ich an er hats hinkriegt...

JonnyB

Blutiger Neubei
Registered: Mar 2001
Location: Leoben
Posts: 656
Entschuldigt, daß ich mich so lang nimmer gemeldet hab, hab das Problem klassisch verdrängt, aber langsam wird's eh akut. :rolleyes:
Danke nochmal für die zahlreichen Beiträge, werd das Listing von haemma mal genauer unter die Lupe nehmen und ausprobieren. Auf dem Rechner, von dem die Mails wahrscheinlich verschickt werden, ist übrigens kein Outlook installiert (wohl aber Access), weil ich persönlich kein rechter Freund von Outlook bin (und schon garnicht auf einem Rechner den einige DA.... sagen wir mal wenig computererfahrene User nutzen). Im dümmsten Fall bleibt mir eh nur der Export in ein oder mehrere Textfiles und anschließender Versand per Shellscript unter Linux oder derartiges, irgendwie sollte es aber auf alle Fälle schaffbar sein. Leider wird das aber keine einmalige Aktion werden sondern soll in regelmäßigen Abständen (zumindest jährlich) durchgeführt werden. Daher wär mir halt eine möglichst simple und komfortable Variante direkt aus Access am liebsten (Idealfall: Klick und Tschüß!).
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz