联系表单不会向我的Gmail帐户发送电子邮件

时间:2012-11-16 20:40:07

标签: vb.net gmail imap

我使用Visual Studio 2012创建了一个简单的表单,但它没有向我的gmail帐户发送电子邮件,页面运行正常但是当我点击发送按钮时出现错误:

  

SMTP服务器需要安全连接,或者客户端未经过身份验证。服务器响应为:5.7.0必须首先发出STARTTLS命令。 j8sm1567623paz.30

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

异常详细信息:System.Net.Mail.SmtpException:SMTP服务器需要安全连接或客户端未经过身份验证。服务器响应为:5.7.0必须首先发出STARTTLS命令。 j8sm1567623paz.30

Source Error: 
Line 14: 
Line 15:         
Line 16:         mailClient.Send(message)
Line 17:         
Line 18:    

Source File: C:\Website SVN II\test\contact.aspx.vb    Line: 16 

来源:

Imports System.Net.Mail

Partial Class contact
 Inherits System.Web.UI.Page

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    sendMail(txtEmail.Text, txtMessage.Text)
End Sub

Protected Sub sendMail(ByVal From As String, ByVal body As String)
    Dim mailservername As String = "smtp.gmail.com"
    Dim message As MailMessage = New MailMessage(From, "nabeel.f@gmail.com", "feedback", body)
    Dim mailClient As SmtpClient = New SmtpClient

    mailClient.Host = mailservername
    mailClient.Send(message)
    message.Dispose()
End Sub

End Class

HTML

        first name
        <asp:TextBox ID="txtFName" runat="server"></asp:TextBox>

        <br />
        <br />

        last name 
        <asp:TextBox ID="txtLName" runat="server"></asp:TextBox>

        <br />
        <br />

        email
        <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>

        <br />
        <br />            

        message: 
        <asp:TextBox ID="txtMessage" runat="server" TextMode="MultiLine"></asp:TextBox>

        <br />

        <asp:Button ID="Button1" runat="server" Text="Send" />

1 个答案:

答案 0 :(得分:1)

两件事:

  1. 您需要使用HTTPS。
  2. 您需要为自己的帐户提供凭据。
  3. 以下是来自here的C#示例:

    using System.Net;
    using System.Net.Mail;
    
    var fromAddress = new MailAddress("from@gmail.com", "From Name");
    var toAddress = new MailAddress("to@example.com", "To Name");
    const string fromPassword = "fromPassword";
    const string subject = "Subject";
    const string body = "Body";
    
    var smtp = new SmtpClient
               {
                   Host = "smtp.gmail.com",
                   Port = 587,
                   EnableSsl = true,
                   DeliveryMethod = SmtpDeliveryMethod.Network,
                   UseDefaultCredentials = false,
                   Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
               };
    using (var message = new MailMessage(fromAddress, toAddress)
                         {
                             Subject = subject,
                             Body = body
                         })
    {
        smtp.Send(message);
    }
    

    vb.net版本:

    Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
        Dim SmtpServer As New SmtpClient()
        SmtpServer.Credentials = New Net.NetworkCredential
                    ("xyz@gmail.com", "password")
        SmtpServer.Port = 587
        SmtpServer.Host = "smtp.gmail.com"
        SmtpServer.EnableSsl = True
    
        mail = New MailMessage()
        Dim addr() As String = TextBox1.Text.Split(",")
        Try
            mail.From = New MailAddress("xyz@gmail.com",
                "Web Developers", System.Text.Encoding.UTF8)
    
            Dim i As Byte
            For i = 0 To addr.Length - 1
                mail.To.Add(addr(i))
            Next
            mail.Subject = TextBox3.Text
            mail.Body = TextBox4.Text
            If ListBox1.Items.Count <> 0 Then
                For i = 0 To ListBox1.Items.Count - 1
                    mail.Attachments.Add(New Attachment
                        (ListBox1.Items.Item(i)))
                Next
            End If
            mail.DeliveryNotificationOptions =
                    DeliveryNotificationOptions.OnFailure
            mail.ReplyTo = New MailAddress(TextBox1.Text)
            SmtpServer.Send(mail)
        Catch ex As Exception
            MsgBox(ex.ToString())
        End Try
    End Sub