Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Vanuit access een mail versturen incl. ontvanger mail

Pagina: 1
Acties:
  • 4.965 views

  • Snoll3bulk
  • Registratie: Augustus 2005
  • Laatst online: 19-03 11:03
Hallo,

Ik ben bezig om via Access een mail te versturen met een rapport in html formaat als bijlage. Dit is gelukt via een wizard "mail verzenden" op een knop.

Nu is mijn vraag, hoe zet ik er automatisch een mail ontvanger en afzender bij, een bericht, en bijvoorbeeld een onderwerp. De code die bij de knop staat:

Private Sub cmdMailPerKlas_Click()
On Error GoTo Err_cmdMailPerKlas_Click
Dim stDocName As String
stDocName = "repKlasOverzicht"

DoCmd.SendObject acReport, stDocName

Exit_cmdMailPerKlas_Click:
Exit Sub
Err_cmdMailPerKlas_Click:
MsgBox Err.Description
Resume Exit_cmdMailPerKlas_Click
End Sub


Nu had ik dit gevonden op een site:

DoCmd.SendObject _
acSendReport, _
"Sales By Order", _
acFormatRTF, _
"ToJohn@doe.com", _
, _
, _
"Subject", _
"Message", _
False


Nu lukt het me dus niet om de ontvanger toe te voegen. Weet iemand hoe ik dit bij de code van de knop kan zetten?

  • JohnD
  • Registratie: December 2001
  • Laatst online: 15-11 18:44

JohnD

Bernd

DoCmd.SendObject acReport, stDocName, acFormatHTML, "bla@bla.nl", , , "onderwerp"

Fear thy name as hell awakens
FKA SunStorms_Sletje


  • Snoll3bulk
  • Registratie: Augustus 2005
  • Laatst online: 19-03 11:03
DoCmd.SendObject acReport, stDocName, acFormatHTML, "bla@bla.nl", , , "onderwerp"

Ik krijg hierdoor een foutmelding, namelijk:

The Object Type argument for the action or method is blank or invalid.

Wat doe ik fout?

  • Witte
  • Registratie: Februari 2000
  • Laatst online: 15-10 13:46
Heb je wel een standaard mail-client in je windows? Deze methode "leent" je mail client.
Met Outlook-Express werkt deze methode prima, met Outlook minder, omdat er een vraag aan je gesteld wordt dat een extern programma via Outlook wil mailen.

Houdoe


  • Snoll3bulk
  • Registratie: Augustus 2005
  • Laatst online: 19-03 11:03
Witte schreef op donderdag 23 oktober 2008 @ 11:43:
Heb je wel een standaard mail-client in je windows? Deze methode "leent" je mail client.
Met Outlook-Express werkt deze methode prima, met Outlook minder, omdat er een vraag aan je gesteld wordt dat een extern programma via Outlook wil mailen.
Het is gelukt, nu heb ik nog een vraag hoe je zeg maar bij de ontvanger een email adres in kan vullen die uit een tabel wordt gehaald automatisch. Kan dit?

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Vast, gebruik een parameter, vul die met het resultaat van een query, klaar. Ik ken Access amper, maar dat lijkt me iets dat wel kan worden gebouwd met kennis over Access. Waar loop je vast?

Anyway, CSA => OFF.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Witte
  • Registratie: Februari 2000
  • Laatst online: 15-10 13:46
Ongeveer zo:

code:
1
2
3
4
5
sub mailsturen (ID as long)
  dim ontvanger as string
  ontvanger = nz (dlookup("emailadres","tblTabel","ID = " & ID), "")
  if ontvanger <> "" then DoCmd.SendObject acReport, stDocName, acFormatHTML, ontvanger, , , "onderwerp"
end sub


waarbij je uiteraard zorgt dat stDocName goed staat, en ID het uniek nummer is van de record is uit je tabel naar wie je wil mailen.

Houdoe


  • Snoll3bulk
  • Registratie: Augustus 2005
  • Laatst online: 19-03 11:03
Het mailen is nu gelukt, bedankt hiervoor.

Nu heb ik een andere vraag. Ik heb zeg maar een dropdown menu met KlasID, Klasnaam, Email(tutor)
Nu wil ik zeg maar als ik een klas selecteer dat automatisch, na het drukken op de knop mailen, het email adres van de juiste tutor wordt ingevuld in outlook. Dit lukt bijna alleen dit is het probleem:

Dim stDocName As String
Dim email As String

cboKlas.SetFocus
email = cboKlas.Value

Dit is de code die ik gebruik. Wat er nu gebeurt is dat het programma gewoon de waarde van het dropdown menu kopieert naar het email venster. Wat er dus moet gebeuren is dat hij de waarde van een andere kolom kopieert (email tutor). Hoe kan je dit doen?

Voorbeeld van wat ik bedoel:

cboKlas.SetFocus
email = cboKlas.Value(colum2)


zoiets....

  • Witte
  • Registratie: Februari 2000
  • Laatst online: 15-10 13:46
Bijna goed:
email = cboKlas.column(2)

Let op, Access begint met 0 te tellen (d.w.z. de eerste kolom is kolom 0)

Houdoe


  • Snoll3bulk
  • Registratie: Augustus 2005
  • Laatst online: 19-03 11:03
Bedankt het werkt! Hij haalt nu het email adres uit de goede kolom.

Heb nog een vraagje:

Nu wil ik aan het eind van de week de resultaten van alle klassen mailen naar de correcte tutor die die klassen heeft.

Wat er dus moet gebeuren is dat als je op een knop drukt dat het programma dan kijkt bij welke tutor welke klas hoort. Ik zit zelf te denken om dit te doen met een soort van LOOP. Wat er dan uiteindelijk moet gebeuren is een mail naar één tutor met meerdere bijlagen (Klassen). Hoe zou ik dit kunnen doen?

  • Witte
  • Registratie: Februari 2000
  • Laatst online: 15-10 13:46
Snoll3bulk schreef op dinsdag 28 oktober 2008 @ 11:10:
Bedankt het werkt! Hij haalt nu het email adres uit de goede kolom.

Heb nog een vraagje:

Nu wil ik aan het eind van de week de resultaten van alle klassen mailen naar de correcte tutor die die klassen heeft.

Wat er dus moet gebeuren is dat als je op een knop drukt dat het programma dan kijkt bij welke tutor welke klas hoort. Ik zit zelf te denken om dit te doen met een soort van LOOP. Wat er dan uiteindelijk moet gebeuren is een mail naar één tutor met meerdere bijlagen (Klassen). Hoe zou ik dit kunnen doen?
Helaas, dit kan zo niet. Je zou natuurlijk een rapport kunnen maken, gegroepeerd op tutor, en daarna verder groeperen en sorteren. Kortom, 1 rapport creeeren waar je alles in steekt.

Of je gebruikt de methode:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub TestMail()
Dim objApp      As Outlook.Application
Dim l_Msg       As MailItem

Set objApp = CreateObject("Outlook.Application")
Set l_Msg = objApp.CreateItem(olMailItem)
 
  l_Msg.Attachments.Add Attachment1
  l_Msg.Attachments.Add Attachment2
  
  l_Msg.HTMLBody = "Mailtekst"
  l_Msg.Subject = "Onderwerp"
  l_Msg.To = "mailadres"
  l_Msg.CC = ""
  l_Msg.Close (olSave)
  
  l_Msg.Send
  
  Set objApp = Nothing
  Set l_Msg = Nothing

End Sub


Hier kleven een aantal nadelen aan:
* Je moet de Outlook-bibliotheek toevoegen
* De attachments zijn fysieke bestanden zijn
* Outlook vraagt de gebruiker om bevestiging dat het "mag"

Houdoe


  • Snoll3bulk
  • Registratie: Augustus 2005
  • Laatst online: 19-03 11:03
Heb nu deze code gebruikt. Deze werkt zo dat er een bestand wordt aangemaakt met als bestandsnaam de klas en hij mailt het daarna naar de tutor. Hierna wordt het bestand weer van de schijf verwijderd.

Private Sub cmdMailPerKlas_Click()
Dim objApp As Outlook.Application
Dim l_Msg As MailItem
Dim bdatum As String
Dim edatum As String

txtBeginDatum.SetFocus
bdatum = txtBeginDatum
txtEindDatum.SetFocus
edatum = txtEindDatum

strFilePath = "C:\" + cboKlas.Column(1) + ".html"

DoCmd.OutputTo acReport, "repOverzichtperKlas", acFormatHTML, strFilePath

Set objApp = CreateObject("Outlook.Application")
Set l_Msg = objApp.CreateItem(olMailItem)

With l_Msg
.To = cboKlas.Column(2)
.Subject = cboKlas.Column(1) + " - Week: " + bdatum + " t/m " + edatum
.Body = "Dit is een weekoverzicht van de klas " + cboKlas.Column(1) + " van de week " + bdatum + " t/m " + edatum
.Attachments.Add strFilePath
'.Display
.Send
End With

Set objApp = Nothing
Set l_Msg = Nothing

If Dir(strFilePath) <> "" Then Kill strFilePath

End Sub


Nu is mijn vraag, ik krijg elke keer een melding van Outlook:

Afbeeldingslocatie: http://img251.imagevenue.com/aAfkjfp01fo1i-15869/loc217/60398_asdasdasda_122_217lo.JPG

Hoe kan ik deze altijd op YES zetten via de code die ik nu heb??

[ Voor 92% gewijzigd door Snoll3bulk op 30-10-2008 10:53 ]


  • Witte
  • Registratie: Februari 2000
  • Laatst online: 15-10 13:46
Had ik je voor gewaarschuwd!

Dit is een beveiliging die - afaik - er vanaf outlook 2003 in zit. Misschien zou en downgrade naar Outlook 2000 soelaas bieden...

Of misschien is het mogelijk om een outlook express-object te maken ipv een outlook-object, en dan dit object de sturen.
helaas, ergens op een microsoft-site staat dit:
[...]Outlook can be programmed using Visual Basic for Applications (VBA) but Outlook Express cannot. [...]

Je kan ook proberen een en ander 'trusted'' te maken: lees hier hoe! Is nogal compex.

edit: with Lustucru. Sommige dingen kan je heel eenvoudig zelf vinden met google.

[ Voor 23% gewijzigd door Witte op 03-11-2008 13:08 ]

Houdoe


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

http://www.mapilab.com/outlook/security/ :)

@ neoX: wil je svp [code][/code] tags gebruiken ipv bold. Leest prettiger. Verder geldt natuurlijk voor vervolgvragen hetzelfde als voor een topicstart: geef ook aan wat je zelf al geprobeerd hebt. Nu begint dit topic te lijken op 'los NeoX17 zijn codeproblemen op en dat is nog steeds niet de bedoeling van GoT. :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Goedenavond,
interessante topic.
ik loop tegen het probleem aan dat het versturen vanuit Access via Outlook (2010) op zich goed lukt, alleen verstuurt outlook (of Access) via de verkeerde account.
Hij pakt automatisch het hoofdaccount en zou in dit geval via een gedelegeerde account moeten versturen.
De ontvangende partij ziet als afzender ook mijn hoofdaccount.
Dit is niet handig omdat de mailtjes die ik retour wil hebben dan bij de verkeerde mailbox binnen komen.
iemand enig idee hoe ik dit kan ondervangen?
Hieronder het stukje waar volgens mij nog iets mist:

Public Sub StartEmail()
Call BuildEmail
End Sub
'nodig: map "C:\EmailExport"
Public Function BuildEmail()

Dim strTo As String
Dim strFrom As String
Dim strSubject As String
Dim strDear As String
Dim strMessage As String
Dim strMessageHTML As String
Dim strMessageBlock1 As String
Dim strMessageBlock2 As String
Dim strMessageBlock3 As String
Dim strRegards As String
Dim strDate As String

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Welkom op GoT :)

Mijn complimenten voor het zoeken, maar dit topic gaat helaas dicht. Dit draadje is ruim 7 jaar en dat is op een forum een eeuwigheid. Je kunt beter een nieuw topic beginnen.

Start dus gerust een nieuw topic, maar let er dan wel even op dat je het relevante deel van je code post. Het deel wat je nu post zegt helemaal niets: in dit deel wordt alleen de ruimte gereserveerd voor de variabelen. Nog beter is als je zelf ook alvast een poging doet te begrijpen wat er in de code gebeurt. We helpen je dan graag verder.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1

Dit topic is gesloten.