2017-05-27 1 views
-1

Je veux envoyer un courriel (avec sujet, corps ...) à une autre adresse email. J'ai essayé le code suivant, mais cela n'a pas fonctionné:Envoyer un Email en utilisant PowerPoint VBA

Private Sub CommandButton1_Click() 

    Dim ret As Boolean 
    Dim strAddress As String 
    Dim strMessage As String 

    strAddress = "[email protected]" 
    ret = SendEMail(strAddress, (Label1.Caption), strMessage) 
    Label1.Caption = ret 

    If Label1.Caption = "True" Then 
     MsgBox "Mail sent!" 
    ElseIf Label1.Caption = "False" Then 
     MsgBox "Mail not sent!" 
    End If 

End Sub 


Public Function SendEMail(strRecipient As String, strSubject As String, strBody As String) As Boolean 

    Dim oApp As Object 
    Dim oMail As Object 

    Err.Clear 
    On Error Resume Next 

    Set oApp = GetObject(Class:="Outlook.Application") 
    If Err <> 0 Then Set oApp = CreateObject("Outlook.Application") 
    Err.Clear 
    Set oMail = oApp.CreateItem(0) 
    With oMail 
     .Subject = strSubject 
     .To = strRecipient 
     'copy to self 
     .CC = "[email protected]" 
     .BodyFormat = 1 
     .Body = strBody 
     .Send 
    End With 

    'cleanup 
    Set oMail = Nothing 
    Set oApp = Nothing 

    'All OK? 
    If Err = 0 Then SendEMail = True Else SendEMail = False 

End Function 

Le code a été pris de here.

Si c'est possible, je veux un code compatible avec la plupart des PC.

Répondre

2

utilisant Microsoft Outlook
Pour envoyer un e-mail vous devez avoir un compte de messagerie dans Microsoft Outlook configuré, parce que votre code utilise Outlook pour envoyer l'e-mail.

Set oApp = GetObject(Class:="Outlook.Application")


1 Alternative: SMTP
Sinon, vous pouvez configurer une connexion SMTP en VBA pour envoyer les e-mails sur un serveur de messagerie externe à l'aide CDO. Plus d'informations sur l'utilisation de CDO dans VBA peuvent être trouvées here (même si elles écrivent le code est pour Excel, vous pouvez également l'utiliser pour PowerPoint) et here. L'inconvénient de cette approche est que les informations d'identification de connexion SMTP sont visibles dans le code VBA. Cela peut poser un problème de sécurité si vous envisagez de partager cette présentation avec d'autres personnes.


Alternative 2: mailto-Link
Une troisième voie serait d'offrir à l'utilisateur un lien à cliquer sur pour envoyer l'e-mail: mailto:[email protected]?subject=xxx
Une description de cette approche peut être trouvé here (faites défiler jusqu'à la troisième option).

+0

J'ai essayé maintenant un autre code ... Mais j'obtiens une erreur: Run-yime error '-2147220978 (8004020e)' Et il dit aussi que l'adresse de l'expéditeur a été rejetée. –

+0

Vous devez spécifier précisément quel autre code vous avez essayé si vous attendez de l'aide. Idéalement, vous l'ajouteriez à votre question originale. –

+0

J'ai essayé de dépasser le code ici, mais c'est trop long. C'est le premier gros code [ici] (https://www.rondebruin.nl/win/s1/cdo.htm). –