SendMail (CDO) Recevoir l'élément envoyé.

Le
chpa
Bonjour a tous,

J'utilise une fonction qui envoie un mail automatiquement à
un destinataire avec un PDF en pièce jointe (merci 3stone).
Cela fonctionne parfaitement a ce détail près :

- L'expéditeur ne reçoit pas de copie de l'email dans sa boite d'envoi.

Pour ma part, j'utilise Windows Mail mais je ne pense pas que cela vienne de
là.
Merci d'avance a ceux qui se pencheront sur mon problème.

Voici le code de ma fonction :

Function SendEMailCDO(strRecipient As String, strDest As String, strSujet As
String, strMessage As String, LeFormat As String) As Boolean
On Error GoTo ErrorSend

Dim LeFromX As String
'Ici, je récupère l'adresse mail de l'expéditeur (moi en l'occurence)
LeFromX = Nz(Util.GetUniqueValue("TBL_IDENTIFICATION", "Mail"), "")

'Je prépare le message
Dim MyMessage As New CDO.Message

Dim SplFic As Variant
SplFic = Split(strRecipient, ";") 'Le ou les destinataires

Set atts = MyMessage.Attachments

With MyMessage
.Subject = strSujet
.To = strDest
.TextBody = strMessage
Dim XAtt As Integer
If Nz(strRecipient, "") <> "" Then
Dim nb As Integer
If UBound(SplFic) = 0 Then
nb = 0
Else
nb = UBound(SplFic) - 1
End If
Dim nomfic As String

For XAtt = 0 To nb
nomfic = SplFic(XAtt) & IIf(LeFormat = "PDF", ".pdf",
".doc")
'J'ajoute une pièce attachée
.AddAttachment nomfic
Next
End If
If LeFromX <> "" Then
'Expéditeur
.From = Trim(LeFromX) 'Je récupère mon adresse mail
End If
'Envoi du mail
.Send
End With
GoTo FinSend

ErrorSend:
SendEMailCDO = False
FinSend:
SendEMailCDO = True
End Function
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #20196621
Salut,

chpa wrote:
Function SendEMailCDO(strRecipient As String, strDest As String,
strSujet As String, strMessage As String, LeFormat As String) As
Boolean
On Error GoTo ErrorSend

Dim LeFromX As String
'Ici, je récupère l'adresse mail de l'expéditeur (moi en
l'occurence) LeFromX > Nz(Util.GetUniqueValue("TBL_IDENTIFICATION", "Mail"), "")

'Je prépare le message
Dim MyMessage As New CDO.Message

Dim SplFic As Variant
SplFic = Split(strRecipient, ";") 'Le ou les destinataires

Set atts = MyMessage.Attachments

With MyMessage
.Subject = strSujet
.To = strDest



.Cc = "Carbon copy @ fai.com"
.Bcc = "Blind carbon copy @ fai.com"


a part le :

.GetStream.SaveToFile "C:MonMail.txt", adSaveCreateOverWrite

je ne vois pas...


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
chpa
Le #20198531
Merci 3stone,
J'ai rajouté la ligne :
.GetStream.SaveToFile "C:MonMail.txt", adSaveCreateOverWrite
juste avant le .Send

depuis que j'ai exécuté cette commande, mon serveur ne répond plus.
Je pense qu'il sagit d'un hazard, je verrai demain.
J'ai ce message :
Compte : 'pop3.orange.fr', Serveur : 'pop3.orange.fr', Protocole : POP3,
Réponse du serveur : '-ERR [IN-USE] Unable to lock maildrop', Port : 110,
Sécurisé (SSL) : Non, Erreur de serveur : 0x800CCC90, Erreur de socket :
183, Numéro d'erreur : 0x800CCC92

De plus, le SaveToFile est-il sensé me générer le fichier cité ?
Car ça n'a pas été le cas, je n'ai pas de c:monmail.txt
et je n'ai pas eu d'erreur de la part d'Access.

résultat :
Impossible a voir, depuis que j'ai exécuté cette commande,
"3stone" news:%
Salut,

chpa wrote:
Function SendEMailCDO(strRecipient As String, strDest As String,
strSujet As String, strMessage As String, LeFormat As String) As
Boolean
On Error GoTo ErrorSend

Dim LeFromX As String
'Ici, je récupère l'adresse mail de l'expéditeur (moi en
l'occurence) LeFromX >> Nz(Util.GetUniqueValue("TBL_IDENTIFICATION", "Mail"), "")

'Je prépare le message
Dim MyMessage As New CDO.Message

Dim SplFic As Variant
SplFic = Split(strRecipient, ";") 'Le ou les destinataires

Set atts = MyMessage.Attachments

With MyMessage
.Subject = strSujet
.To = strDest



.Cc = "Carbon copy @ fai.com"
.Bcc = "Blind carbon copy @ fai.com"


a part le :

.GetStream.SaveToFile "C:MonMail.txt", adSaveCreateOverWrite

je ne vois pas...


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)





3stone
Le #20201261
Salut,

chpa wrote:
J'ai rajouté la ligne :
.GetStream.SaveToFile "C:MonMail.txt", adSaveCreateOverWrite
juste avant le .Send

depuis que j'ai exécuté cette commande, mon serveur ne répond plus.




Les fonctions décrites ici fonctionnent (chez moi ;-)
http://www.3stone.be/access/articles.php?lng=fr&pg‰

à condition d'avoir la bonne référence...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Gloops
Le #20206561
chpa a écrit, le 21/09/2009 23:56 :
Compte : 'pop3.orange.fr', Serveur : 'pop3.orange.fr', Protocole : POP3 ,
Réponse du serveur : '-ERR [IN-USE] Unable to lock maildrop', Port :
110, Sécurisé (SSL) : Non, Erreur de serveur : 0x800CCC90, Erreur d e
socket : 183, Numéro d'erreur : 0x800CCC92



Bonjour,

Il semble y avoir une incohérence dans les indications du serveur de
mail, puisque les numéros d'erreur semblent correspondre d'après les
réponses trouvées sur Google à une erreur de mot de passe, alors qu e
IN-USE laisse entendre qu'une autre application a ouvert le compte mail,
ce qui empêche de l'ouvrir.

Cela étant, il n'est pas interdit de penser que le verrouillage est
détecté au moment d'envoyer le mot de passe, ce qui aboutit à une
confusion quant au numéro d'erreur. En tout état de cause je suggèr e
d'essayer après avoir fermé l'application habituelle de messagerie. S i
ça ne marche pas, essayer après redémarrage de Windows. Une applica tion
qu'on a tendance à ouvrir quand on veut tester une gestion de mails
c'est telnet. Ne pas oublier de la déconnecter avant de revenir lancer
l'application qu'on développe.
chpa
Le #20222111
Merci 3stone et Gloops

Je n'ai plus de message d'erreur, ça fonctionne.
L'erreur était humaine, la table dans laquelle j'allais chercher l'adresse
mail de l'expéditeur
ne contenait pas d'adresse mail.
Le destinataire (moi) reçoit bien son mail.
Par contre, l'expéditeur (toujours moi) ne reçoit rien dans la boite des
éléments envoyés.
L'instruction :
'.GetStream.SaveToFile "c:MonMail.txt", adSaveCreateOverWrite
a dû être enlevée car elle empéchait l'envoi du mail (redirection sur le
ErrorSend:).
Quelqu'un a une idée ?

Bien sûr, j'ai bien coché les référence a CDO, sinon ça passerait pas à la
"compil".
Je rappel que je travaille avec Windows Mail mais je ne pense pas que le pb
vienne de là, non ?

Revoici mon code corrigé:

Function SendEMailCDO(strRecipient As String, strDest As String, strSujet As
String, strMessage As String, LeFormat As String) As Boolean
On Error GoTo ErrorSend

Dim LeFromX As String
'Ici, je récupère l'adresse mail de l'expéditeur
LeFromX = Nz(Util.GetUniqueValue("TBL_IDENTALL", "Mail"), "")
If Nz(LeFromX, "") = "" Then
Dim NewMail As String
NewMail = Nz(InputBox("Veuillez préciser votre adresse mail SVP !",
"Adresse mail de l'expéditeur inconnue"), "")
If NewMail = "" Then
MsgBox "Impossible d'envoyé un mail sans l'adresse de
l'expéditeur, procédure annulée !'"
GoTo ErrorSend
Else
LeFromX = Trim(NewMail)
End If
End If
'Je prépare le message
Dim MyMessage As New CDO.Message

Dim SplFic As Variant
SplFic = Split(strRecipient, ";")

Set atts = MyMessage.Attachments

With MyMessage
.Subject = strSujet
.To = strDest
.TextBody = strMessage
Dim XAtt As Integer
If Nz(strRecipient, "") <> "" Then
Dim nb As Integer
If UBound(SplFic) = 0 Then
nb = 0
Else
nb = UBound(SplFic) - 1
End If
Dim nomfic As String

For XAtt = 0 To nb
nomfic = SplFic(XAtt) & IIf(LeFormat = "PDF", ".pdf",
".doc")
'J'ajoute une pièce attachée
.AddAttachment nomfic
Next
End If
If LeFromX <> "" Then
'Expéditeur
.From = Trim(LeFromX)
End If
'.GetStream.SaveToFile "c:MonMail.txt", adSaveCreateOverWrite
.Send
End With
GoTo FinSend

ErrorSend:
SendEMailCDO = False
Exit Function
FinSend:
SendEMailCDO = True
End Function

"chpa" news:
Merci 3stone,
J'ai rajouté la ligne :
.GetStream.SaveToFile "C:MonMail.txt", adSaveCreateOverWrite
juste avant le .Send

depuis que j'ai exécuté cette commande, mon serveur ne répond plus.
Je pense qu'il sagit d'un hazard, je verrai demain.
J'ai ce message :
Compte : 'pop3.orange.fr', Serveur : 'pop3.orange.fr', Protocole : POP3,
Réponse du serveur : '-ERR [IN-USE] Unable to lock maildrop', Port : 110,
Sécurisé (SSL) : Non, Erreur de serveur : 0x800CCC90, Erreur de socket :
183, Numéro d'erreur : 0x800CCC92

De plus, le SaveToFile est-il sensé me générer le fichier cité ?
Car ça n'a pas été le cas, je n'ai pas de c:monmail.txt
et je n'ai pas eu d'erreur de la part d'Access.






résultat :
Impossible a voir, depuis que j'ai exécuté cette commande,
"3stone" news:%
Salut,

chpa wrote:
Function SendEMailCDO(strRecipient As String, strDest As String,
strSujet As String, strMessage As String, LeFormat As String) As
Boolean
On Error GoTo ErrorSend

Dim LeFromX As String
'Ici, je récupère l'adresse mail de l'expéditeur (moi en
l'occurence) LeFromX >>> Nz(Util.GetUniqueValue("TBL_IDENTIFICATION", "Mail"), "")

'Je prépare le message
Dim MyMessage As New CDO.Message

Dim SplFic As Variant
SplFic = Split(strRecipient, ";") 'Le ou les destinataires

Set atts = MyMessage.Attachments

With MyMessage
.Subject = strSujet
.To = strDest



.Cc = "Carbon copy @ fai.com"
.Bcc = "Blind carbon copy @ fai.com"


a part le :

.GetStream.SaveToFile "C:MonMail.txt", adSaveCreateOverWrite

je ne vois pas...


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)








Gloops
Le #20222171
Histoire de simplifier, as-tu pensé à mettre l'adresse de l'expédit eur
en ccc (ou bcc en Anglais) ? ça permet de récupérer une copie.
L'inconvénient c'est que ça dépend du bon fonctionnement du serveur
SMTP, exceptionnellement ça peut arriver que celui-ci oublie d'envoyer
sa copie à l'expéditeur.
___________________________________
chpa a écrit, le 25/09/2009 00:58 :
Merci 3stone et Gloops

Je n'ai plus de message d'erreur, ça fonctionne.
L'erreur était humaine, la table dans laquelle j'allais chercher
l'adresse mail de l'expéditeur
ne contenait pas d'adresse mail.
Le destinataire (moi) reçoit bien son mail.
Par contre, l'expéditeur (toujours moi) ne reçoit rien dans la boit e des
éléments envoyés.


chpa
Le #20311251
Pardon, j'ai complétement oublié de répondre.
Merci, cela semble être en effet une solution. Je vais tester.
Ce qui m'ennuie, c'est que c'est de la "bidouille",
il n'y aurait pas de solution plus "pro" ?

"Gloops" news:%
Histoire de simplifier, as-tu pensé à mettre l'adresse de l'expéditeur
en ccc (ou bcc en Anglais) ? ça permet de récupérer une copie.
L'inconvénient c'est que ça dépend du bon fonctionnement du serveur
SMTP, exceptionnellement ça peut arriver que celui-ci oublie d'envoyer
sa copie à l'expéditeur.
___________________________________
chpa a écrit, le 25/09/2009 00:58 :
Merci 3stone et Gloops

Je n'ai plus de message d'erreur, ça fonctionne.
L'erreur était humaine, la table dans laquelle j'allais chercher l'adresse
mail de l'expéditeur
ne contenait pas d'adresse mail.
Le destinataire (moi) reçoit bien son mail.
Par contre, l'expéditeur (toujours moi) ne reçoit rien dans la boite des
éléments envoyés.


Publicité
Poster une réponse
Anonyme