我有一个遗留的VB6代码库,我想扩展其中包括支持通过外部SMTP服务器发送邮件(smtp.live.com)。
我使用CDO发送邮件。我的机器运行Windows 7。 不幸的是我收到了#34;传输无法连接到服务器"尝试发送邮件时出现错误消息。 以下是代码。
VB6
Dim oNewMessage As CDO.Message
Dim iConf As New CDO.Configuration
Dim oFlds As ADODB.Fields
Dim strbody As String
On Error GoTo errSMPT
iConf.Load cdoDefaults
Set oFlds = iConf.Fields
oFlds(cdoSendUsingMethod) = cdoSendUsingPort
oFlds(cdoSMTPServer) = "smtp.live.com"
oFlds(cdoSMTPServerPort) = 587
oFlds(cdoSMTPConnectionTimeout) = 30
oFlds(cdoSMTPUseSSL) = True
oFlds(cdoSMTPAuthenticate) = cdoBasic
oFlds(cdoSendUserName) = "xxxxxx@hotmail.com"
oFlds(cdoSendPassword) = "mypassword"
oFlds.Update
strbody = "Sample message " & Time
Set oNewMessage = New CDO.Message
Set oNewMessage.Configuration = iConf
With oNewMessage
.To = txtTo.Text
.From = txtFrom.Text
.Subject = "subject"
.TextBody = strbody
.Send
End With
Exit Sub
errSMPT:
MsgBox Err.Description
我不认为问题与防火墙或帐户安全问题有关,因为下面的C#代码没有任何问题。
C#
using (MailMessage message = new MailMessage(txtFrom.Text, txtTo.Text, txtSubject.Text, txtText.Text))
{
SmtpClient mailClient = new SmtpClient("smtp.live.com", 587);
mailClient.Credentials = new System.Net.NetworkCredential("xxxxxx@hotmail.com", "mypassword");
mailClient.EnableSsl = true;
mailClient.Send(message);
MessageBox.Show("Message successfully sent!!!");
}
感谢任何帮助!
由于
//彼得
答案 0 :(得分:0)
我认为你的问题在这里:
oFlds(cdoSMTPUseSSL) = True
这应该是整数而不是布尔值。当VB6将true转换为int时,该值为-1。我建议你把这一行换成:
oFlds(cdoSMTPUseSSL) = 1