1

Webページからメールを送信するときは、メールを受信したときの[personalemailremoved]@gmail.comとの両方です。ユーザーがWebサイトに入力した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

4 に答える 4

1

Gmailは実際にこれを認証済みアカウントに自動的に変更するため、これを行うには別のサーバーを使用する必要があります。

別のSMTPサーバーを使用したくない場合は、まったく使用しないでください。メールサーバーに接続するときは、資格情報を与えないでください。これは、SMTPサーバーがメールを送信する方法です。これは、gmail.comのメールアドレスを持つユーザーにのみメールを送信する場合にのみ機能することに注意してください。それ以外の場合は、オープンリレーとして使用していると見なされます。「宛先:」フィールドに他のアドレスを含めることができますが、SMTP通信を行うときにそれらを追加することはできません。私は実際に大学でこの正確なことについて独立した研究をしました、私はまだ私のコードを持っています。実際には、SMTP通信を手動で行う必要がある場合があります。SMTP仕様のクイックガイドが必要な場合は、それを説明する私が作成した配布物へのリンクを投稿できます(公式ではありませんが、RFCよりも読みやすいはずです)。

于 2011-11-17T15:04:13.020 に答える
1

gmail 経由でリレーすると、常に from が認証済みユーザーとして設定されます。from アドレスを自由に設定するには、別の smtp サーバーを使用する必要があります。

于 2011-11-17T14:39:29.187 に答える
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);
于 2011-11-17T14:04:35.857 に答える
0

ほとんどの smtp サーバーは、送信者以外を認証済みユーザーとして受け入れません。または、メールの送信元であるはずのドメインから。

すべての送信者からのメールをリレーする無料の smtp サーバーがいくつかありますが、すぐにブラックリストに登録されてしまいます。

ドメインの所有者は、DNS サーバーにコードを追加して、その名前で電子メールを送信する可能性のあるメール サーバーを識別することができます。これは受信者が確認でき、受信者はこれを使用して偽の送信者を特定できます。

ご覧のとおり、メールの「差出人」フィールドを調整して、メールが確実に届くようにするのは簡単ではありません。

「返信先」フィールドを変更する場合があります。しかし、これにより「スパムスコア」が少し高くなります。

于 2011-11-17T14:51:55.797 に答える