我使用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" />
答案 0 :(得分:1)
两件事:
以下是来自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