2016-09-11 14 views
0

私はWebプログラミングを初めて、ASP.NETコアを使用してWebサイトを作成しています。私は、ユーザーが名前、電子メール、件名、およびユーザー名を入力する標準の「連絡先」ページを作成しようとしています。私は、電子メールを送信するMailKitライブラリを使用しています:ASP.NET Core - SMTPサーバーの問題である「お問い合わせ」ページ

public IActionResult SendEmail(Contact contact) 
{ 
    var emailMessage = new MimeMessage(); 

    emailMessage.From.Add(new MailboxAddress(contact.Name, contact.Email)); 
    emailMessage.To.Add(new MailboxAddress("myname", "myemail")); 
    emailMessage.Subject = contact.Subject; 
    emailMessage.Body = new TextPart("plain") { Text = contact.Message }; 

    using (var client = new SmtpClient()) 
    { 
     client.Connect("smtp-mail.outlook.com", 587); 
     client.Authenticate("myemail", "myemailpassword"); 
     client.Send(emailMessage); 
     client.Disconnect(true); 
    } 
    return RedirectToAction("Index", "Home"); 
} 

私の問題は、私は電子メールを送信するたびにSMTPサーバがちょうど私のSMTPアカウント情報と私の「から」ヘッダを置き換えるということです。これは見通しだけでなく、私が試したすべての主要なSMTPサーバー(Gmailを含む)の場合のようです。この問題が発生しないSMTPサーバーはありますか、またはメールを送信する別の方法を見つける必要はありますか?すべての

+0

なりすましアドレスは、セキュリティのことのように思える「から」 ..私は驚いていない。あなたの電子メールプロバイダのパブリックドキュメントをチェックして、それが達成できるかどうかを確認してください:電子メールアドレスを 'from'ではなく 'subject'フィールドに含めることはとても悪いですか? – ABuckau

答えて

1

まずあなたのコードに問題がある

public IActionResult SendEmail(Contact contact) 
    { 
     var emailMessage = new MimeMessage(); 
     emailMessage.From.Add(new MailboxAddress("myname", "[email protected]")); 
     emailMessage.To.Add(new MailboxAddress("myname", "[email protected]")); 
     emailMessage.Subject = contact.Subject; 
     emailMessage.Body = new TextPart("plain") 
     { 
     Text = String.Format("This visitor:{0} with this email:{1} Send this message:{2}", 
     contact.Name, contact.Email, contact.Message) 
     }; 

     using (var client = new SmtpClient()) 
     { 
      client.Connect("smtp-mail.outlook.com", 587); 
      client.Authenticate("myemail", "myemailpassword"); 
      client.Send(emailMessage); 
      client.Disconnect(true); 
     } 
     return RedirectToAction("Index", "Home"); 
    } 

また、これはあなたを助けることがあり、次の質問を参照してください:

How to send an e-mail with C# through Gmail

+0

これは「私に連絡」ページのためのものですから、「私」セクションを私に渡したいのではないでしょうか? – ecain

+0

上記のコードを編集しました。ホストサーバーがあれば、Gmailや他のメールサーバーの代わりにホストの電子メールサーバーを使用できます。 –

+0

素晴らしいです、ありがとうございます。だから、ホストサーバーを持つことによって、ラズベリーパイなどのローカルサーバーを持つようなことを意味しますか? – ecain