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

SendMail / CDO / VBA / VB.NET

2 réponses
Avatar
cpeltier
Bonjour

A la suite de mon précédent message (Impossible d'accéder à l'objet
'CDO.Message'), j'ai fait qq test, en particulier j'ai écrit une procédure
sous Access pour envoyer un mail. voici le code utilisé :

Sub SendMailCDO(strSubject, strFrom, strTo, strCorps)
Dim Cdo_Message As Object
Set Cdo_Message = CreateObject("CDO.Message")
With Cdo_Message
.To = strTo
.from = strFrom
.Subject = strSubject
.TextBody = strCorps
'.AddAttachment ("c:\chemin\fichier.ext")
.Send
End With
Set Cdo_Message = Nothing
End Sub

Ce qui ne pose aucun problème. Je reçois les mails.

Maintenant sous .net j'ai ecrit dans le code vb.net suivant

Sub ExpédierMail(ByVal strSubject, ByVal strFrom, ByVal strTo, ByVal
strCorps, ByVal strFormat)
Dim myEmail As New MailMessage

With (myEmail)
.Subject = strSubject
.From = strFrom
.To = strTo
.BodyFormat = MailFormat.Text
.Priority = MailPriority.High
.Body = strCorps
End With
SmtpMail.SmtpServer = "localhost"
Try
SmtpMail.Send(myEmail)
Catch ex As Exception
Debug.Text = ex.ToString
End Try
End Sub

ce qui me vaut une bordée d'injures avec comme explication :

System.Web.HttpException: Impossible d'accéder à l'objet 'CDO.Message'. --->
System.Reflection.TargetInvocationException: Une exception a été levée par la
cible d'un appel. ---> System.Runtime.InteropServices.COMException
(0x80040213): Le transport a échoué dans sa connexion au serveur. --- Fin de
la trace de la pile d'exception interne --- at
System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr,
Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture,
String[] namedParameters) at System.RuntimeType.InvokeMember(String name,
BindingFlags invokeAttr, Binder binder, Object target, Object[] args,
ParameterModifier[] modifiers, CultureInfo culture, String[] namedParameters)
at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder
binder, Object target, Object[] args) at
System.Web.Mail.LateBoundAccessHelper.CallMethod(Type type, Object obj,
String methodName, Object[] args) at
System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String
methodName, Object[] args) --- Fin de la trace de la pile d'exception interne
--- at System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String
methodName, Object[] args) at System.Web.Mail.CdoSysHelper.Send(MailMessage
message) at System.Web.Mail.SmtpMail.Send(MailMessage message) at
Volicante.ChgPwd.ExpédierMail(Object strSubject, Object strFrom, Object
strTo, Object strCorps, Object strFormat) in D:\Gravure\Visual
Studio\Asp.net\Volicante\ChgPwd.aspx.vb:line 193

Je tendrais donc à penser que j'ai du faire soit une erreur de configuration
qqpart mais où ??

Merci de vos réponses et bon week end à tous ...

2 réponses

Avatar
Paul Bacelar
En utilisant Google, je suis tombé sur des personnes qui ont résolus le
problème de manière assez peu orthodoxe.

http://www.dotnet247.com/247reference/msgs/19/95438.aspx



En résumé, ils ont remplacé "localhost" par "Localhost" ou par "127.0.0.1"
et après la première réussite, "localhost" c'est mis à marcher.

En sachant que dans l'aide, l'erreur COM 0x80040213 c'est "0x80040213
IMAPI_E_DEVICE_NOTPRESENT HRESULT: VFW_E_NO_CLOCK - Description: Cannot lock
for synchronization because no clock has been defined.", je commence à
partager leur avis sur la présence d'un gremlins (moi, j'aurais vu cela sous
la forme d'un insecte à écrabouiller ;-) )


--
Paul Bacelar


"cpeltier" wrote in message
news:
Bonjour

A la suite de mon précédent message (Impossible d'accéder à l'objet
'CDO.Message'), j'ai fait qq test, en particulier j'ai écrit une procédure
sous Access pour envoyer un mail. voici le code utilisé :

Sub SendMailCDO(strSubject, strFrom, strTo, strCorps)
Dim Cdo_Message As Object
Set Cdo_Message = CreateObject("CDO.Message")
With Cdo_Message
.To = strTo
.from = strFrom
.Subject = strSubject
.TextBody = strCorps
'.AddAttachment ("c:cheminfichier.ext")
.Send
End With
Set Cdo_Message = Nothing
End Sub

Ce qui ne pose aucun problème. Je reçois les mails.

Maintenant sous .net j'ai ecrit dans le code vb.net suivant

Sub ExpédierMail(ByVal strSubject, ByVal strFrom, ByVal strTo, ByVal
strCorps, ByVal strFormat)
Dim myEmail As New MailMessage

With (myEmail)
.Subject = strSubject
.From = strFrom
.To = strTo
.BodyFormat = MailFormat.Text
.Priority = MailPriority.High
.Body = strCorps
End With
SmtpMail.SmtpServer = "localhost"
Try
SmtpMail.Send(myEmail)
Catch ex As Exception
Debug.Text = ex.ToString
End Try
End Sub

ce qui me vaut une bordée d'injures avec comme explication :

System.Web.HttpException: Impossible d'accéder à l'objet


'CDO.Message'. --->
System.Reflection.TargetInvocationException: Une exception a été levée par


la
cible d'un appel. ---> System.Runtime.InteropServices.COMException
(0x80040213): Le transport a échoué dans sa connexion au serveur. --- Fin


de
la trace de la pile d'exception interne --- at
System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr,
Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture,
String[] namedParameters) at System.RuntimeType.InvokeMember(String name,
BindingFlags invokeAttr, Binder binder, Object target, Object[] args,
ParameterModifier[] modifiers, CultureInfo culture, String[]


namedParameters)
at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder
binder, Object target, Object[] args) at
System.Web.Mail.LateBoundAccessHelper.CallMethod(Type type, Object obj,
String methodName, Object[] args) at
System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String
methodName, Object[] args) --- Fin de la trace de la pile d'exception


interne
--- at System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String
methodName, Object[] args) at


System.Web.Mail.CdoSysHelper.Send(MailMessage
message) at System.Web.Mail.SmtpMail.Send(MailMessage message) at
Volicante.ChgPwd.ExpédierMail(Object strSubject, Object strFrom, Object
strTo, Object strCorps, Object strFormat) in D:GravureVisual
StudioAsp.netVolicanteChgPwd.aspx.vb:line 193

Je tendrais donc à penser que j'ai du faire soit une erreur de


configuration
qqpart mais où ??

Merci de vos réponses et bon week end à tous ...


Avatar
cpeltier
oui, j'ai aussi vu cette manip que j'ai essayé de reproduire mais rien à
faire ...
Je continue ma quête du Graal !!

Cordialement

"Paul Bacelar" wrote:

En utilisant Google, je suis tombé sur des personnes qui ont résolus le
problème de manière assez peu orthodoxe.

http://www.dotnet247.com/247reference/msgs/19/95438.aspx



En résumé, ils ont remplacé "localhost" par "Localhost" ou par "127.0.0.1"
et après la première réussite, "localhost" c'est mis à marcher.

En sachant que dans l'aide, l'erreur COM 0x80040213 c'est "0x80040213
IMAPI_E_DEVICE_NOTPRESENT HRESULT: VFW_E_NO_CLOCK - Description: Cannot lock
for synchronization because no clock has been defined.", je commence à
partager leur avis sur la présence d'un gremlins (moi, j'aurais vu cela sous
la forme d'un insecte à écrabouiller ;-) )


--
Paul Bacelar


"cpeltier" wrote in message
news:
> Bonjour
>
> A la suite de mon précédent message (Impossible d'accéder à l'objet
> 'CDO.Message'), j'ai fait qq test, en particulier j'ai écrit une procédure
> sous Access pour envoyer un mail. voici le code utilisé :
>
> Sub SendMailCDO(strSubject, strFrom, strTo, strCorps)
> Dim Cdo_Message As Object
> Set Cdo_Message = CreateObject("CDO.Message")
> With Cdo_Message
> .To = strTo
> .from = strFrom
> .Subject = strSubject
> .TextBody = strCorps
> '.AddAttachment ("c:cheminfichier.ext")
> .Send
> End With
> Set Cdo_Message = Nothing
> End Sub
>
> Ce qui ne pose aucun problème. Je reçois les mails.
>
> Maintenant sous .net j'ai ecrit dans le code vb.net suivant
>
> Sub ExpédierMail(ByVal strSubject, ByVal strFrom, ByVal strTo, ByVal
> strCorps, ByVal strFormat)
> Dim myEmail As New MailMessage
>
> With (myEmail)
> .Subject = strSubject
> .From = strFrom
> .To = strTo
> .BodyFormat = MailFormat.Text
> .Priority = MailPriority.High
> .Body = strCorps
> End With
> SmtpMail.SmtpServer = "localhost"
> Try
> SmtpMail.Send(myEmail)
> Catch ex As Exception
> Debug.Text = ex.ToString
> End Try
> End Sub
>
> ce qui me vaut une bordée d'injures avec comme explication :
>
> System.Web.HttpException: Impossible d'accéder à l'objet
'CDO.Message'. --->
> System.Reflection.TargetInvocationException: Une exception a été levée par
la
> cible d'un appel. ---> System.Runtime.InteropServices.COMException
> (0x80040213): Le transport a échoué dans sa connexion au serveur. --- Fin
de
> la trace de la pile d'exception interne --- at
> System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr,
> Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture,
> String[] namedParameters) at System.RuntimeType.InvokeMember(String name,
> BindingFlags invokeAttr, Binder binder, Object target, Object[] args,
> ParameterModifier[] modifiers, CultureInfo culture, String[]
namedParameters)
> at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder
> binder, Object target, Object[] args) at
> System.Web.Mail.LateBoundAccessHelper.CallMethod(Type type, Object obj,
> String methodName, Object[] args) at
> System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String
> methodName, Object[] args) --- Fin de la trace de la pile d'exception
interne
> --- at System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String
> methodName, Object[] args) at
System.Web.Mail.CdoSysHelper.Send(MailMessage
> message) at System.Web.Mail.SmtpMail.Send(MailMessage message) at
> Volicante.ChgPwd.ExpédierMail(Object strSubject, Object strFrom, Object
> strTo, Object strCorps, Object strFormat) in D:GravureVisual
> StudioAsp.netVolicanteChgPwd.aspx.vb:line 193
>
> Je tendrais donc à penser que j'ai du faire soit une erreur de
configuration
> qqpart mais où ??
>
> Merci de vos réponses et bon week end à tous ...