托管后无法发送 g-mail
Unable to send g-mail after hosting
这是我注册成功后发送邮件的代码。它在我的本地 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);
密码恢复页面上的代码相同。但在这里它不起作用。
我对代码做了一些更改,还创建了一个新的注册页面,现在显示以下错误
对象引用未设置为对象的实例。
问题描述:当前网络请求执行过程中出现未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。
异常详细信息: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
}
}
请务必使用 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
Select 名称 My Awesome App
和 Google 将生成自定义密码。
另一个建议是在您的 google 帐户中允许安全性较低的应用程序:link
最后,请记住 Google 不允许您每小时发送超过 250 条消息,每天不得超过 1000 条(不确定最后一个数字)。
这是我注册成功后发送邮件的代码。它在我的本地 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);
密码恢复页面上的代码相同。但在这里它不起作用。
我对代码做了一些更改,还创建了一个新的注册页面,现在显示以下错误
对象引用未设置为对象的实例。
问题描述:当前网络请求执行过程中出现未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。
异常详细信息: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
}
}
请务必使用 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
Select 名称 My Awesome App
和 Google 将生成自定义密码。
另一个建议是在您的 google 帐户中允许安全性较低的应用程序:link
最后,请记住 Google 不允许您每小时发送超过 250 条消息,每天不得超过 1000 条(不确定最后一个数字)。