2015-01-09 2 views
0

나는 며칠 동안이 문제에 대해 궁리를 벌였으며 성공하지 못했을 때 smtp gmail 서버로 인증하지 않은 정확한 원인을 정확히 찾아 낼 수 없었습니다. 내가 뭘해야 만들었습니다 :SMTP 보안 연결 및 인증

  • 설정의 Gmail을
  • 이 방법 확인 보안 수준이 낮은 앱에 동의하는 것은 OFF입니다
  • 보안 문자 사용은 OFF입니다
  • 사용 제대로 코딩 6 SMTP
  • 웹 페이지를 IIS를
  • asp.net C#을
  • 포트 587 아웃 바운드 및 인바운드 세트는 여기에 모든

가 C입니다 수 있도록 송시

.aspx.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Net.Mail; 
using System.Net; 


public partial class Contact : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void Btn_Submit_Click(object sender, EventArgs e) 
    { 
     MailMessage mailMessage; 
     SmtpClient smtpClient; 

     try 
     { 
      mailMessage = new MailMessage(); 
      mailMessage.To.Add("[email protected]"); 
      mailMessage.From = new MailAddress("[email protected]"); 
      mailMessage.Subject = "ASP.NET e-mail test"; 
      mailMessage.Body = "Hello world,\n\nThis is an ASP.NET test e-mail!"; 

      smtpClient = new SmtpClient("smtp.gmail.com"); 
      smtpClient.Port = 587; 

      NetworkCredential nc = new NetworkCredential("[email protected]", "Meowqwe789doG"); 

      smtpClient.Credentials = nc; 


      smtpClient.EnableSsl = true; 



      smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
      smtpClient.UseDefaultCredentials = false; 



      smtpClient.Send(mailMessage); 

      //Response.Write("E-mail sent!"); 


     } 
     catch (Exception ex) 
     { 
      //Response.Write("Could not send the e-mail - error: " + ex.Message); 
     } 

    } 



} 

HTML

내가 수정을 위해 모든 것을 검색 한 언급했듯이
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage/MasterPage.master" AutoEventWireup="true" CodeFile="Contact.aspx.cs" Inherits="Contact" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="title" Runat="Server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="head" Runat="Server"> 
</asp:Content> 
<asp:Content ID="Content3" ContentPlaceHolderID="contentbody" Runat="Server"> 



    <div class="contact"> 
     <div class="contact-heading text-center"> 
      <div class="container"> 
       <div class="row"> 
        <div class="col-md-6"> 
         <h1>Contact Us</h1> 
         <div class="headingpng"> 
          <img src="img/heading.png" /> 
         </div> 
        </div> 
       </div>   
      </div> 
     </div> 
    </div> 
    <div id="contact-form" class="clearfix"> 
     <h4 class="text-center"> 
      Please fill in the contact form below with any questions you may have. 
     </h4> 
     <ul id="errors" class=""> 
      <li id="info"> 
       There were some problems with your form submission: 
      </li> 
     </ul> 
     <p id="success"> 
      Thanks for your message! We will get back to you ASAP! 
     </p> 
     <div> 
      <label for="name">Name: <span class="required">*</span></label> 
      <input type="text" id="name" name="name" value="" placeholder="John Doe" required="required" autofocus="autofocus" /> 
      <asp:TextBox runat="server" ID="Tb_Name" ></asp:TextBox> 

      <label for="email">Email Address: <span class="required">*</span></label> 
      <input type="email" id="email" name="email" value="" placeholder="[email protected]" required="required" /> 

      <label for="telephone">Telephone: </label> 
      <input type="tel" id="telephone" name="telephone" value="" /> 

      <label for="enquiry">Enquiry: </label> 
      <select id="enquiry" name="enquiry"> 
       <option value="general">General</option> 
       <option value="sales">Sales</option> 
       <option value="support">Support</option> 
      </select> 

      <label for="message">Message: <span class="required">*</span></label> 
      <textarea id="message" name="message" placeholder="Your message must be greater than 20 charcters" required="required" data-minlength="20"></textarea> 

      <span id="loading"></span> 
      <%--<input type="submit" value="Submit" id="submit-button" />--%> 
      <asp:Button runat="server" ID="Btn_Submit" Text="Submit" OnClick="Btn_Submit_Click" /> 
      <p id="req-field-desc"><span class="required">*</span> indicates a required field</p> 
     </div> 
</div> 



</asp:Content> 

, 나는 결국 가지고 올 것을 나는 것입니다 html과 C#을 제대로 수행하면 모든 것이 catch (Exception ex) 코드 줄에서 작동하는 것 같습니다.

[System.Net.Mail.SmtpException] = { "SMTP 서버에 보안 연결이 필요합니다 n 또는 클라이언트가 인증되지 않았습니다. 서버 응답은 : 5.5.1 인증 필요. 사람이 좋은 것 어떤 제안이있는 경우

} "에서 자세히 알아

+0

이메일을받는 방법을 세상 사람들에게 알리므로 Gmail 비밀번호를 지금 변경하십시오. 이와 같은 코드를 게시하는 경우 비밀번호를 숨기십시오. 문제를 해결하기 전에 지금하십시오 –

+1

BTW,'SmtpClient'와'MailMessage'는'using' 블록에 있어야합니다. –

+0

네, 그건 루키 실수였습니다 하하, 오, 이봐, 페이스 파먼이 여기에 간다. 어쨌든 그것은 더미 주소이므로 아무도 들어 가지 않으면 아무 것도 볼 수 없습니다. 다른 한편으로는이 문제에 대한 해결책을 게시 할 위치를 알아야합니다. 나는 그것을 작동시키지 못했고, Windows 7을 사용하여이 문제에 관련된 모든 사람들에게 남겨두고 싶습니다. 코드에도 불구하고, smtp 요청을 Gmail이나 다른 곳으로 보낼 수없는 사람들에게 완벽하게 작동하는 것을 발견했습니다. 괜찮아. 건배 – Crebrum

답변

0

를에만 true로 기본 자격 증명을 변경할 필요가 여기에

smtpClient.UseDefaultCredentials = true; 

는 전체 코드입니다!.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Net; 
using System.Net.Mail; 
public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void Btn_Submit_Click(object sender, EventArgs e) 
    { 
     MailMessage mailMessage; 
     SmtpClient smtpClient; 

     try 
     { 
      mailMessage = new MailMessage(); 
      mailMessage.To.Add("[email protected]"); 
      mailMessage.To.Add("[email protected]"); 
      mailMessage.From = new MailAddress("[email protected]"); 
      mailMessage.Subject = "Change your password"; 
      mailMessage.Body = "Hello Crebrum,\n\nPlease change your password for [email protected]!" + 
       "You posted the password on stack overflow and anyone can access your email now."; 

      smtpClient = new SmtpClient("smtp.gmail.com"); 
      smtpClient.Port = 587; 

      NetworkCredential nc = new NetworkCredential("[email protected]", 
       "{Here is where I masked your password. You are welcome}"); 

      smtpClient.Credentials = nc; 


      smtpClient.EnableSsl = true; 



      smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
      smtpClient.UseDefaultCredentials = true; 



      smtpClient.Send(mailMessage); 

      //Response.Write("E-mail sent!"); 


     } 
     catch (Exception ex) 
     { 
      //Response.Write("Could not send the e-mail - error: " + ex.Message); 
     } 

    } 


}