我有一个遗留的VB6代码库,我想扩展它以包括对通过外部SMTP服务器(smtp.live.com)发送邮件的支持。
我用CDO发送邮件。我的机器运行Windows 7。不幸的是,在发送邮件时,我收到了一条“传输未能连接到服务器”的错误消息。下面是密码。
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!!!");
}任何帮助都是非常感谢的!
谢谢
//Peter
发布于 2015-04-24 15:12:09
我想你的问题是:
oFlds(cdoSMTPUseSSL) = True这应该是一个整数,而不是布尔值。当VB6将true和int转换为-1时,值为-1。我建议你把这句话改为:
oFlds(cdoSMTPUseSSL) = 1https://stackoverflow.com/questions/29843877
复制相似问题