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

[VBA] mail versturen dmv iets anders dan CDO

Pagina: 1
Acties:

  • SimonBlok
  • Registratie: Maart 2006
  • Laatst online: 21-11 21:05
Ik heb problemen met het versturen van mail in VBA (MS Access) door middel van een CDO object. Deze problemen heb ik op PC's die office 2010 geïnstalleerd hebben. Nu blijkt dat dit object niet meer te gebruiken is vanaf office 2010.

Heeft iemand andere ideeën? Ik heb al gekeken of er iets mogelijk is met de nieuwe MAPI methoden, maar ik kom er maar niet uit.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Waarom kom je er niet uit? Wat lukt je niet? Wat lukt je wel? Welke meldingen krijg je? Wat had je al geprobeerd wat code betreft? Geef eens wat meer informatie dan "luktnie!" ;)

Verder: Waar hoort mijn topic?

PRG>>OFF

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Ik kan me vergissen, maar in de link die je aangeeft staat alleen dat het niet meer standaard wordt geinstalleerd met er naast een hele dikke rode knop 'download'?

En anders heeft Access nog het ubersimpele docmd.sendobject. :)

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


Verwijderd

Misschien speelt er het probleem dat 64-bits office 2010 geen 32-bits active-x objecten kan instantiëren, op een win7 x64 en office 2010 x86 installatie werkt dit component zonder problemen (cdo 1.2 dll versie 6.6.7601).

kom eens met meer details, dan hoeven wij onze kristallen bol niet op te poetsen.

  • SimonBlok
  • Registratie: Maart 2006
  • Laatst online: 21-11 21:05
Ok, bedankt voor jullie antwoorden. Ik zal het proberen wat meer uit te leggen. Ik moet eerlijk toegeven dat ik al een tijdje aan het zoeken ben, maar ik ben een .NET-beginner, dus weet nog niet precies waar ik naar op zoek moet.

Waarom ik vroeg om een andere methode is eigenlijk omdat ik denk dat CDO niet te gebruiken is. Op mijn eigen (ontwikkel)-pc werkt het prima; 64-bits processor, Office 2010 + volledige MS access. Op een andere PC; 32-bits processor, office 2010 + runtime MS Access werkt dit niet meer. Nu kwam in mij de gedachte op dat de CDO-library óf bij MS access werkt meegeleverd óf bij Visual Studio (wat ik dus ook op mijn PC draai). Ik heb geprobeerd om dit verder uit te zoeken, maar kwam er verder niet uit. Daarom wil ik dus eigenlijk een andere oplossing.

Wat code betreft is het niet zo spannend:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
SendMail = False
    
    ' Create a new mail object
    Set post1 = CreateObject("CDO.Message")
    post1.From = sFrom
    post1.TO = sTo
    post1.Subject = sSubject
    post1.TextBody = sBody
    
    If sReplyTo = STR_NULL Then sReplyTo = sFrom
    post1.ReplyTo = sReplyTo
    
    If Not (sCC = STR_NULL) Then post1.cc = sCC
    If Not (sBCC = STR_NULL) Then post1.BCC = sBCC
    
    Debug.Print "TO: " & post1.TO
    Debug.Print "CC: " & post1.cc
    Debug.Print "BCC: " & post1.BCC
     
    Set attach = CurrentDb.OpenRecordset("tblattachmentstosend")
    If Not (attach.EOF And attach.BOF) Then
        attach.MoveFirst
        Do Until attach.EOF
            If BestandBestaat(attach!Attachment) Then post1.AddAttachment attach!Attachment Else GoTo foutafhandeling
        attach.MoveNext
        Loop
    End If
    attach.close
    Set attach = Nothing
    
    post1.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = name_smtpserver
    post1.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    post1.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    post1.Configuration.Fields.update

    post1.send

    If err Then
        SendMail = False
    Else
        SendMail = True
    End If
    
    Exit Function
foutafhandeling:
    
    SendMail = False


Gewoon een nieuwe instantie van CDO maken en deze gebruiken. Volgens mij haal ik geen hele abnormale dingen uit in bovenstaand stukje code.

Is er niet gewoon een methode om simpel via een SMTP-server een mailtje te versturen, anders dan met CDO?

  • Roady81
  • Registratie: September 2009
  • Laatst online: 24-09-2018
Als aangenomen mag worden dat er Outlook wordt gebruikt, dan kun je ook het Outlook Object Model gebruiken ipv CDO. Voeg hiervoor een reference naar "Microsoft Outlook 14.0 Object Library" toe aan je project.

Vervolgens kun je op de volgende manier een Outlook sessie beginnen, of gebruik maken van de huidige indien Outlook as gestart is, en een nieuw mail item creëren.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub CreateMail()

    'Declare an Outlook application and a mail item.
    Dim oOutlookApp As Outlook.Application
    Dim oItem As Outlook.MailItem

    'Start Outlook if it isn't running.
    Set oOutlookApp = GetObject(, "Outlook.Application")
    If Err <> 0 Then
        Set oOutlookApp = CreateObject("Outlook.Application")
    End If

    'Create a new message.
    Set oItem = oOutlookApp.CreateItem(olMailItem)

    'Show the message.
    oItem.Display

    'Cleanup
    Set oOutlookApp = Nothing
    Set oItem = Nothing
End Sub


Als je geen gebruik wilt maken van Outlook, dan kun je ook de MailMessage Class gebruiken in System.Net.Mail
MSDN: MailMessage Class (System.Net.Mail)
Voor een VB.NET voorbeeld zie;
http://vb.net-information...ions/vb.net_smtp_mail.htm

HowTo-Outlook | MSOutlook.info

Pagina: 1