是否仍然可以使用SMTP发送电子邮件/文本?

时间:2015-11-03 22:49:11

标签: vb.net email text 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 Number@mms.att.net")

        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 个答案:

答案 0 :(得分:0)

Imports System.Net.Mail
...
Try
        Dim Email As New MailMessage()
        Email.From = New MailAddress("xxxxxxx@gmail.com")
        Email.To.Add("other@provider.com")
        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("xxxxxxx@gmail.com", "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客户端配置文件