Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

MAPI Message

11 réponses
Avatar
Pascal
bonsoir,
j'abuse je sais mais c'est comme cela que je progresse.
j'ai fais une petite fonction pour l'envoi de mail
d'abord par CDO, si ne répond pas, tentative par MAPI
sur CDO aucun soucis mais MAPI me donne du fil à retordre à savoir:
le .Send False me donne malgré tout la boîte de dialogue me
signalant l'envoi du message????

Auriez-vous la gentillesse de jeter un oeil à ce code et me dire le
pourquoi, mauvaise implémentation?

merci d'avance

Pascal

**********************************************************************
Private Function GoMail(sFrom As String, sTo As String, sSujet As String, _
sText As String, Relais As String, _
Optional Signature As String, Optional
PieceJointe1 As String, _
Optional PieceJointe2 As String)

Dim rep As String
With CreateObject("CDO.Message")
.From = sFrom
.To = sTo
.Subject = sSujet
.TextBody = sText & vbNewLine & Signature
.AddAttachment PieceJointe1
.AddAttachment PieceJointe2
.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")
= 2
.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")
= Relais
.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")
= 25
.Configuration.Fields.Update

On Error GoTo ErreurCdo
.Send
MsgBox "Message envoyé"
Exit Function 'l'envoi s'est bien passé on sort de la sub

ErreurCdo:
If Err Then
rep = MsgBox("Le message n'a pas pu être expédié" & vbCrLf & _
"Cliquez sur OK pour tenter un envoi MAPI" & vbCrLf & _
"l'expéditeur sera la première adresse valide de " &
vbCrLf & _
"votre messagerie", vbOKCancel + vbCritical, "Erreur
Relais SMTP")
If rep = vbCancel Then Exit Function
End If

'tentative d'envoi MAPI message
MAPISession1.SignOn
With MAPIMessages1

.AddressResolveUI = True 'verifie l'adresse de messagerie dans
la liste
.ResolveName 'des utilisateurs inscrit dans le
système de courrier électronique
.MsgIndex = -1 '
.RecipDisplayName = sTo 'l adresse du destinataire
.MsgSubject = sSujet 'le sujet
.MsgNoteText = sText 'le corps du message
.SessionID = MAPISession1.SessionID
If Len(PieceJointe1) > 0 Then .AttachmentPathName = PieceJointe1

On Error GoTo ErreurMapi
.Send False <<<--------ERREUR ICI (boite de dialogue
toujours présente)
MsgBox "Message envoyé"
End With
MAPISession1.SignOff
Exit Function

ErreurMapi:
If Err Then
rep = MsgBox("Le message n'a pas pu être expédié",
vbCritical, "Erreur Relais SMTP")
End If

MAPISession1.SignOff
End With
End Function

1 réponse

1 2
Avatar
Pascal
hello jacques,
Une solution serait donc de tester quel est le gestionnaire de courrier
par défaut





tout a fait pertinent
merci pour les compléments
il y a effectivement plus de boulot que je ne pensais mais suis très heureux
des précisions que toi et Jean Marc m'avez apporter, je sais ou et comment
commencer

Bien à vous 2

Pascal


"Jacques93" a écrit dans le message de news:
%
Jacques93 a écrit :



[...]

En complément de ce qui a déjà été dit, une méthode plus "générale" serait
peut être utile, cela dépend de ton environnement. Je m'explique:
la manip sur la clé 'Warn on Mapi Send', n'aurait, par exemple aucun effet
chez moi. Mapi utilise le gestionnaire de courrier par défaut, et
j'utilise Office Outlook ou Thunderbird, la clé en question ne concerne
que OE et Windows Mail. (Outlook Office intercepte aussi les envois de
courrier par d'autres programmes)

Une solution serait donc de tester quel est le gestionnaire de courrier
par défaut pour voir s'il est pertinent de modifier cette clé. On peut le
récupérer dans :

HKLMSOFTWAREClientsMail(par défault)

A titre d'exemple :

Messagerie Valeur par défaut
---------- -----------------
Office Outlook Microsoft Outlook
OE Outlook Express
TB Mozilla Thunderbird
WM Windows Mail

(j'en ai pas d'autre sous la main ;-) ).

Certaines de ces valeurs sont spécifique à un O.S. d'autres pas.
Et s'il est nécessaire de déterminer l'O.S. , ce qui peut être utile dans
d'autres circonstances, il y a le composant Sysinfo.ocx et ses propriétés
OSPlatform, OSVersion et OSBuild. Pour infos :


W2K SP4 XP SP2 VISTA (Ultimate)
--------------------------------------------------------
OSPlatform 2 2 2
OSVersion 5 5.01 6
OSBuild 2195 2600 6000

Si on désire plus de détails (Home Pro, Server, etc ...), il y a les API's
:

<http://vbnet.mvps.org/index.html?code/helpers/iswinversion.htm>

NB : il y a une petite erreur. Initialiser à ncontrols à 35 et non pas
34

--
Cordialement,

Jacques.


1 2