【发布时间】: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.com 向my-email@gmail.com 发送电子邮件,发件人电子邮件仍然是my-email@gmail.com。希望我在这个问题上说清楚了......如果有什么不清楚的地方请问我:)。
【问题讨论】:
-
尝试将 from 行调整为
msz.From = new MailAddress(vm.Email, vm.Email.ToString()); -
这可行,但收到的邮件格式如下:
valid-email@gmail.com<my-email@gmail.com>。我可以摆脱<my-email@gmail.com>吗? -
@PavelValeriu 这可能是 gmail 这样做的,因为你正在以
my-email@gmail.com身份验证,这对你来说可能是件好事,因为如果你给我发一封声称是来自我我的电子邮件系统会认为你是垃圾邮件。 -
同意,但是有什么方法可以隐藏该验证邮件吗?