[英]Not able to send mail from localhost through yahoo,gmail smtp server
[英]How to send mail using both gmail and yahoo from an application in mvc?
這是我需要在其中發送電子郵件的應用程序。它可以與gmail.s正常工作,是否可以對yahoo郵件做同樣的事情? (如果來自文本框的具有@ gmail.com,則必須轉到控制器中的smtp.gmail.com步驟;如果來自文本框的具有@ yahoo.com,則必須轉到smtp.mail.yahoo.com,是否可以? )
我的控制器:
using emailtest1.Models;
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Web.Mvc;
namespace emailtest1.Controllers
{
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(EmailModel model)
{
using (MailMessage mm = new MailMessage(model.Email, model.To))
{
mm.Subject = model.Subject;
mm.Body = model.Body;
if (model.Attachment.ContentLength > 0)
{
string fileName = Path.GetFileName(model.Attachment.FileName);
mm.Attachments.Add(new Attachment(model.Attachment.InputStream, fileName));
}
mm.IsBodyHtml = false;
using (SmtpClient smtp = new SmtpClient())
{
smtp.Host = "smtp.gmail.com";
smtp.Host = "smtp.mail.yahoo.com";
smtp.EnableSsl = true;
NetworkCredential NetworkCred = new NetworkCredential(model.Email, model.Password);
smtp.UseDefaultCredentials = false;
smtp.Credentials = NetworkCred;
smtp.Port = 587;
smtp.Port = 25;
smtp.Send(mm);
ViewBag.Message = "Email sent.";
}
}
return View();
}
}
}
我的模特:
using System.Web;
namespace emailtest1.Models
{
public class EmailModel
{
public string To { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
public HttpPostedFileBase Attachment { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
}
我的觀點:
@model emailtest1.Models.EmailModel
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<style type="text/css">
body {
font-family: Arial;
font-size: 10pt;
}
table th, table td {
padding: 5px;
}
</style>
</head>
<body>
<div>
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td style="width: 80px">
To:
</td>
<td>
@Html.TextBoxFor(model => model.To)
</td>
</tr>
<tr>
<td>
Subject:
</td>
<td>
@Html.TextBoxFor(model => model.Subject)
</td>
</tr>
<tr>
<td valign="top">
Body:
</td>
<td>
@Html.TextAreaFor(model => model.Body, new { rows = "3", cols = "20" })
</td>
</tr>
<tr>
<td>
File Attachment:
</td>
<td>
@Html.TextBoxFor(model => model.Attachment, new { type = "file" })
</td>
</tr>
<tr>
<td>
Gmail:
</td>
<td>
@Html.TextBoxFor(model => model.Email, new { htmlAttributes = new { id = "my_custom_id" } })
</td>
</tr>
<tr>
<td>
Gmail Password:
</td>
<td>
@*@Html.TextBoxFor(model=>model.Password)*@
@Html.TextBoxFor(model => model.Password, new { type = "password" })
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="Send" />
</td>
</tr>
</table>
<br />
<span style="color:green">@ViewBag.Message</span>
}
</div>
</body>
</html>
您不能一個接一個地覆蓋Host和Port屬性。 您必須提出一個條件:
if(model.Email.contains("@gmail.com")){
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
} else if(model.Email.contains("@yahoo.fr")) {
smtp.Host = "smtp.mail.yahoo.com";
smtp.Port = 587;
}
是的,但是不喜歡您做的方式:
smtp.Host = "smtp.gmail.com";
smtp.Host = "smtp.mail.yahoo.com";
您正在覆蓋SMTP。
你能做的就是這個
smtp.Port = 587;
if (textbox.value.contains("@gmail.com"))
smtp.Host = "smtp.gmail.com";
ELSE (textbox.value.contains("@yahoo.com"))
smtp.Host = "smtp.mail.yahoo.com";
之后做工作...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.