无法通过SMTP从VB6程序发送邮件

时间:2015-04-24 09:34:35

标签: vb6 smtp transport

我有一个遗留的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!!!");                    
                }

感谢任何帮助!

由于

//彼得

1 个答案:

答案 0 :(得分:0)

我认为你的问题在这里:

oFlds(cdoSMTPUseSSL) = True

这应该是整数而不是布尔值。当VB6将true转换为int时,该值为-1。我建议你把这一行换成:

oFlds(cdoSMTPUseSSL) = 1