The "SendUsing" configuration value is invalid / HttpException (0x80004005): Could not access 'CDO.M

L

lds

I am getting the following error:

The "SendUsing" configuration value is invalid.
Description: An unhandled exception occurred during the execution of
the current web request. Please review the stack trace for more
information about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: The
"SendUsing" configuration value is invalid.

Source Error:

An unhandled exception was generated during the execution of the
current web request. Information regarding the origin and location of
the exception can be identified using the exception stack trace below.


Stack Trace:


[COMException (0x80040220): The "SendUsing" configuration value is
invalid.
]

[TargetInvocationException: Exception has been thrown by the target of
an invocation.]
System.RuntimeType.InvokeDispMethod(String name, BindingFlags
invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers,
Int32 culture, String[] namedParameters) +0
System.RuntimeType.InvokeMember(String name, BindingFlags
invokeAttr, Binder binder, Object target, Object[] args,
ParameterModifier[] modifiers, CultureInfo culture, String[]
namedParameters) +473
System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String
methodName, Object[] args) +58

[HttpException (0x80004005): Could not access 'CDO.Message' object.]
System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String
methodName, Object[] args) +113
System.Web.Mail.CdoSysHelper.Send(MailMessage message) +1846
System.Web.Mail.SmtpMail.Send(MailMessage message) +153
CAWAA.E.NeedHelp.btnSubmit_Click(Object sender, EventArgs e) +580
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108

System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String
eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
+33
System.Web.UI.Page.ProcessRequestMain() +1292


Here is the code:

Dim objMailMessage As New MailMessage
objMailMessage.BodyFormat = MailFormat.Html
objMailMessage.From = "(e-mail address removed)"
objMailMessage.Subject = "Form Title"
objMailMessage.Body = strMessage

If Len(strEmailFrom) > 0 Then
strEmailTo += ";" & strEmailFrom
End If

objMailMessage.To = strEmailTo
SmtpMail.SmtpServer = "127.0.0.1"
SmtpMail.Send(objMailMessage)


This works on our testing server which uses a network service, but it
does not work on our production server which does not. Any ideas? I
know about the FAQ site System.WEb.Mail, OH MY!, and we have tried all
of their suggestions and none of them work.
 
L

lds

sp3d2orbit said:
Smtp.SendUsing = 2


When I enter in the code you suggested it cannot be compiled in Visual
Studio .NET 2003. it gives me the following error:

Name 'smtp' is not declared

I have imported System.Web.Mail only. Should I be importing something
else as well?
 
S

sp3d2orbit

If you upgrade to 2005 you probably won't have this problem. Here's a
sample of sending email from .NET 2.0:

MailMessage msg = new MailMessage();
msg.From = new MailAddress("(e-mail address removed)");
msg.To.Add("(e-mail address removed)");
msg.Subject = "test subject";
msg.Body = "test body";

SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.yourdomain.com";
smtp.Send(msg);

But, if you want to continue using CDO.Message (which MailMessage in <
..NET 2.0 wraps) you need to set the SendUsing property to 2. I have no
idea how to set it from .NET but here's some sample C++ code to get you
started:

#import <msado15.dll> no_namespace rename("EOF", "adoEOF")
#import <cdosys.dll> rename_namespace("CDO") rename("EOF", "adoEOF")

....

CDO::IMessagePtr pMail = NULL;
pMail.CreateInstance(__uuidof(CDO::Message));

pMail->put_To("(e-mail address removed)");
pMail->put_From("(e-mail address removed)");
pMail->put_Subject("test subject");
pMail->put_TextBody("test body");

CDO::IConfigurationPtr pConfig(__uuidof(CDO::Configuration));
FieldsPtr pFields = pConfig->GetFields();
pFields->Item["http://schemas.microsoft.com/cdo/configuration/smtpserver"]->Value

=
_variant_t("smtp.yourdomain.com"); pFields->Item["http://schemas.microsoft.com/cdo/configuration/smtpserverport"]->Value
= _variant_t((long)25);
pFields->Item["http://schemas.microsoft.com/cdo/configuration/sendusing"]->Value
= _variant_t(2);
pFields->Update();

pMail->Configuration = pConfig;
pMail->Send();

The most important line is the one that sets the SendUsing property to
2.

Best of luck,
Matt Furnari
 
G

Greg Burns

Sure this won't matter, but I use:

SmtpMail.SmtpServer = "localhost"

Is your SMTP server configured and working on your production server?

Have you added 127.0.0.1 to the unresticted list for relaying? (AFAIR, I ran
into this problem when I switched from Win2K to WinXP for my development
machine). Not sure if the same thing applies for Win2003 Server or not....

IIS->Default SMTP->Properties->Access tab->Relay button.

Greg


lds said:
I am getting the following error:

The "SendUsing" configuration value is invalid.
Description: An unhandled exception occurred during the execution of
the current web request. Please review the stack trace for more
information about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: The
"SendUsing" configuration value is invalid.

Source Error:

An unhandled exception was generated during the execution of the
current web request. Information regarding the origin and location of
the exception can be identified using the exception stack trace below.


Stack Trace:


[COMException (0x80040220): The "SendUsing" configuration value is
invalid.
]

[TargetInvocationException: Exception has been thrown by the target of
an invocation.]
System.RuntimeType.InvokeDispMethod(String name, BindingFlags
invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers,
Int32 culture, String[] namedParameters) +0
System.RuntimeType.InvokeMember(String name, BindingFlags
invokeAttr, Binder binder, Object target, Object[] args,
ParameterModifier[] modifiers, CultureInfo culture, String[]
namedParameters) +473
System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String
methodName, Object[] args) +58

[HttpException (0x80004005): Could not access 'CDO.Message' object.]
System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String
methodName, Object[] args) +113
System.Web.Mail.CdoSysHelper.Send(MailMessage message) +1846
System.Web.Mail.SmtpMail.Send(MailMessage message) +153
CAWAA.E.NeedHelp.btnSubmit_Click(Object sender, EventArgs e) +580
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108

System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String
eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
+33
System.Web.UI.Page.ProcessRequestMain() +1292


Here is the code:

Dim objMailMessage As New MailMessage
objMailMessage.BodyFormat = MailFormat.Html
objMailMessage.From = "(e-mail address removed)"
objMailMessage.Subject = "Form Title"
objMailMessage.Body = strMessage

If Len(strEmailFrom) > 0 Then
strEmailTo += ";" & strEmailFrom
End If

objMailMessage.To = strEmailTo
SmtpMail.SmtpServer = "127.0.0.1"
SmtpMail.Send(objMailMessage)


This works on our testing server which uses a network service, but it
does not work on our production server which does not. Any ideas? I
know about the FAQ site System.WEb.Mail, OH MY!, and we have tried all
of their suggestions and none of them work.
 
S

sp3d2orbit

OK, here's some c# code that works for me.

MailMessage msg = new MailMessage();
msg.To = "(e-mail address removed)";
msg.From = "(e-mail address removed)";
msg.Subject = "test subject";
msg.Body = "test body";
msg.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"]
= 25;
msg.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"]
= "smtp.yourdomain.com";
msg.Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"]
= 2;
SmtpMail.SmtpServer = "smtp.yourdomain.com";
SmtpMail.Send(msg);

Translating it into VB should be as simple as changing the first line.
Sorry it tooks so long, I'm normally a c++ developer not a .NET
developer.

Best of luck,

Matt Furnari
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,905
Latest member
Kristy_Poole

Latest Threads

Top