2011-11-17 2 views
1

전자 메일을 수신했을 때 웹 페이지에서 보낸 메일은 보낸 사람과받는 사람 모두 [personalemailremoved] @ gmail.com입니다. 사용자가 웹 사이트에 입력 한 gmail의 메일을보고 변경하려면 무엇이 필요합니까?Gmail에서 WebMail.SendMV3의 주소가 잘못되었습니다. C#

내가 사용 Gmail은 내 양식으로 이메일을 보내 Gmail을 통해 그것을받을 :

Contact.cshtml

@using (Html.BeginForm("Contact", "Home", FormMethod.Post, new { id = "contactform" })) 
    { 

     <ol> 
      <li> 
       <label for="mail"> 
        Din E-post*</label> 
       @Html.TextBox("mail", null, new { @class = "text" }) 
      </li> 
      <li> 
       <label for="rubrik"> 
        Rubrik*</label> 
       @Html.TextBox("rubrik", null, new { @class = "text" }) 
      </li> 
      <li> 
       <label for="message"> 
        Meddelande*</label> 
       @Html.TextArea("meddelande") 
      </li> 
      <li class="buttons"> 
       <input type="submit" name="imageField" id="imageField" value="Skicka meddelande" 
        class="button" /> 
       <div class="clr"> 
       </div> 
      </li> 
     </ol> 
    } 

HomeController :

public ActionResult Contact(string mail, string rubrik, string meddelande) 
     { 
      try 
      { 
       WebMail.SmtpServer = "smtp.gmail.com"; 
       WebMail.EnableSsl = true; 
       WebMail.UserName = "[email protected]"; 
       WebMail.Password = "MYPASSWORD"; 
       WebMail.SmtpPort = 587; 
       WebMail.Send(
         "[email protected]", 
         rubrik, 
         meddelande, 
         mail 
        ); 

       return RedirectToAction("MailSent"); 
      } 
      catch (Exception) 
      { 
       ViewData.ModelState.AddModelError("", "Kontrollera uppgifterna"); 
      } 

      return View("Contact"); 
     } 
     public ActionResult MailSent() 
     { 
      return View(); 
     } 
+2

'president @ whitehouse.gov'를 발신자 주소로 입력하면 어떨까요? 전자 메일의 수신자가 겁 먹을 것 같지 않습니까? 즉, 'president @ whitehouse.gov'가 아닌 이상이 주소 대신 이메일을 보낼 수 없습니다. –

+1

@DarinDimitrov : 멋진 의견. 다른 출발지 주소를 지정하는 것은 사소한 일입니다. 이것은 항상 수행되는 것입니다. 나에게 이메일 주소를 알려 주면 나 자신에게 메시지를 보낼 것이다. –

+0

@Sixhouse, Gmail의 smtp 서버를 통해 전송됩니까? – GvS

답변

1

Gmail은 실제로이를 인증 된 계정으로 자동 변경하므로 사용자가 원할 경우 다른 서버를 사용해야합니다.

다른 SMTP 서버를 사용하고 싶지 않으면 전혀 사용하지 마십시오! 메일 서버에 연결할 때 자격 증명을 제공하지 마십시오. 이것이 SMTP 서버가 메일을 보내는 방법입니다. 이는 gmail.com 이메일 주소로 사용자에게 이메일을 보내는 경우에만 작동한다는 점에 유의해야합니다. 그렇지 않으면 오픈 릴레이로 사용하고 있다고 생각합니다. "To :"필드에 다른 주소를 넣을 수 있습니다. SMTP 통신을 할 때 주소를 추가 할 수 없습니다. 나는 실제로 대학에서이 정확한 것을 독립적으로 연구했지만, 나는 여전히 나의 코드를 가지고있다. 실제로 SMTP 통신을 직접 수행해야 할 수도 있습니다. SMTP 사양에 대한 빠른 가이드가 필요하다면 제가 설명했던 유인물에 대한 링크를 게시 할 수 있습니다 (공식보다 적지 만 RFC보다 읽기 쉽습니다).

0

대신 ASP와 결합 System.Net.Mail을 사용할 수 있습니다 .NET의 Mail Message 클래스. 다음은 예입니다.

using System.Net.Mail; 

// Create email code 
MailMessage m = new MailMessage(); 

m.From = new MailAddress("[email protected]", "display name"); 
m.To.Add("[email protected]"); 
m.Subject = "subject"; 
m.Body = "Body"; 

SmtpClient smtp = new SmtpClient("Your SMTP Server"); 
smtp.Send(m); 
+0

Gmail SMTP 서버를 계속 사용하고 있기 때문에이 방법은 작동하지 않습니다. –

+0

@DanBalthaser SMTP 서버는 코드 예에서 지정되지 않았습니다. Cleary 그것을 사용하려면 SMTP 서버를 입력해야합니다. –

+0

@Dan Balthaser 그가 웹 사이트를 만들고 있다면, 그는 그가 호스트를 가질 것이라고 생각합니다. 대부분의 호스트에는 사용할 수있는 SMTP 서버가 있습니다. –

1

Gmail을 통한 릴레이는 항상 인증 된 사용자를에서 설정합니다. 자유롭게 주소를 설정하려면 다른 smtp 서버를 사용해야합니다.

0

대부분의 SMTP 서버는 인증 된 사용자로 다른 발신자를 허용하지 않습니다. 또는 메일을 보낼 도메인에서 가져옵니다.

무료 smtp 서버가있어 모든 발신자로부터 메일을 릴레이하지만 곧 일부 블랙리스트에 저장됩니다.

도메인의 소유자는 add some code to their DNS server 일 수 있으며, 이름이 이메일을 보낼 수있는 메일 서버를 식별 할 수 있습니다. 이는 수신자가 확인할 수 있으며 수신자는이를 사용하여 잘못된 발신자를 식별 할 수 있습니다.

이메일에서 '보낸 사람'입력란을 조정하고 메일이 도착하는지 확인하는 것은 쉽지 않습니다.

"회신 대상"필드를 변경할 수 있습니다. 그러나 이것 또한 당신의 "스팸 점수"를 조금 높일 것입니다.

관련 문제