0

我尝试在 mvc 4 中创建一个联系表单,它可以工作,但发件人(电子邮件和姓名)始终与我在 smtp 凭据中使用的相同,我想显示电子邮件和发送它的用户的姓名从我的联系表格中,有什么帮助吗?这是我的代码:

模型:

[Required(ErrorMessage="Requerido")]
public string nombre { get; set; }

[Required(ErrorMessage = "Requerido")]
[DataType(DataType.EmailAddress)]
public string email { get; set; }

[Required(ErrorMessage = "Requerido")]
public string telefono { get; set; }

[Required(ErrorMessage = "Requerido")]
public string comentario { get; set; }

控制器:

[HttpPost]
    public ActionResult Index(contactModel model)
    {
        if (ModelState.IsValid)
        {
            insertContact(model.nombre, model.email, model.telefono, model.comentario);
            TempData["notice"] = "your form was submitted.";
            return RedirectToAction("Index", "Home");
        }  

        return View();
    }

private void insertContact(string nombre, string email, string telefono, string comentario)
    {    
        MailMessage mail = new MailMessage();
        mail.To.Add("addressee@example.com");
        mail.From = new MailAddress(email, nombre);
        mail.Sender = new MailAddress(email, nombre);
        mail.Subject = "Solicito informacion";
        mail.Body = telefono + comentario;
        mail.IsBodyHtml = true;

        SmtpClient smtp = new SmtpClient();
        smtp.Host = "smtp.gmail.com";
        smtp.Port = 25;
        smtp.UseDefaultCredentials = false;
        smtp.Credentials = new NetworkCredential("my.email@gmail.com","my.pass");
        smtp.EnableSsl = true;
        smtp.Send(mail);
    }
4

1 回答 1

2

我想从我的联系表格中显示电子邮件和发送电子邮件的用户的姓名,有什么帮助吗?

是的。不要那样做。听说过垃圾邮件吗?人们在其他域帐户中发送电子邮件?

对抗这种情况的一种方法是 SPF - 一种标准方法,适用于不是由想要被滥用的人运行的任何域。

SPF 告诉域允许哪个服务器发送电子邮件。

所以,现在发生的事情是这样的:

  • 我填写了你的联系表格。
  • 您的网络服务器将电子邮件发送到您的电子邮件服务器。它使用我的电子邮件作为发件人。
  • 您的电子邮件服务器看到我的域,检查 SPF 记录并将其丢弃,因为您的 wqeb 服务器不允许为我的域发送电子邮件。这是一个硬故障条件,明智的电子邮件服务器只是将已确认的垃圾邮件扔掉。

接触太多了。我希望你讨厌联系人,因为 gmail 会很乐意丢弃你得到的任何信息。

您需要将其列入白名单。但坏消息 - 尝试让 gmail 将您的网络服务器列入白名单,玩得开心。即不可能。

就这么简单。

不要做。当您想使用公共电子邮件服务器时,不要假装自己是其他人。

于 2014-02-23T19:02:13.573 回答