c# - 使用 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>
解决方案
在表单中,submit调用的方法是Get或者Post,应该和后端C#代码保持一致。这样就可以正确调用了。
以前的
您应该更改HttpPost
为HttpGet
来测试该功能。
[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
推荐阅读
- sql - Postgres 数组问题
- python - 编码一组相互关联的对象,这些对象在组中添加或删除对象时更新
- installation - 我的静默安装在先决条件安装后重新启动机器,但未完成应用程序的安装
- python - 在某个字符之后查找文本
- python - 我如何让球真正反射到桨上?
- python - 如何使用 B.exe 控制 A.exe 文件
- php - 如何在codeigniter中创建触发器?我的代码不起作用
- vapor - 需要 ID 属性名称的 Vapor 4 关系和模型
- python - 将字符串系列与字符串列表进行比较并获取子字符串匹配项
- c# - 使用自定义命名空间中的数组反序列化 XML