1

ASP.Net 内 - 組み込みのパスワード回復ウィザードを使用しています。

メール認証ウィザードに SMTP 認証を追加する方法はありますか? web.config に追加する必要はありません。または、分離コードのどこかに挿入できますか?

私の aspx コードは以下のとおりです。現在、コード ビハインドはありません。

       <asp:PasswordRecovery ID="PasswordRecovery1" runat="server" borderStyle="None" 
        borderWidth="1px"  Font-Size="10pt" Font-Names="Verdana" onsendingmail="PasswordRecovery1_SendingMail">
    <TitleTextStyle BackColor="#6B696B" Font-Bold="True" ForeColor="#FFFFFF" />
    <MailDefinition From="info@mydomain.co.uk" Priority="High" 
        Subject="My Domain - new, temporary password" BodyFileName="forgotpassword.txt">
    </MailDefinition>
    <UserNameTemplate>
        <table border="0" cellpadding="1" cellspacing="0" 
            style="border-collapse:collapse;">
            <tr>
                <td>
                    <table border="0" cellpadding="0">

                        <tr>
                            <td align="center" colspan="2" style="font-family:Arial;font-size:Small;">
                                Enter your User Name to receive your password.</td>
                        </tr>
                        <tr>
                            <td align="right" style="font-family:Arial;font-size:Small;">
                                <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label>
                            </td>
                            <td>
                                <asp:TextBox ID="UserName" runat="server"></asp:TextBox>
                                <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" 
                                    ControlToValidate="UserName" ErrorMessage="User Name is required." 
                                    ToolTip="User Name is required." ValidationGroup="PasswordRecovery1">*</asp:RequiredFieldValidator>
                            </td>
                        </tr>
                        <tr>
                            <td align="center" colspan="2" style="color:Red;">
                                <asp:Literal ID="FailureText" runat="server" EnableViewState="False"></asp:Literal>
                            </td>
                        </tr>
                        <tr>
                            <td align="right" colspan="2">
                                <asp:Button ID="SubmitButton" runat="server" CommandName="Submit" Text="Submit" 
                                    ValidationGroup="PasswordRecovery1" />
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
    </UserNameTemplate>
</asp:PasswordRecovery>

現在、私はメッセージを受け取ります:

System.Net.Mail.SmtpFailedRecipientException メールボックスを利用できません。サーバーの応答は次のとおりでした: 認証が必要です

4

2 に答える 2

1

このエラーは、SMTP サーバーがアプリケーションを介して電子メールを送信する前に、アプリケーションがそれ自体を認証する必要があることを意味します。

あなたはおそらくSmtpClientボンネットの下で使用しています。.NET SMTP クライアントの既定値は、アプリケーションの構成ファイル (この場合は web.config) で定義されています。SmtpClient他の唯一の場所は、PasswordRecovery コントロールのイベントを処理するため、手動で管理する場合です。

PasswordRecovery基になる SMTP クライアントを制御するプロパティを公開しません。

WebControlsこれらを使用すると、アプリケーションに対する多くの制御 (ロジックと表示の両方) を放棄することになるため、使用しないことを強くお勧めします。また、提供されたマークアップはプレゼンテーション属性を使用しているため無効であり<table>、レイアウトに使用することは強くお勧めしません。

于 2013-03-30T11:05:50.933 に答える
1
protected void Button1_Click(object sender, EventArgs e)
    {
            try
            {
            DataSet ds = new DataSet();
            using (SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\database\personal.mdf;Integrated Security=True;Connect Timeout=60;User Instance=True"))
            {
            con.Open();
            SqlCommand cmd = new SqlCommand("SELECT UserName,Password FROM Logintable Where emailid= '" + txtEmail.Text.Trim() + "'", con);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(ds);
            con.Close();
            }
            if(ds.Tables[0].Rows.Count>0)
            {



                            System.Net.Mail.MailMessage Msg = new System.Net.Mail.MailMessage();
                            // Sender e-mail address.
                            Msg.From = new MailAddress(txtEmail.Text);
                            // Recipient e-mail address.
                            Msg.To.Add(txtEmail.Text);
                            Msg.Subject = "Your Password Details";
                            Msg.Body = "Hi, <br/>Please check your Login Detailss<br/><br/>Your Username: " + ds.Tables[0].Rows[0]["UserName"] + "<br/><br/>Your Password: " + ds.Tables[0].Rows[0]["Password"] + "<br/><br/>";
                            Msg.IsBodyHtml = true;
                            // your remote SMTP server IP.
                            SmtpClient smtp = new SmtpClient();
                            smtp.Host = "smtp.gmail.com";
                            smtp.Port = 587;
                            smtp.Credentials = new System.Net.NetworkCredential("youremail@gmail.com", "N@@@@@@@@");
                            smtp.EnableSsl = true;
                            smtp.Send(Msg);

                            //Msg = null;
                            Label3.Text = "Your Password Details Sent to your mail";
                            // Clear the textbox valuess
                            txtEmail.Text = "";
                    }
                        else
                        {
                              lbltxt.Text = "The Email you entered not exists.";
                        }
                        }
                     catch (Exception ex)
                    {
                        Label2.Text = "Error Occured: " + ex.Message.ToString();

                    }
            }
       }
于 2015-01-07T05:49:58.303 に答える