首页 > 解决方案 > 使用 Godaddy 共享主机在 Asp.net 核心 MVC 中发送邮件问题

问题描述

我正在尝试从我的 ASP.NET Core 2.0 MVC 应用程序发送邮件,但邮件仅从主页发送,而不是从其他页面发送,我对所有页面使用相同的方法。发送邮件没有错误。但是我没有在我的 gmail 中收到邮件,而是仅从主页接收邮件。

家庭控制器:

    [HttpPost]
    public async Task<IActionResult> HomeContact(ContactModel contact)
    {
        try
        {
            await emailHelper.SendEmail(contact);
            TempData["Message"] = "Email Has Been Sent Successfully.";
        }
        catch (Exception ex)
        {
            Global.SaveError(ex);
            TempData["Message"] = ex.ToString();

        }

        return RedirectToAction("Index");  
    }

注意:如果我从主页调用这个 HomeContact 是有效的,但是为了测试我是否从另一个页面调用这个方法,它不工作,这只工作一次但现在不工作。

首页联系我们查看代码:

<form name="contactForm" method="post" enctype="multipart/form-data">
           
    <input type="hidden" name="Subject" value="Discuss" />
    <input type="hidden" name="PageLocation" value="Home" />

    <div class="row">
        <div class="col-lg-6 col-md-6 col-sm-6">
            <input type="text" name="Name" placeholder="Your Name *" required />
        </div>
        <div class="col-lg-6 col-md-6 col-sm-6">
            <input type="email" name="EmailID" placeholder="Your Mail *" required />
        </div>
        <div class="col-lg-6 col-md-6 col-sm-6">
            <input type="text" name="MobileNo" placeholder="Phone Number *" required />
        </div>
        <div class="col-lg-6 col-md-6 col-sm-6">
            <input type="text" name="Message" placeholder="Subject *" required />
        </div>
    </div>

    <button class="color1_bg tran3s" asp-action="HomeContact"
            style="background:#fff;">
                Submit
    </button>

    @if (ViewBag.Message != null)
    {
        <script> window.alert( '@ViewBag.Message') </script>
    }
</form>

邮寄方式:

    public async Task SendEmail(ContactModel contact)
    {
        try
        {
            var dateTime = Global.CurrentDate();

            var formattedTime = dateTime.ToString("h:mm tt", CultureInfo.InvariantCulture);

            var CurrentDateTime = $"{ DateTime.Now.ToString("dd-MM-yyyy")} {formattedTime}";

            MailMessage msg = new MailMessage();

            msg.From = new MailAddress("Student New Enquiry< noreply@domain.com > ");
            msg.To.Add("mymailid@gmail.com");
            msg.Subject = contact.Subject;

            string Mailmsg = "";

            Mailmsg += "This is the Student has a Enquiry for apply course." + Environment.NewLine + Environment.NewLine;
            Mailmsg += $"Date : { CurrentDateTime }" + Environment.NewLine + Environment.NewLine;
            Mailmsg += $"Name : {contact.Name}" + Environment.NewLine + Environment.NewLine;
            Mailmsg += $"Contact No : {contact.MobileNo}" + Environment.NewLine + Environment.NewLine;
            Mailmsg += $"Course Apply : {contact.CourseName}" + Environment.NewLine + Environment.NewLine;
            Mailmsg += $"Message : {contact.Message}" + Environment.NewLine + Environment.NewLine;
            Mailmsg += $"Page Location : {contact.PageLocation}" + Environment.NewLine + Environment.NewLine;

            msg.Body = Mailmsg;

            using (SmtpClient client = new SmtpClient())
            {
                client.EnableSsl = false;
                client.UseDefaultCredentials = true;
                client.Host = "relay-hosting.secureserver.net";
                client.Port = 25;
                await client.SendMailAsync(msg);
            }
        }
        catch (Exception ex)
        {
            throw;
        }
    }

下面是我从 homeController 或 contactcontroller 调用的联系我们页面方法,这不起作用。

联系我们:

    [HttpPost]
    [Route("Contact")]
    public async Task<IActionResult> Contact(ContactModel contact)
    {
        try
        {
            contact.Subject = "Enquiry";
            contact.PageLocation = "Contact US";

            await emailHelper.SendEmail(contact);
            TempData["Message"] = "Email Has Been Sent Successfully.";
        }
        catch (Exception ex)
        {
            Global.SaveError(ex);
            TempData["Message"] = ex.ToString();

        }      
        return View("~/Views/Home/Contact.cshtml");
    }

联系我们页面的视图:

                <div class="row">
                    <div class="col-lg-6 col-md-6 parsley-row">

                        <select class="selectmenu" name="CourseName" value="" required>
                            <option value="">--Select Course--</option>
                            <option value="B.Sc (Nautical Science)">B.Sc (Nautical Science)</option>
                            <option value="B.TECH IN PETROLEUM ENGINEERING">B.TECH IN PETROLEUM ENGINEERING</option>
                            <option value="B.Tech Marine Engineering">B.Tech Marine Engineering</option>
                            <option value="B.Tech Naval Architechture Ship Building Course">B.Tech Naval Architechture Ship Building Course</option>
                            <option value="ETO">DNS</option>
                            <option value="ETO">ETO</option>
                            <option value="GP RATING">GP RATING</option>
                            <option value="GRADUATE MARINE ENGINEERING">GRADUATE MARINE ENGINEERING</option>
                        </select>

                    </div>
                    <div class="col-lg-6 col-md-6 parsley-row">
                        <input type="text" placeholder="Your Name *" name="Name" data-parsley-pattern="^[a-zA-Z]+$+%" required>

                    </div>
                    <div class="col-lg-6 col-md-6 parsley-row">
                        <input type="email" placeholder="Your Mail *" name="EmailID" data-parsley-trigger="change" required>

                    </div>
                    <div class="col-lg-6 col-md-6 parsley-row">
                        <input type="text" placeholder="Phone Number *" name="MobileNo" maxlength="11" pattern="[0-9]{10,11}" required>
                    </div>
                    <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 parsley-row">
                        <textarea placeholder="Your Message" name="Message" required></textarea>
                    </div>
                </div>

                <input type="hidden" name="Subject" value="Enquiry" />
                <input type="hidden" name="PageLocation" value="Contact US" />

                <button type="submit" value="Contact" asp-controller="Home" asp-action="Contact" class="color1_bg tran3s">
                    Submit Now
                </button>

                @if (ViewBag.Message != null)
                {
                    <script> window.alert( '@ViewBag.Message') </script>
                }
            </form>

标签: c#asp.net-core-mvc

解决方案


在表单中,submit调用的方法是Get或者Post,应该和后端C#代码保持一致。这样就可以正确调用了。


以前的

您应该更改HttpPostHttpGet来测试该功能。

[HttpGet]
[Route("Contact")]
public async Task<IActionResult> Contact(ContactModel contact)
{
    try
    {
        contact.Subject = "Enquiry";
        contact.PageLocation = "Contact US";

        await emailHelper.SendEmail(contact);
        TempData["Message"] = "Email Has Been Sent Successfully.";
    }
    catch (Exception ex)
    {
        Global.SaveError(ex);
        TempData["Message"] = ex.ToString();

    }      
    return View("~/Views/Home/Contact.cshtml");
}

在您的 html 代码中,您更改了调用该函数的路径。因为你使用[Route("Contact")].

http://yoursite.com/Contact

推荐阅读