2015-04-04 162 views
0

所以我试图通过VB.net代码发送电子邮件,我不断收到此错误。我禁用了防火墙,并且在没有从文本框中获取文本时,我可以成功发送电子邮件。我知道当我发送带有1行主体的电子邮件时,它具有正确的设置。发送邮件失败。无法连接到远程服务器。一个套接字操作

Private Sub SendMessage(ByVal SmtpHost As String, ByVal SmtpPort As Integer, ByVal ssl As Boolean, ByVal SmtpUsername As String, ByVal SmtpPassword As String, ByVal mail_from As String, ByVal display_name As String, ByVal Send_To As String, ByVal subject As String, ByVal Body As String, Optional ByVal Attachments As String() = Nothing) 
     Using smtp As New SmtpClient 
      smtp.Host = SmtpHost 
      smtp.Port = SmtpPort 
      smtp.UseDefaultCredentials = False 
      smtp.Credentials = New Net.NetworkCredential(SmtpUsername, SmtpPassword) 
      smtp.EnableSsl = ssl 

      Dim message As New MailMessage() 
      Try 
       message.From = New MailAddress(mail_from, display_name, System.Text.Encoding.UTF8) 
       message.To.Add(Send_To) 
       message.Subject = subject 
       message.Body = Body 
       If Attachments IsNot Nothing Then 
        For Each attachment As String In Attachments 
         message.Attachments.Add(New Attachment(attachment)) 
        Next 
       End If 
       message.ReplyToList.Add(New MailAddress(mail_from)) 

       smtp.Send(message) 
      Catch ex As Exception 
       Debug.WriteLine(ex) 
      End Try 
     End Using 

错误:

System.Net.Mail.SmtpException: Failure sending mail. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A socket operation was attempted to an unreachable network 0.0.0.1:465 
    at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) 
    at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception) 
    --- End of inner exception stack trace --- 
    at System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object owner, Boolean async, IPAddress& address, Socket& abortSocket, Socket& abortSocket6) 
    at System.Net.PooledStream.Activate(Object owningObject, Boolean async, GeneralAsyncDelegate asyncCallback) 
    at System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout) 
    at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint) 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 
    --- End of inner exception stack trace --- 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 
    at EmailSender.Form1.Timer2_Tick(Object sender, EventArgs e) 
+0

你没有提到你得到的错误...也请澄清这一点,“但是当我在文本框中键入它不只是一条线,可以这样吗?我该如何做到这一点?会发送多行的电子邮件吗?“这没有任何意义...... – Codexer 2015-04-04 03:06:01

+0

我更改了Smtp电子邮件代码,但仍然遇到同样的问题,我更新了错误的问题。 – user3329318 2015-04-04 03:08:25

+0

您有一个计时器正在执行此操作?... – Codexer 2015-04-04 03:24:47

回答

0
Try 
Dim mMailMessage As MailMessage = New System.Net.Mail.MailMessage() 
Dim fromEmail As String = "<sender_mail_ID" 
Dim fromPW As String = "<sender_password>" 
Dim toEmail As String = "<Receiver_mail_ID>" 
mMailMessage.From = New MailAddress(fromEmail) 
mMailMessage.[To].Add(toEmail) 
mMailMessage.Subject = "<Subject goes here>" 
mMailMessage.Body = "<Message AKA Body goes here>" 
mMailMessage.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure 

Dim smtpClient As New SmtpClient("smtp.gmail.com", 587) 
smtpClient.EnableSsl = True 
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network 
smtpClient.UseDefaultCredentials = False 
smtpClient.Credentials = New NetworkCredential(fromEmail, fromPW) 

smtpClient.Send(mMailMessage.From.ToString(), mMailMessage.[To].ToString(), mMailMessage.Subject, mMailMessage.Body) 

Catch ex As Exception 

End Try 

不要忘记使用:

Imports System.Net.Mail 
Imports System.Net 
0

您的代码可能没有任何错误。但是,如果您的邮件帐户配置不正确,则会发生此特定的'发送邮件失败'。您必须允许访问第三方或外部应用程序才能使用您的邮件的SMTP服务。你可以在邮件设置中改变它。

更改并尝试。这可能会起作用。

+0

我认为这也是原因,因为我记得不得不做在过去,我会环顾四周,并回过头看看会发生什么。 – user3329318 2015-04-04 06:32:36

+0

是否允许访问安全性较低的应用程序?如果是这样,我已打开了。 – user3329318 2015-04-04 06:33:31

+0

编号。您不需要做这一点。只需允许SMTP访问。您使用哪种服务发送邮件?我的意思是像Gmail或其他? – Mahadev 2015-04-04 06:36:13

0

我的2美分。在我的情况下,我把所有东西都打好了,什么都没有意识到我在后台运行了私有internetaccess应用程序,导致无法连接到服务器。不是很酷:(

+0

这不是答案 – Prasad 2016-03-09 06:15:37

相关问题