简体   繁体   English

CDO在VBScript中可用,但在C#中不可用

[英]CDO works in VBScript, but doesn't work in C#

I have a VBScript file to send the emails It works fine, but when I created a C# program (.Net 4.5) with the same CDO settings I got 我有一个VBScript文件来发送电子邮件,它工作正常,但是当我使用相同的CDO设置创建C#程序(.Net 4.5)时,

The transport failed to connect to the server. 传输无法连接到服务器。

Please check what is the problem with my C#. 请检查我的C#有什么问题。

VBScript: VBScript:

Dim objMessage
Set objMessage = CreateObject("CDO.Message") 

objMessage.Subject = Subj 
objMessage.From = Sender
objMessage.To = Receivers

objMessage.TextBody = Body 

objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = ServerName

objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 2

objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = ""
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = ""
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False

objMessage.Configuration.Fields.Update

objMessage.Send

C#: C#:

using System.Net.Mail;
...
CDO.Message  objMessage   = new CDO.Message();

objMessage.Subject = Subj;
objMessage.From = Sender;

objMessage.To = Receivers;
objMessage.TextBody = Body;

ADODB.Field FieldSMTPSendUsing = objMessage.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"];
FieldSMTPSendUsing.Value = 2;

ADODB.Field FieldSMTPServer = objMessage.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"];
FieldSMTPServer.Value = ServerName; 

ADODB.Field FieldSMTPServerPort = objMessage.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"];
FieldSMTPServerPort.Value = 25;

ADODB.Field FieldSMTPconnectiontimeout = objMessage.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"];
FieldSMTPconnectiontimeout.Value =  60 ;

ADODB.Field FieldSMTPauthenticate = objMessage.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"];
FieldSMTPauthenticate.Value = 2;

ADODB.Field FieldSMTPsendusername = objMessage.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"];
FieldSMTPsendusername.Value = "";

ADODB.Field FieldSMTPsendpassword = objMessage.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"];
FieldSMTPsendpassword.Value = "";

ADODB.Field FieldSMTPusessl = objMessage.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpusessl"];
FieldSMTPusessl.Value = false;

objMessage.Configuration.Fields.Update();

objMessage.Send();

Don't use CDO in C#. 不要在C#中使用CDO。 Use the MailMessage class for composing messages, and the SmtpClient class for sending them. 使用MailMessage类来编写消息,并使用SmtpClient类来发送消息。

MailMessage message = new MailMessage(Sender, Receivers, Subj, Body);

SmtpClient client = new SmtpClient(ServerName);

try {
  client.Send(message);
} catch (Exception ex) {
  Console.WriteLine("Cannot send message.");
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM