【发布时间】:2019-02-25 16:15:55
【问题描述】:
我正在尝试发送带有链接(代码)的确认电子邮件,以便新注册用户确认他们的电子邮件,这是我正在使用的代码,有人看到它有什么问题吗?我使用托管凭据,它们在其他方法上正常工作。
public class Cls_SendMail
{
public Cls_SendMail(string mailid, string message, string subject)
{
try
{
MailMessage objmail = new MailMessage();
objmail.To.Add(mailid);
objmail.From = new MailAddress(ConfigurationManager.AppSettings["FROMEMAIL"].ToString());
objmail.Subject = subject;
string Body;
Body = message;
objmail.Body = Body;
objmail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.UseDefaultCredentials = false;
smtp.EnableSsl = false;
smtp.Host = "mail.host.com";
smtp.Port = 587; // 465; //Gmail works on this port
smtp.Timeout = 100000;
smtp.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["FROMEMAIL"], ConfigurationManager.AppSettings["FROMPWD"]);
smtp.Send(objmail);
}
catch (Exception)
{
}
}
}
var Token = (from p in context.webpages_Memberships where p.UserId == model.Id select p.ConfirmationToken).FirstOrDefault();
var resetLink = "<a href='" + Url.Action("ConfirmAccount", "SignUp", new { un = model.Id, rt = Token }, "http") + "' style='color: #28BDF2;'>"+confirm+"</a>";
string csspath = "http://localhost:50467/EmailHTML/stylesheets/email.css";
string readFile = reader.ReadToEnd();
string myString = "";
UsersContext dbcontext = new UsersContext();
var username = string.Empty;
var user = dbcontext.UserProfiles.Find(model.Id);
if (user!=null)
{
username = user.UserName;
}
myString = readFile;
myString = myString.Replace("%{#{CssPath}#}%", csspath);
myString = myString.Replace("%{#{Name}#}%", model.FirstName);
myString = myString.Replace("%{#{UserName}#}%", username);
myString = myString.Replace("%{#{ConfirmLink}#}%", resetLink);
string subject = acountconfirm;
string body = myString;
try
{
//call for send mail
Cls_SendMail mail = new Cls_SendMail(model.Email, body, subject);
TempData["Message"] = Resource.mailhassent;
}
catch (Exception )
{
TempData["Message"] = Resource.Erroroccurredwhilesendingemail;
}
【问题讨论】:
-
你能添加你得到的异常消息吗?
-
还有什么问题?它是否发送邮件?你为什么要写一个空的try/catch?如果您在没有任何日志记录的情况下抑制异常消息,您怎么知道这段代码是否有错误?
-
顺便说一句。将
Catch块留空绝不是一个好习惯。 -
我添加了异常前,我忘了删除,原来没有它。
-
电子邮件没有到达,凭据正在工作。调试器没有损坏..