2

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" />
4

1 に答える 1

1

2つのこと:

  1. HTTPS を使用する必要があります。
  2. アカウントの資格情報を提供する必要があります。

ここからの 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
于 2012-11-16T21:08:08.227 に答える