Springen naar inhoud


- - - - -

Mailen Vanuit Access


  • Log in a.u.b. om te beantwoorden
Er zijn 16 reacties in dit onderwerp

#1 Stan

Stan

    Starting Developer

  • Leden
  • 18 berichten
    Laatst bezocht 23 okt 2012 15:54

Geplaatst op 18 oktober 2012 - 20:03

Hallo
ik wil mails versturen op basis van emailadressen die in access staan.
Ook het onderwerp en de tekst van de body moeten vanuit access meegegeven kunnen worden.
En tenslotte wil ik dat een file die op een welbepaalde plaats op mijn PC staat mee verzonden wordt.
Als er geen file staat mag er geen mail verzonden worden.

Heeft iemand een handleiding of tips hoe ik hieraan begin.
Weet dat het kan meer heb geen idee hoe.
Heb zitten zoeken op de site maar zie niet direct iets bruikbaar.

Mvg,Stan

#2 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 28 mei 2019 18:00
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 19 oktober 2012 - 04:30

Mail verzenden via vba in access met attachment zou zo kunnen.:

Visual Basic Code:
Sub SendMail
	Dim OutApp As Object
	Dim OutMail As Object

	Set OutApp = CreateObject("Outlook.Application")
	OutApp.Session.Logon

	Set OutMail = OutApp.CreateItem(0)
	With OutMail
		.To = "me@company.com"
		.Subject = "Testfile"
		.Body = "Hi! This is a test message"

		.Attachments.Add "c:\temp\database.mdb"

		.Send
	End With

	Set OutMail = Nothing
	Set OutApp = Nothing
End Sub


#3 Vozzie

Vozzie

    Moderator

  • Leden
  • PipPipPipPipPipPipPip
  • 1855 berichten
    Laatst bezocht 12 jul 2017 13:15
Inzender

Geplaatst op 19 oktober 2012 - 11:11

Hi,

Voorbeeld van Pascal maakt gebruik van Outlook. Je kan ook gebruik maken van

CDO in VBA) http://www.rondebruin.nl/cdo.htm

Of van de Mail API (MAPI)

MAPI in VBA) http://www.vbaexpres...e.php?kb_id=311

Groetjes

#4 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 28 mei 2019 18:00
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 19 oktober 2012 - 12:22

Inderdaad dat zou ook kunnen wat Vozzie vermeld.
Maar ja je weet de gezegde, er zijn vele wegen die naar Rome leiden, de kunst is de goede te vinden. ;)

#5 Vozzie

Vozzie

    Moderator

  • Leden
  • PipPipPipPipPipPipPip
  • 1855 berichten
    Laatst bezocht 12 jul 2017 13:15
Inzender

Geplaatst op 19 oktober 2012 - 13:01

Het zal afhangen van wat hij wil, inderdaad.

Heeft hij een "Office Outlook" geconfigureerd -> Outlook.Application
Heeft hij een MailServer in't netwerk die hij wil gebruiken buiten Outlook -> CDO
En ik geloof dat MAPI werkt met de "windows default mail client", dus zowel Outlook als Outlook Express
....

Nog mogelijkheden zijn ,...

Je kan ook altijd met Sockets werken en zelf het SMTP protocol implementeren, niet zo moeilijk,... (voorbeeldje onder tutorials/vbscript). Of het IMAP protocol, wat wel iets moeilijker is...

Of een third party component gebruiken is ook altijd een (minder aangewezen) mogelijkheid.

Voor elk wat wils :)

#6 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 28 mei 2019 18:00
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 19 oktober 2012 - 13:04

Of in uiterste geval een postduif :P

#7 Stan

Stan

    Starting Developer

  • Leden
  • 18 berichten
    Laatst bezocht 23 okt 2012 15:54

Geplaatst op 19 oktober 2012 - 13:56

Hallo iedereen,

Bedoeling is dus dat ik mails verstuur met behulp van outlook.
Heb de geposte code geprobeerd maar kom er niet uit.
Mailadres, onderwerp, tekst van de mail en bijlage moeten op basis van een tabel gebruikt worden.
Bovendien moet ik voor alle contactpersonen gelijktijdig een mail verzonden met voor elk een verschillende pdf in bijlage.
En als het even kan zo er geen mail mogen verzonden worden als de bijlage niet bestaat of niet of zijn plaats staat.
Ten slotte zou ik nog willen kunnen instellen dat sommige mails eerst getoond worden voor ze verzonden worden zodat ik steekproeven kan doen.

Iemand een oplossing?

Mvg,

Stan

Ps: een mail maken lukt maar de bijlage en de andere dingen lukken nog niet.

#8 Stan

Stan

    Starting Developer

  • Leden
  • 18 berichten
    Laatst bezocht 23 okt 2012 15:54

Geplaatst op 19 oktober 2012 - 14:39

Hallo,

Hieronder de code die ik tot nu toe heb gefabriceerd.
Mailen gaat dus. alleen moet ik mail per mail versturen en zou ik graag veel mails met 1 druk op de knop verzenden.
Kan ik dit loopen? en hoe doe ik dat?
En de bijlage lukt ook nog niet.

Visual Basic Code:
Sub SendMessage(strRecipient As String, strSubject As String, varBody As Variant, Optional strCC As String, Optional AttachmentPath)
On Error GoTo Err_subSendMessage
If Not (varBody > " ") Then
	MsgBox "Geef de tekst op voor het e-mail bericht."
	Exit Sub
End If
Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.Recipient
Dim objOutlookAttach As Outlook.Attachment
Dim SigString As String
Dim Signature As String
	Signature = GetBoiler("C:\Users\Fujitsu\AppData\Roaming\Microsoft\Handtekeningen\SoDesk.htm") 'GetBoiler("C:\Users\Stan\AppData\Roaming\Microsoft\Handtekeningen\Standaard.htm")
		
' Maak de Outlook-sessie.
Set objOutlook = CreateObject("Outlook.Application")
' Maak het bericht.
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
' Voeg de geadresseerden voor het vak Aan toe aan het bericht.
Set objOutlookRecip = .Recipients.Add(strRecipient)
objOutlookRecip.Type = olTo
' Voeg de geadresseerden voor het vak CC toe aan het bericht.
If strCC > " " Then
Set objOutlookRecip = .Recipients.Add(strCC)
objOutlookRecip.Type = olCC
End If
' Stel het onderwerp, de berichttekst en de urgentie voor het bericht in.
.Subject = strSubject
.HTMLBody = varBody & Signature
'Stel eventueel in dat het bericht urgent is (hier uitgezet)
'.Importance = olImportanceHigh 'Hoge urgentie
' Voeg bijlagen toe aan het bericht.
If Not IsMissing(AttachmentPath) Then
Set objOutlookAttach = .Attachments.Add(AttachmentPath)
End If
' Zet de naam van elke geadresseerde om.
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
If Not objOutlookRecip.Resolve Then
objOutlookMsg.Display
End If
Next
'Verstuur het e-mail bericht
.Send
End With
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
Exit_subSendMessage:
Exit Sub
Err_subSendMessage:
MsgBox Error
Resume Exit_subSendMessage
End Sub
Function GetBoiler(ByVal sFile As String) As String
'Dick Kusleika
	Dim fso As Object
	Dim ts As Object
	Set fso = CreateObject("Scripting.FileSystemObject")
	Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
	GetBoiler = ts.readall
	ts.Close
End Function



#9 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3598 berichten
    Laatst bezocht 25 jul 2019 15:42
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 19 oktober 2012 - 14:46

Ik denk dat een simpele if then else het wel moet lukken Stan.

Visual Basic Code:
		If CheckAtt() Then
			'// send mail
		Else
			'// attachement don't exist, don't send mail
		End If




Visual Basic Code:
	Private Function CheckAtt() As Boolean
		CheckAtt = My.Computer.FileSystem.FileExists("C:\Test.txt")
	End Function



#10 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3598 berichten
    Laatst bezocht 25 jul 2019 15:42
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 19 oktober 2012 - 14:54

Moet natuurlijk Access zijn en niet .net

Visual Basic Code:
Private Sub Command0_Click()
		If Not CheckAtt() = "" Then
			'// send mail
			MsgBox ("Send mail")
		Else
			'// attachement don't exist, don't send mail
			MsgBox ("No attachement")
		End If
End Sub
Private Function CheckAtt() As String
	   CheckAtt = Dir("c:\blabla.txt")
End Function




#11 Vozzie

Vozzie

    Moderator

  • Leden
  • PipPipPipPipPipPipPip
  • 1855 berichten
    Laatst bezocht 12 jul 2017 13:15
Inzender

Geplaatst op 19 oktober 2012 - 16:17

Bericht bekijkenpascalbianca, op 19 oktober 2012 - 13:04, zei:

Of in uiterste geval een postduif :P
lol :) digital pigeon -> https://digitalpigeon.com/

#12 Stan

Stan

    Starting Developer

  • Leden
  • 18 berichten
    Laatst bezocht 23 okt 2012 15:54

Geplaatst op 22 oktober 2012 - 15:06

Hallo

Het maken van de mails met onderwerp, tekst en bijlage toevoegen lukt me op dit moment.
Nu alleen nog alle mails te gelijk met 1 opdrachtknop versturen.
Ik heb dus een rapport waar alle gegevens komen in te staan.
Als ik een verzendknop maak krijg ik voor elke lijn een opdrachtknop.
Dit is uiteraard niet de bedoeling. Ik wil 1 knop waarbij alle mails aan alle geadresseerden te gelijk worden verzonden.
Iemand een idee?

Mvg,

Stan

#13 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3598 berichten
    Laatst bezocht 25 jul 2019 15:42
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 22 oktober 2012 - 15:37

ik veronderstel met een loop je data (tabel) doorlopen en je Sendmessage aanspreken
Misschien ook een sleep ertussen zetten zodat je mailserver niet overbelast raakt (als het over echt vele mails gaat)

greetzzz.

Code:

loop data
	Sub SendMessage(strRecipient As String, strSubject As String, varBody As Variant, Optional strCC As String, Optional AttachmentPath)   
	'// eventueel timer sleep ?
End loop




#14 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3598 berichten
    Laatst bezocht 25 jul 2019 15:42
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 22 oktober 2012 - 15:42

Een voorbeeldje van Jenny
Al is het natuurlijk wat gissen aangezien we niet weten hoe je datastructuur in elkaar zit.

greetzzz

http://www.vbib.be/i...set/#entry49650

#15 Stan

Stan

    Starting Developer

  • Leden
  • 18 berichten
    Laatst bezocht 23 okt 2012 15:54

Geplaatst op 23 oktober 2012 - 15:04

Hallo

Alvast bedankt voor de reacties. Ben me suf aan het zoeken maar geraak er niet uit.
Heb dus een tabel in access met emailadressen, tekst voor de mail, onderwerp, enz.
Er staat ook een pad naar een file die ik wil bijvoegen.
Heb dan een formulier gemaakt met deze gegevens een een knop om het mailen te activeren.
Heb echter nog 2 problemen:
Probleem 1:
Wil niet 1 maar meerdere bestanden toevoegen. Moet dus kunnen verwijzen naar een map zodat alle bestanden in die map worden toegevoegd.
Probleem 2:
Er moeten meerdere mails naar meedere ontangers worden gemaild. de knop die ik heb gemaakt werkt maar voor 1 gegevenslijn.
Ik wil echter 1 knop waarbij alle mails worden verzonden.
Graag hulp want ik kan niet rusten tot ik het gevonden heb.

Hieronder mijn huidige code die ik gebruik voor de module en onderdaan de code voor de knop:

Module:
Visual Basic Code:
Option Compare Database

Sub SendMessage(strRecipient As String, strSubject As String, varBody As Variant, Optional strCC As String, Optional AttachmentPath)
On Error GoTo Err_subSendMessage
DoCmd.SetWarnings False
If IsNull(varBody) Then
MsgBox "Geef de tekst op voor het e-mail bericht."
Exit Sub
End If

Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.Recipient
Dim objOutlookAttach As Outlook.Attachment
Dim SigString As String
Dim Signature As String
Signature = GetBoiler("C:\Users\Fujitsu\AppData\Roaming\Microsoft\Handtekeningen\SoDesk.htm") 'GetBoiler("C:\Users\Stan\AppData\Roaming\Microsoft\Handtekeningen\Standaard.htm")
' Maak de Outlook-sessie.
Set objOutlook = CreateObject("Outlook.Application")
' Maak het bericht.
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
' Voeg de geadresseerden voor het vak Aan toe aan het bericht.
Set objOutlookRecip = .Recipients.Add(strRecipient)
objOutlookRecip.Type = olTo
' Voeg de geadresseerden voor het vak CC toe aan het bericht.
If strCC > " " Then
Set objOutlookRecip = .Recipients.Add(strCC)
objOutlookRecip.Type = olCC
End If
' Stel het onderwerp, de berichttekst en de urgentie voor het bericht in.
.Subject = strSubject
.HTMLBody = varBody & Signature
'Stel eventueel in dat het bericht urgent is (hier uitgezet)
'.Importance = olImportanceHigh 'Hoge urgentie
' Voeg bijlagen toe aan het bericht.
If Not IsMissing(AttachmentPath) Then
Set objOutlookAttach = .Attachments.Add(AttachmentPath)
End If
' Zet de naam van elke geadresseerde om.
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
If Not objOutlookRecip.Resolve Then
objOutlookMsg.Display
End If
Next
'Verstuur het e-mail bericht
.Send
End With
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
Exit_subSendMessage:
Exit Sub
Err_subSendMessage:
MsgBox Error
Resume Exit_subSendMessage
End
End Sub

Function GetBoiler(ByVal sFile As String) As String
'Dick Kusleika
	Dim fso As Object
	Dim ts As Object
	Set fso = CreateObject("Scripting.FileSystemObject")
	Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
	GetBoiler = ts.readall
	ts.Close
End Function

'//Opdrachtknop:

Option Compare Database

Private Sub Knop13_Click()
On Error GoTo foutafhandeling
Dim strAdres As String
strAdres = Adres
Dim strCC As String
strCC = CC
Dim strOnderwerp As String
strOnderwerp = Onderwerp
Dim vartekst As Variant
vartekst = Tekst
Dim StrBijlage As String
StrBijlage = Bijlage
SendMessage strAdres, strOnderwerp, vartekst, strCC, StrBijlage
Exit_foutafhandeling:
On Error GoTo 0
Exit Sub
foutafhandeling:
Select Case Err.Number
Case Is = 94
MsgBox "Vul de betreft gegevens in."
Exit Sub
Case Else
MsgBox Err.Number & " " & Err.Description
Resume Next
End Select
End Sub



#16 Riana

Riana

    Starting Developer

  • Leden
  • 1 berichten
    Laatst bezocht 25 jan 2019 19:29

Geplaatst op 11 januari 2019 - 15:18

Hallo,  ik heb dit gesprek van 2012 gevonden toen ik op zoek was om hetzelfde probleem op te lossen.  Ik heb - met de zeer beperkte VB kennis die ik heb - geprobeerd om de code van Stan te gebruiken op mijn eigen access databank maar dit lukt mij niet.  Kan iemand mij hierbij helpen ?  Hieronder wat meer gegevens.

In de mail (outlook 2016) moeten volgende elementen komen die in een query zitten :
- 'from' : vast administratief e-mailadres
- 'to':1 e-mailadres dat is opgeslagen in de db
- 'subject' : deel vaste tekst en deel 'volgnummer' dat komt uit de db
- 'body' : deel vaste tekst en een aantal elementen uit de db nl 'volgnummer', 'bedrag' en een aantal foutmeldingen die betrekking hebben op dat specifiek volgnummer en die als bullets onder elkaar moeten worden opgesomd
- 'signature' : vaste handtekening

De mail moet geactiveerd worden vanuit een button in een formulier.  

Alvast heel hartelijk bedankt !

#17 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 656 berichten
    Laatst bezocht 15 aug 2019 14:33
  • LocatieMechelen (BE)

Geplaatst op 15 januari 2019 - 19:48

Ik heb een tijd geleden zoiets opgezocht voor via Excel te mailen, code is nog geen 20 lijnen lang en mailt via outlook. Nu dat is wel VBA code maar grote delen komen overeen met VB
https://powerspreads...mail-excel-vba/




0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)