【问题标题】:C# replace the mail from NetworkCredentialC# 替换来自 NetworkCredential 的邮件
【发布时间】:2016-09-01 12:08:35
【问题描述】:

我有一个使用 ASP.NET 和 C# 制作的联系表格,我想将来自 NetworkCredential 的电子邮件替换为电子邮件字段中指定的电子邮件。

我会用一个例子来解释这个问题。

这是我的代码:

public ActionResult Index(EmailFormModel vm)
{
    if (ModelState.IsValid)
    {
        MailMessage msz = new MailMessage();
        msz.From = new MailAddress(vm.Email); //Email which you are getting from contact us page 
        msz.To.Add("my-email@gmail.com"); //Where mail will be sent 
        msz.Subject = vm.Subject;
        msz.Body = vm.Message;
        SmtpClient smtp = new SmtpClient();

        smtp.Host = "smtp.gmail.com";
        smtp.Port = 587;
        smtp.Credentials = new System.Net.NetworkCredential("my-email@gmail.com", "my-password");
        smtp.EnableSsl = true;
        smtp.Send(msz);

        ModelState.Clear();
    }

    return View();
}

查看:

<% using (Html.BeginForm("Index", "SendMail", FormMethod.Post))
   {%>
        <%: Html.ValidationSummary("Please correct the errors and try again.") %>
        <p>Email: </p>
        <%: Html.TextBoxFor(m => m.Email)%>
        <p>Subject: </p>
        <%: Html.TextBoxFor(m => m.Subject)%>
        <p>Message: </p>
        <%: Html.TextBoxFor(m => m.Message)%>
        <input type ="submit" value ="Send" />
<% } %>

示例: 当我发送电子邮件时,我希望它从vm.Email 中指定的地址而不是my-email@gmail.com(来自NetworkCredential 的地址)发送到`my-email@gmail.com。

现在,如果我尝试从valid-email@gmail.commy-email@gmail.com 发送电子邮件,发件人电子邮件仍然是my-email@gmail.com。希望我在这个问题上说清楚了......如果有什么不清楚的地方请问我:)。

【问题讨论】:

  • 尝试将 from 行调整为 msz.From = new MailAddress(vm.Email, vm.Email.ToString());
  • 这可行,但收到​​的邮件格式如下:valid-email@gmail.com&lt;my-email@gmail.com&gt;。我可以摆脱&lt;my-email@gmail.com&gt; 吗?
  • @PavelValeriu 这可能是 gmail 这样做的,因为你正在以 my-email@gmail.com 身份验证,这对你来说可能是件好事,因为如果你给我发一封声称是来自我我的电子邮件系统会认为你是垃圾邮件。
  • 同意,但是有什么方法可以隐藏该验证邮件吗?

标签: c# asp.net email smtp


【解决方案1】:

您是否尝试过设置发件人属性

   msz.Sender = new MailAddress(vm.Email)

【讨论】:

    【解决方案2】:

    您所做的事情会导致电子邮件身份验证出现问题,并且由于您使用的是 GMAIL,这将是一个真正的问题,他们尊重 DMARC 记录。很大一部分人填写了您的联系我们表格,您将永远不会收到来自的信息。随着 DMARC 的开始,您不能再用客户的电子邮件地址填写“发件人”字段。在过去,这是一种可以接受的做法。

    看看这篇文章:Contact Form Nightmare

    文章展示了如何处理更流行的情况的不同方法,但我认为您也可以在客户电子邮件中使用“回复:”字段,您绝对不想使用 FROM场地。

    我敦促您重新考虑您要完成的工作,因为这会阻碍您与观众的交流。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多