mail sturen vanuit userform

Status
Niet open voor verdere reacties.

SjonR

Verenigingslid
Lid geworden
10 nov 2016
Berichten
3.279
Beste Helpers,

Ik gebruik onderstaande code (Ron de Bruin) om via knop op userform direct naar een op het userform ingevulde persoon te mailen. Dit werkt perfect.

Code:
Sub Mail_small_Text_Outlook()
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
'Working in Office 2000-2016
    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    strbody = "Hi there" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2" & vbNewLine & _
              "This is line 3" & vbNewLine & _
              "This is line 4"

    On Error Resume Next
    With OutMail
        .To = "ron@debruin.nl"
        .CC = ""
        .BCC = ""
        .Subject = "This is the Subject line"
        .Body = strbody
        'You can add a file like this
        '.Attachments.Add ("C:\test.txt")
        .Send   'or use .Display
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub


Mijn vraag is echter of je ook de afzender kan bepalen. Dit om het mailtje via de naam van een mailbox te laten sturen. Zo wil ik voorkomen dat er naar personen zelf wordt gereplied.
 
Dit gebruik ik om in de code een bericht te verzenden met die bepaalde account.
In het blauw de accountnaam.

Code:
Sub hsv()
Dim strbody As String, mailaccount, objOutlook As Object, objOutlookAccount As Object
  Set objOutlook = CreateObject("Outlook.Application")
  Set objOutlookAccount = GetOutlookAccount(objOutlook, [COLOR=#0000ff]"naamaccountverzender@profider"[/COLOR])
  With objOutlook.createitem(0)
    Set .sendusingaccount = objOutlookAccount
        .SentOnBehalfOfName = .sendusingaccount
        .To = "naamontvanger@profider"
        .Subject = "Onderwerp"
        .body = "De groeten van @hsv"
        .display
 End With
End Sub



Function GetOutlookAccount(objOutlook As Object, strEmailId As String) As Object
Dim objOAccount As Object
    For Each objOAccount In objOutlook.Session.Accounts
     If objOAccount.DisplayName = strEmailId Then
       Set GetOutlookAccount = objOAccount
       Exit For
     End If
    Next objOAccount
End Function
 
Harry, bedankt voor je snelle antwoord.

Ik krijg bij gebruik van jouw code een foutmelding op

Code:
Set .sendusingaccount = objOutlookAccount

Hij meldt foutcode 5,

ongeldige procedure-aanroep of ongeldig argument.

Ik heb het er nu zo in staan:

Code:
Private Sub CommandButton2_Click()
    Dim strbody As String, mailaccount, objOutlook As Object, objOutlookAccount As Object
  Set objOutlook = CreateObject("Outlook.Application")
  Set objOutlookAccount = GetOutlookAccount(objOutlook, "blabla@bla.nl")
  With objOutlook.createitem(0)
    Set .sendusingaccount = objOutlookAccount
        .SentOnBehalfOfName = .sendusingaccount
        .To = mail.Value
        .Subject = "Onderwerp"
        .body = strbody
        .display
 End With


    strbody = blablabla


    
    CommandButton2.Enabled = False
    CommandButton2.Caption = "Mail is verzonden"
    
    
End Sub

Function GetOutlookAccount(objOutlook As Object, strEmailId As String) As Object
Dim objOAccount As Object
    For Each objOAccount In objOutlook.Session.Accounts
     If objOAccount.DisplayName = strEmailId Then
       Set GetOutlookAccount = objOAccount
       Exit For
     End If
    Next objOAccount
End Function
 
Laatst bewerkt:
Vreemd, heeft altijd gewerkt.
Als ik onderstaande regel eruit haal werkt het weer prima.
Code:
'.SentOnBehalfOfName = .sendusingaccount

De werking bij mij.
Ik heb twee mailaccounts in Outlook.
Ik verstuur standaard met een van de twee, voor hier even de eerste met naam1@gmail.com.

Met de code vul ik mijn tweede in die bij jou als 'blabla@bla.nl" staat.
De mail wordt nu verzonden met de blabla@account.
 
bij mij nog steeds dezelfde melding. wellicht omdat het een apparte mailbox is werkt het niet.
 
Dat zou kunnen.
 
Hoe moet ik me dat voorstellen "aparte mailbox".
 
Naast mijn eigen account hebben we ook afdelingsmailaccounts. Daar sturen klanten berichten naartoe.
 
En die staan niet in het vakje "Account" van Outlook neem ik aan.
 
Nee, helaas. Anders had jouw code prima gewerkt, ben ik inmiddels achter na wat testwerk.

update:

Door bij het blauwe gedeelte de standaard account van de medewerker in te vullen (bijv. =Textbox1.value) kan de gebruiker daarna in het getoonde e-mailbericht kiezen welke afzender hij/zij wil gebruiken.

Bedankt dat je nog even doorvroeg, want ik had het idee eigenlijk al laten varen. :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan