geautomatiseerde mail versturen met bijlage

Status
Niet open voor verdere reacties.

kees1955

Gebruiker
Lid geworden
30 jul 2017
Berichten
77
Hallo ik kan een geautomatiseerde mail versturen maar krijg er geen bijlage bij aan
Doe dit als volgt

On Error GoTo errorHandler
Dim oLapp As Object
Dim oItem As Object

oLapp = CreateObject("Outlook.application")
oItem = oLapp.createitem(0)
'
With oItem
.Subject = " dit is een Test geautomatiseerde mail van ##"
.To = "##@##.nl"
.body = " dit is een geautomatiseerde mail " & vbCrLf & "gaat tot nu toe super snel ..." & _
"Maar krijg de bijlage er nog niet bij aan "
.BIJLAGE = C:/test
.Send()
End With

watch.Reset()
watch.Start()
MsgBox((watch.Elapsed.TotalMilliseconds / 1000).ToString("00.00"))
watch.Stop()
'
oLapp = Nothing
oItem = Nothing
'
Exit Sub

errorHandler:
oLapp = Nothing
oItem = Nothing
Exit Sub

Wie kan mij helpen ??
 
Dat kan zo:
Code:
With oItem
    .Subject = " dit is een Test geautomatiseerde mail van ##"
    .To = "##@##.nl"
    .Body = " dit is een geautomatiseerde mail " & vbCrLf & "gaat tot nu toe super snel ..."
    .Attachments.Add "C:\test\Bestand.pdf"
    .Send
End With

In de code die je hebt geplaatst is trouwens die On Error totaal overbodig omdat je er niets mee doet.
Daarnaast verwacht ik dat je code niet geschikt zal zijn voor een 64-bit Office installatie als je voor die watch kernel32 of een andere DLL gebruikt, afhankelijk van hoe je die hebt gedeclareerd.
 
Laatst bewerkt:
Bedankt voor je snelle reactie
Nog een vraagje
Deze mail word met outlook verstuurd
kan ik iets meegeven als hij wordt beantwoord dat hij naar een ander mail adres gaat
 
Ik begrijp je laatste vraag niet echt.
In Outlook kan je regels instellen voor binnenkomende mails.
Daarin kan je o.a. bepalen naar welke map in je Outlook deze moet worden verplaaatst.
In de code kan je daar niets voor meegeven.
 
Kan ik iets meegeven als hij wordt beantwoord dat hij naar een ander mail adres gaat
Dat is dan geen antwoord maar doorsturen. Is een heel andere actie.
 
ik wil graag dat de beantwoorde mails in een ander mail programma terecht komen
namelijk in Thunderbird
 
Dat zal dan naar een ander email adres zijn die je niet in Outlook gebruikt.
Dat kan je dus in Outlook regelen met de regels waar ik het over had.
 
Is er ook een manier om de mail automatisch te verzenden in Thunderbird zoals bij outlook
kan daar niks over vinden
 
zie hieronder, het meest kritische punt, waar ik het moeilijkst mee had, is die SendKeys, dus mogelijks gaat het daar bij jou fout.
Anders verhoog je die 2 en 5 sec in die application.wait als 1 en ander te snel gaat.
Code:
Public Sub SendEmail()
'**************************************
'je parameters, die je zo mag aanpassen
'**************************************
   email = "bestemmeling@123.xyz"
   cc = "je CC@123.xyz"
   bcc = "je BCC@123.xyz"
   subj = "dit is mijn onderwerp"
   body = "hier zet ik iets in de body"
   mypath = "c:\users\eigenaar\downloads\"       'path waar je downloads staan
   vattachments = mypath & "x1.xlsx"             'met 1 bijlage
   vattachments = Array(mypath & "x1.xlsx", mypath & "werk.xlsx")   'met meerdere bijlagen

'*************************************************
'vanaf hier blijf je zonder voorkennis best af !!!
'*************************************************

   thund = "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe " & _
           "-compose " & """" & _
           "to='" & email & "'," & _
           "cc='" & cc & "'," & _
           "bcc='" & bcc & "'," & _
           "subject='" & subj & "'," & _
           "body='" & body & "'"

   If Vartype(vattachments) >0 Then
      If IsArray(vattachments) = False Then
         thund = thund & ",attachment='" & vattachments & "',"
      Else
         thund = thund & ",attachment='" & Join(vattachments, ",") & "',"
      End If
   End If

   Call Shell(thund, vbNormalFocus)
   Application.Wait Now + TimeValue("00:00:02")
   SendKeys "^{ENTER}", True
   Application.Wait Now + TimeValue("00:00:05")

End Sub
 
Laatst bewerkt:
Als je die samengestelde opdracht begint met START/WAIT heb je dat Sendkeys en Application.Wait verhaal niet nodig:
Zo bijvoorbeeld:
Code:
thund = "START/WAIT " & thund
 
Laatst bewerkt:
waar zet ik dat ding, ik heb het geprobeerd net voor die "call Shell", maar dan krijg ik op die Call-regel volgende fout
 

Bijlagen

  • Aantekening 2020-06-14 234317.png
    Aantekening 2020-06-14 234317.png
    29,3 KB · Weergaven: 50
Even getest en werkt inderdaad niet zoals ik had verwacht.
Helaas ondersteund Thunderbird niet het direct versturen middels de commandline opdracht.
 
tja, s h i t happens
 
Ik heb het als volgt opgelost

Try
Dim SmtpServer As New SmtpClient()
Dim mail As New MailMessage()
SmtpServer.Credentials = New _
Net.NetworkCredential("xx@xx.nl", "wachtwoord")
SmtpServer.Port = 587
SmtpServer.Host = "mail.xxxxx.nl"
SmtpServer.EnableSsl = True
mail = New MailMessage()
mail.From = New MailAddress("xx@xx.nl")
mail.To.Add("yy@yyyy.nl")
mail.Subject = "Test Mail met bijlage"
mail.Body = "Inhoud van de mail"
mail.Attachments.Add(New Attachment("C:\pdf\Factuur 20201007715-06-2020 12-27-10.pdf"))

SmtpServer.Send(mail)
MsgBox("mail send")
Catch ex As Exception
MsgBox(ex.ToString)
End Try

Bedankt voor de medewerking
 
Ok, je gebruikt dus Visual Studio en niet VBA.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan