我是网络编程的新手,正在使用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");
}
答案 0 :(得分:1)
是的,MailKit可用于此目的。
您看到的问题是因为outlook.com正在用您的电子邮件地址替换您的From标头(当您通过SMTP登录时,它是outlook.com的“功能”)。
您可以通过将ReplyTo设置为用户的地址来解决此问题(以便您可以回复它们)。
或者您可以尝试将发件人设置为用户的地址,并将发件人设置为您的地址(不确定这是否有效)。