2013-04-06 5 views
1

Я тщательно искал сеть для решения этой проблемы и еще не нашел ее. Я пытаюсь создать простой почтовый клиент для отправки текстовых документов в виде исходного текста через SMTP. Для этого я использую библиотеку System.Net.Mail в версии VB.Net версии 3.5System.Net.Mail VB.NET 3.5 System.Net.Mail.SmtpException

Когда я пытаюсь отправить сообщение, я получаю сообщение System.Net.Mail.SmtpException. Я пробовал использовать разные почтовые провайдеры в разных настройках и еще не решил эту проблему. Эта проблема была протестирована на трех отдельных компьютерах, каждая из которых имеет разные спецификации. код выглядит следующим образом:

Private Sub SendEmailMessage() 
Try 
If My.Computer.Network.IsAvailable Then 
     If DataValid() Then 
       'Data is valid, send the eMail. 
       Dim MailReceiver As String = txtReceiver.Text 
       'Create the eMail Message. 
       'Dim message As New MailMessage(from:=txtMailAddress.Text, to:=MailReceiver, subject:="(MTG) <CARD> " & ID, body:="<p>" & ConstructedFileString() & "<p>") 
       Dim message As New MailMessage 
       Dim MessageFrom As New MailAddress(txtMailAddress.Text) 
       Dim MessageTo As New MailAddress(MailReceiver) 
       With message 
        .From = MessageFrom 
        .To.Add(MailReceiver) 
        .Subject = "(MTG) CARD " & ID 
        .IsBodyHtml = True 
        .Body = "<p>" & ConstructedFileString() & "<p>" 
       End With 
       'Establish eMail Client 
       Dim emailClient As New SmtpClient() 
       Dim emailCredentials As New Net.NetworkCredential 

       With emailCredentials 
        .UserName = txtMailAddress.Text 
        .Password = txtPassword.Text 
        .Domain = "gmail.com" 
       End With 

       With emailClient 
        .Host = txtHostServer.Text 
        .Port = txtPort.Text 
        .Credentials = emailCredentials 
        .EnableSsl = chkSSL.Checked 
        .Timeout = 5000 
       End With 

       'Dim MailDomain As String = "" 
       'Dim PositionAt As Byte = 0 
       'PositionAt = txtMailAddress.Text.IndexOf("@") 
       'For i = PositionAt + 1 To Len(txtMailAddress.Text) 
       ' MailDomain = MailDomain & txtMailAddress.Text.Chars(i) 
       'Next 
       'Debug.Print(MailDomain) 

       If My.Computer.Network.Ping(hostNameOrAddress:=emailClient.Host) Then 
        'Send the message. 
        emailClient.Send(message) 
       Else 
        'Could not ping, do not send. 
        ErrorOut("Could not reach the eMail Server.") 
       End If 


      Else 
       'Data is not valid, do not send the eMail. 
      End If 
    Else 
     ErrorOut("No network could be found. Check your network configurations.") 
    End If 
Catch ex As Security.SecurityException 
    'Security exception 
    ErrorOut("A Security Exception was raised.") 
Catch ex As Net.NetworkInformation.NetworkInformationException 
    'Network info exception 
    ErrorOut("Exception raised when retrieving network information.") 
Catch ex As Net.NetworkInformation.PingException 
    'Ping exception 
    ErrorOut("Exception raised when pinging the network.") 
Catch ex As Net.Mail.SmtpFailedRecipientException 
    'Recipient exception 
    ErrorOut("Mail Recipient Exception raised.") 
Catch ex As Net.Mail.SmtpException 
    'Mail Server Exception 
    ErrorOut("Mail Server Exception raised") 
Catch ex As Exception 
    'Generic Exception raised. 
    ErrorOut("General Exception raised", True) 
End Try 
End Sub 

Любая помощь по этому вопросу очень ценится, спасибо.

Стек след:

System.Net.Mail.SmtpException: The operation has timed out. 
at System.Net.Mail.SmtpClient.Send(MailMessage message) 
at NetProj.EmailDialog.SendEmailMessage() in ... 
+2

Каковы детали исключения, включая внутренние исключения? Это нужная информация. – Oded

+0

Pro tip - передать переменную исключений 'ex' в' ErrorOut' и использовать 'ex.ToString()' для получения трассировки стека, внутренних исключений и т. Д. – Oded

+0

. У вас есть антивирус mcafee, установленный на этой машине? Однажды я столкнулся с одной проблемой, но это было связано с антивирусом. – Raman

ответ

1

Я считаю, что это известная проблема SSL с System.Net.Mail

http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx

Он был там в рамки 3,5 не уверен 4.0, если они исправлено это или нет.

+0

Угадайте, что мне придется попробовать 4.0; Спасибо за ответ. Я понятия не имею, как это не получилось при поиске, спасибо снова ^^ –

+0

Рад, что я мог бы помочь. Я вспомнил об этом, поскольку один из моих знакомых столкнулся с одной и той же проблемой, и, наконец, ему пришлось использовать некоторую стороннюю библиотеку. И, пожалуйста, отметьте как ответ и повысьте, если это поможет. Спасибо :) – Raman

+0

Оказывается, я использую VS2008, ставя меня в довольно невыгодное положение, у меня есть .NET 4.0 Framework ... но я не могу ссылаться на нее. Я не думаю, что они выпустят 2010 как бесплатное программное обеспечение ... Веселые времена с Microsoft: D И мне нужно 15 rep, чтобы повысить :(иначе я бы уже. –

Смежные вопросы