2015-11-03 165 views
1

我有一個程序,我已經設置了一個家庭自動化應用程序。我的目標是在發生嚴重錯誤時將其發送給我,但我遇到了smtp部分的問題。我能夠使用我公司的SMTP工作,使我的應用程序工作得很好(基本上,我想在嘗試轉向免費選項之前先開始一個工作的,封閉的系統,因爲那些限制性更強,具有諷刺意味)。是否仍可以使用SMTP發送電子郵件/文本?

我已經在網上運行了很多很多的例子,它似乎是SMTP阻塞某些方法/端口的問題。我已經嘗試了下面的代碼與端口25,465和587(在線使用的公共端口)。我也嘗試將EnableSs1更改爲false,但那也沒有奏效。

我知道我可以爲SMTP服務器支付費用,但我試圖首先以便宜的價格購買(免費)。實際上,我並不期望需要很多通知。我發現turboSMTP,這是免費的,但我不得不使用免費的電子郵件地址,他們驗證您的家庭地址(這聽起來有點陰涼......)。

無論如何,我的代碼如下。如果有任何方法可以使這項工作(或者如果你知道一個免費的,可用的SMTP或甚至另一種方法來做到這一點),請讓我知道!

我非常願意自己做這個工作,我不只是試圖從別人那裏得到解決方案,但是我知道該怎麼做的最後。任何幫助,你可以給我,將不勝感激。謝謝!

Try 
     Dim Smtp_Server As New SmtpClient 
     Dim e_mail As New MailMessage() 
     Smtp_Server.UseDefaultCredentials = True 
     Smtp_Server.EnableSsl = False 
     Smtp_Server.Host = "smtp.gmail.com" 
     Smtp_Server.Port = 465 
     Smtp_Server.EnableSsl = True 
     e_mail.From = New MailAddress("From Email Address", "From Email Name") 
     e_mail.To.Add("My Phone [email protected]") 

     e_mail.Subject = "Hello there!" 
     e_mail.IsBodyHtml = False 
     e_mail.Body = txtMessage.Text 

     Smtp_Server.Send(e_mail) 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
+1

此代碼接收的錯誤消息是什麼?任何與無效憑證有關的東西? – Steve

+0

哦,這是一個相當長的響應端口25或587(失敗,發送電子郵件,無法連接到刪除服務器,試圖訪問一個套接字的方式禁止它的訪問權限等)。聽起來像這些端口只是平坦的被阻止以這種方式被使用。雖然端口465似乎超時。 –

+0

你表明你想要的只是一項免費服務。 FWIW,我在AOL上添加了一個NetworkCredential來測試你的代碼,它工作正常。根據他們的設置說明,只需使用端口587和Enablessl = True即可。 – TnTinMn

回答

0
Imports System.Net.Mail 
... 
Try 
     Dim Email As New MailMessage() 
     Email.From = New MailAddress("[email protected]") 
     Email.To.Add("[email protected]") 
     Email.Subject = "TEST GMAIL" 
     Email.IsBodyHtml = False 
     Email.Body = TextBox1.Text 

     Dim EmailClient As New SmtpClient("smtp.gmail.com", 587) 
     EmailClient.EnableSsl = True 
     EmailClient.Credentials = New Net.NetworkCredential("[email protected]", "password") 
     EmailClient.Timeout = 7000 
     EmailClient.Send(Email) 

Catch ex As SmtpException 
     MsgBox(ex.StatusCode & vbCrLf & ex.Message, vbCritical, "SMTP Error!") 
End Try 

奇怪。 Google幫助建議使用端口465 - 不工作,超時。在端口587發送郵件。 EnableSsl必須設置爲True。在憑證中,用戶名必須是完整的電子郵件地址。

在VB2010上測試沒有錯誤。電子郵件立即交付。

UPDATE:以毫秒爲單位添加超時並將catch修改爲SmtpException。 目標框架:.NET Framework 4客戶端配置文件

+0

我猜測它可以在沒有兩步授權或商業賬戶的賬戶(比如我自己擁有的賬戶)中工作......你沒有得到安全例外嗎? – fabrosell

+0

嗯...我有正常的帳戶沒有2步驟驗證...發送快速沒有錯誤,沒有問題... – c4pricorn

+0

嗯。這真的很奇怪。我直接將你的代碼粘貼到我的應用程序中(更新了認證),它似乎不起作用(我得到「無法發送」)。我想這可能意味着端口在工作時被阻塞(IT告訴我不是這樣),它在電子郵件收件人端被阻止(在我的情況下,@ mms.att.net和@ hotmail.com) ,或者它可能與VB2012有關?我的計算機上有VB2010,我也會在那裏嘗試。我會讓你知道它是怎麼回事! –