これは登録が成功した後にメールを送信するためのコードです。私のlocalhost IISサーバー上で正常に動作します。しかし、サーバー上にWebサイトを展開した後、電子メールはユーザーに送信されません。例外やエラーメッセージは表示されません。ホスティング後にメール送信コードが機能しない
MailMessage mm = new MailMessage("[email protected]", 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 = "[email protected]";
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("[email protected]");
mail.Subject = "mailSubject";
mail.Body = "mailBody";
mail.IsBodyHtml = true;
mail.To.Add("[email protected]");
using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))//2nd parameter is PORT No.
{
smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "xyz");
smtp.EnableSsl = true;//set this as your Host Name properties, for gmail,its true
smtp.Send(mail);//actual sending operation here
}
}
送信ポートとして465を試してください。 –
多くのプロバイダでは、使用するホストが独自のホストである必要があります。彼らがホストを設定しなければならないと私に話すまで、私はあるプロバイダと同じ問題を抱えていました。 –
私はそう考えていました...しかし、同じコードが別のページでパスワード回復のために働いています – kish