Неправильный адрес в gmail с помощью WebMail. Отправьте MV3 C # - PullRequest
1 голос
/ 17 ноября 2011

Когда я отправляю почту со своей веб-страницы, при получении письма я получаю адрес как от [personalemailremoved], так и от @@mail.ru. Что мне нужно изменить, чтобы просмотреть из почты в 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 ]

1 голос
/ 17 ноября 2011

Gmail фактически меняет это на аутентифицированную учетную запись автоматически, поэтому вам нужно использовать другой сервер, если вы хотите это сделать.

Если вы не хотите использовать другой SMTP-сервер, не используйте его вообще! Когда вы подключаетесь к почтовому серверу, не передавайте ему учетные данные. Так SMTP-серверы отправляют почту. Важно отметить, что это будет работать, только если вы отправляете электронное письмо пользователю с адресом электронной почты gmail.com. В противном случае он думает, что вы используете его в качестве открытого реле. У вас могут быть другие адреса в поле «Кому:», вы просто не можете добавить их при выполнении SMTP-связи. На самом деле я провел независимое исследование именно этой вещи в колледже, у меня все еще есть свой код. На самом деле вам может потребоваться выполнить SMTP-связь вручную. Если вам нужно краткое руководство по спецификации SMTP, я могу опубликовать ссылку на раздачу, которую я сделал, которая объясняет это (хотя она меньше официальной, ее легче читать, чем RFC).

1 голос
/ 17 ноября 2011

ретрансляция через gmail всегда будет устанавливать аутентификацию пользователя from.для свободы установки адреса отправителя необходимо использовать другой сервер smtp.

0 голосов
/ 17 ноября 2011

Большинство серверов smtp не принимают отправителя в качестве аутентифицированного пользователя. Или с домена, с которого они должны отправлять почту.

Существует несколько бесплатных серверов smtp, которые ретранслируют почту от каждого отправителя, но они очень скоро попадают в черный список.

Владелец домена может добавить некоторый код на свой DNS-сервер , чтобы определить почтовые серверы, которые могут отправлять электронную почту от своего имени. Это может быть проверено получателем, и получатель может использовать его для идентификации ложных отправителей.

Как видите, не очень легко настроить поле "От" в электронном письме и при этом убедиться, что письмо пришло.

Вы можете изменить поле «Ответить». Но это также сделает ваш «счет спама» немного выше.

0 голосов
/ 17 ноября 2011

Вместо этого вы можете использовать System.Net.Mail в сочетании с классом Mail Message ASP.NET.Вот пример:

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);
...