簡體   English   中英

如何在asp.net core中使用Mailkit通過“與我們聯系”表單發送電子郵件

[英]How to Send an email through “Contact us” Form using Mailkit in asp.net core

大家好!

我在使用“聯系表”發送電子郵件時遇到問題。 目的是使用戶輸入他的電子郵件地址,主題和消息,並且該電子郵件會顯示在我的郵箱中。 我遇到的問題是電子郵件不是來自用戶輸入的電子郵件地址,而是來自應該接收郵件的地址。 基本上,我一直向自己發送電子郵件。 我可以毫無問題地向用戶發送電子郵件,例如發票或訂單狀態...

我試圖在調試模式下運行我的應用程序,一切似乎都很好。 Post方法模型具有我輸入的值,SendEmail方法未用我的地址替換“ FROM ADDRESS”。

private string recipientAddress = "myaddress@domain.com"

 public IActionResult Contact(ContactViewModel model)
    {
        if (!ModelState.IsValid)
        {
            return View();
        }
        emailSender.SendEmail(recipientAddress, model.Subject, model.EmailBody, model.SenderEmail);
        return RedirectToAction("Index");
    }

public void SendEmail(string recipient, string subject, string emailBody, string emailSender = null)
    {
        string smtpServer = emailConfiguration.SmtpServer;
        int smtpPort = emailConfiguration.SmtpPort;
        string smtpUsername = emailConfiguration.SmtpUsername;
        string smtpPassword = emailConfiguration.SmtpPassword;

        var message = new MimeMessage();
        var fromAddress = string.IsNullOrEmpty(emailSender) ? smtpUsername : emailSender;
        message.To.Add(new MailboxAddress(recipient));
        message.From.Add(new MailboxAddress(fromAddress));
        message.Subject = subject;
        message.Body = new TextPart(TextFormat.Html)
        {
            Text = emailBody
        };

        using (var smtpClient = new SmtpClient())
        {              
            smtpClient.Connect(smtpServer, smtpPort);

            smtpClient.AuthenticationMechanisms.Remove("XOAUTH2");
            smtpClient.Authenticate(smtpUsername, smtpPassword);
            smtpClient.Send(message);
            smtpClient.Disconnect(true);
        }
    }

如果許多SMTP服務器(例如GMail)不匹配,它們就會將“發件人”地址替換為用於身份驗證的地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM