这是我注册成功后发送电子邮件的代码。它在我的localhost IIS服务器上正常工作。但是在服务器上部署网站后,电子邮件不会发送给用户。没有显示异常或错误消息。
MailMessage mm = new MailMessage("xyz@gmail.com", TextBoxEmail.Text.Trim());
mm.Subject = "Password Recovery";
mm.Body = string.Format("Hi ,<br /><br />Your password is .<br /><br />Thank You.");
mm.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
NetworkCredential NetworkCred = new NetworkCredential();
NetworkCred.UserName = "xyz@gmail.com";
NetworkCred.Password = "xyz";
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587;
smtp.Send(mm);
message = "Registration successful. Activation email has been sent.";
ClientScript.RegisterStartupScript(GetType(), "alert", "alert('" + message + "');", true);
相同的代码适用于密码恢复页面。但这里没有用。
我在代码中做了一些更改,并且还创建了一个新页面进行注册,现在它显示以下错误
对象引用未设置为对象的实例。
描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。
首先我认为这是邮件发送代码的错误,但它在iis本地服务器上以及在其他页面上正常工作。所以我认为这可能是按钮点击事件的问题。能够到达这里。请帮助我,因为我知道我在这里得到答案。
我的新代码:
using (MailMessage mail = new MailMessage())
{
mail.From = new MailAddress("xyz@gmail.com");
mail.Subject = "mailSubject";
mail.Body = "mailBody";
mail.IsBodyHtml = true;
mail.To.Add("xyz@gmail.com");
using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))//2nd parameter is PORT No.
{
smtp.Credentials = new System.Net.NetworkCredential("xyz@gmail.com", "xyz");
smtp.EnableSsl = true;//set this as your Host Name properties, for gmail,its true
smtp.Send(mail);//actual sending operation here
}
}
答案 0 :(得分:1)
请务必使用System.Net.Mail
,而不是已弃用的System.Web.Mail
。
using System.Net;
using System.Net.Mail;
var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@example.com", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
此外,您必须通过以下方式为该应用创建特定的Google密码:
Google> Account> Security> Apps> Manage apps> Add an app
选择名称My Awesome App
,Google将生成自定义密码。
另一个建议是在您的Google帐户中使用不太安全的应用程序:link
最后,请注意,Google不允许您每小时发送超过250封邮件,每天不超过1000封(不确定最后一位数字)。