MailKit可以用于“联系我”表格吗?

时间:2016-09-10 01:37:47

标签: c# asp.net-mvc email asp.net-core-1.0 mailkit

我是网络编程的新手,正在使用ASP.NET Core创建一个网站,我正在尝试创建一个标准的“与我联系”页面,用户可以在其中输入姓名,电子邮件,主题和消息。 ASP.NET Core还没有System.Net.Mail,所以我不能使用它。

我看到MailKit可用于发送电子邮件,但我无法弄清楚如何将其用于联系页面。我知道使用这段代码

 using (var client = new SmtpClient ()) {
            client.Connect ("smtp.friends.com", 587, false);

            // Note: since we don't have an OAuth2 token, disable
            // the XOAUTH2 authentication mechanism.
            client.AuthenticationMechanisms.Remove ("XOAUTH2");

            // Note: only needed if the SMTP server requires authentication
            client.Authenticate ("joey", "password");

            client.Send (message);
            client.Disconnect (true);

我可以使用我的SMPT服务器发送电子邮件,但显然我希望使用该网站的用户能够向我发送电子邮件。有没有办法使用MailKit,或者我需要找到另一种解决方案吗?谢谢。

编辑: 这是我成功发送电子邮件的代码,但它总是说它是从我发送给我的。

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");
    }

1 个答案:

答案 0 :(得分:1)

是的,MailKit可用于此目的。

您看到的问题是因为outlook.com正在用您的电子邮件地址替换您的From标头(当您通过SMTP登录时,它是outlook.com的“功能”)。

您可以通过将ReplyTo设置为用户的地址来解决此问题(以便您可以回复它们)。

或者您可以尝试将发件人设置为用户的地址,并将发件人设置为您的地址(不确定这是否有效)。