使用WebMail.Send MV3 C#从gmail中的地址错误

时间:2011-11-17 13:56:51

标签: c# asp.net-mvc-3 gmail webmail

当我收到电子邮件时,当我从我的网页发送邮件时,来自和[personalemailremoved] @ gmail.com。如果用户在网站上填写了gmail中的邮件,我需要更改哪些内容才能查看?

我使用Gmail在我的表单中发送电子邮件并通过gmail接收:

Contact.cshtml

@using (Html.BeginForm("Contact", "Home", FormMethod.Post, new { id = "contactform" }))
    {

        <ol>
            <li>
                <label for="mail">
                    Din E-post*</label>
                @Html.TextBox("mail", null, new { @class = "text" })
            </li>
            <li>
                <label for="rubrik">
                    Rubrik*</label>
                @Html.TextBox("rubrik", null, new { @class = "text" })
            </li>
            <li>
                <label for="message">
                    Meddelande*</label>
                @Html.TextArea("meddelande")
            </li>
            <li class="buttons">
                <input type="submit" name="imageField" id="imageField" value="Skicka meddelande"
                    class="button" />
                <div class="clr">
                </div>
            </li>
        </ol>
    }

HomeController中:

 public ActionResult Contact(string mail, string rubrik, string meddelande)
        {
            try
            {
                WebMail.SmtpServer = "smtp.gmail.com";
                WebMail.EnableSsl = true;
                WebMail.UserName = "personalemailremoved@gmail.com";
                WebMail.Password = "MYPASSWORD";
                WebMail.SmtpPort = 587;
                WebMail.Send(
                        "personalemailremoved@gmail.com",
                        rubrik,
                        meddelande,
                        mail
                    );

                return RedirectToAction("MailSent");
            }
            catch (Exception)
            {
                ViewData.ModelState.AddModelError("", "Kontrollera uppgifterna");
            }

            return View("Contact");
        }
        public ActionResult MailSent()
        {
            return View();
        }

4 个答案:

答案 0 :(得分:1)

通过gmail中继将始终将from设置为经过身份验证的用户。为了自由设置发件人地址,你需要使用不同的smtp服务器。

答案 1 :(得分:1)

Gmail实际上会自动将其更改为经过身份验证的帐户,因此如果您想这样做,则需要使用其他服务器。

如果您不想使用其他SMTP服务器,请不要使用任何服务器!连接到邮件服务器时,请不要为其提供凭据。这是SMTP服务器发送邮件的方式。请务必注意,只有在您向gmail.com发送电子邮件地址的用户发送电子邮件时才会有效。否则它会认为您将其用作开放中继。您可以在“收件人:”字段中包含其他地址,在进行SMTP通信时无法添加它们。我实际上在大学里做了一个关于这个问题的独立研究,我仍然有我的代码。您可能实际上需要手动进行SMTP通信。如果你需要一个SMTP规范的快速指南,我可以发布一个链接到我所做的解释它的讲义(虽然它不是官方的,它应该比RFC更容易阅读。)

答案 2 :(得分:0)

您可以使用System.Net.Mail代替ASP.NET的Mail Message类。这是一个例子:

using System.Net.Mail;

// Create email code
MailMessage m = new MailMessage();

m.From = new MailAddress("address@gmail.com", "display name");
m.To.Add("address@gmail.com");
m.Subject = "subject";
m.Body = "Body";

SmtpClient smtp = new SmtpClient("Your SMTP Server");
smtp.Send(m);

答案 3 :(得分:0)

大多数smtp服务器不接受作为经过身份验证的用户的其他发件人。或者他们应该从域发送邮件。

有一些免费的smtp服务器,它会从每个发件人中继邮件,但很快就会出现在黑名单上。

域的所有者,add some code to their DNS server,可以识别可能以其名义发送电子邮件的邮件服务器。这可以由接收者检查,接收者可以使用它来识别错误的发送者。

正如您所看到的,调整电子邮件中的“发件人”字段并不容易,并且仍然确保邮件到达。

您可以更改“回复”字段。但这也会使你的“垃圾邮件分数”高一点。