MailKit 可以用于 "Contact Me" 表单吗?

Can MailKit be used for "Contact Me" form?

我是网络编程的新手,我正在使用 ASP.NET Core 制作网站。我正在尝试创建一个标准的 "contact me" 页面,用户可以在其中输入姓名、电子邮件、主题和消息。 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);

我可以使用我的 SMTP 服务器发送电子邮件,但显然我希望使用该站点的用户能够向我发送电子邮件的功能。有没有办法为此使用 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");
    }

是的,MailKit 可用于此目的。

您看到的问题是因为 outlook.com 将您的发件人 header 替换为您的电子邮件地址(当您通过 SMTP 登录时,它是 outlook.com 的 "feature") .

您可以通过将 ReplyTo 设置为用户的地址(这样您就可以回复他们)来解决这个问题。

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