5

私はコードを持っています、

 System.Web.Mail.MailMessage oMailMessage = new MailMessage();
            oMailMessage.From = strFromEmaild;
            oMailMessage.To = strToEmailId;
            oMailMessage.Subject = strSubject;
            oMailMessage.Body = strBody;
            SmtpMail.SmtpServer = "localhost";
            SmtpMail.Send(oMailMessage);

(すべての変数には値があります)

SMTP仮想サービスをインストールしました。メールを送信できない理由。なぜそれが機能しないのですか?

編集

public bool SendMail(string strToEmailId, string strFromEmaild, string strSubject, string strBody)
{
    try
    {
        System.Web.Mail.MailMessage oMailMessage = new MailMessage();
        oMailMessage.From = strFromEmaild;
        oMailMessage.To = strToEmailId;
        oMailMessage.Subject = strSubject;
        oMailMessage.Body = strBody;
        SmtpMail.SmtpServer = "SERVERNAME";
        SmtpMail.Send(oMailMessage);

        return true;
     }
     catch (Exception ex)
     {
         return false;
     }
 }

私はこのコードを持っています。正常に実行され、trueが返されますが、受信トレイにメールが届きません。

他に何が間違っている可能性がありますか?

C:\ Inetpub \ mailroot\BadmailのBadMailDirでいくつかのメールを取得します。ここでもいくつかのメールを取得します...それはどういう意味ですか..??

メールはGmailアカウントにしか送信できないことがわかりました...なぜですか?

4

7 に答える 7

2

他の人が述べているように、コードは問題なく、SMTP構成にある可能性が高いか、テストメールの送信先のメールクライアントがスパムとしてマークしている可能性があります。スパムの場合、それは簡単に理解できます。それが電子メールにある場合は、mailrootフォルダーに移動すると、説明とともに電子メールファイルが含まれるいくつかのフォルダーになります。BadMailフォルダーまたはキューフォルダーに何かがあるかどうかを確認し、メモ帳でそれらを開いて、送信されなかった理由についてどのようなエラーが表示されるかを確認します。

于 2010-01-22T16:07:34.390 に答える
1

プログラムに機能的な問題はないようです。プログラムとメールサーバー間の構成の問題である可能性があります。私は問題を診断するために以下を試みます。

  1. コードをtry/catchブロックでラップし、例外メッセージに有用なデータが含まれているかどうかを確認します
  2. クレイジーなものを除外するために、localhostの代わりに127.0.0.1を使用してください
  3. SMTPサーバーが標準ポートで実行されていることを確認します(25と思います)
于 2010-01-22T15:54:11.230 に答える
1

エラーが何であるかを判別します。

try
{
 SmtpMail.Send(oMailMessage);
}
catch (Exception ex)
{
//breakpoint here to determine what the error is:
Console.WriteLine(ex.Message);
}

ここから、その例外の詳細を使用して質問を編集してください。

于 2010-01-22T15:50:27.883 に答える
1

わかりにくいですが、SMTP仮想サーバーで匿名アクセスを有効にしていない可能性があります。仮想サーバーのプロパティダイアログに移動し、[アクセス]タブを選択し、[アクセス制御]ボタンをクリックして、匿名アクセスが有効になっていることを確認します。

于 2010-01-22T15:51:27.123 に答える
1

こんにちは、次のコードに従うことができます:

try
        {
            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
            client.EnableSsl = true;
            client.Timeout = 100000;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            client.Credentials = new NetworkCredential("your gmail id", "password");
            MailMessage msg = new MailMessage();
            msg.To.Add(textBoxTo.Text);
            msg.From = new MailAddress("your gmail id");
            msg.Subject = textBoxSubject.Text;
            msg.Body = textBoxMsg.Text;
            Attachment data = new Attachment(textBoxAttachment.Text);
            msg.Attachments.Add(data);
            client.Send(msg);
            MessageBox.Show("Successfully Sent Message.");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
       }
于 2013-04-26T01:10:23.910 に答える
0

Localhostの代わりに127.0.0.1を試しましたか?また、SMTPサービスが機能していることをテストしましたか。詳細については、このリンクを確認してください。

于 2010-01-22T15:51:19.073 に答える
0

仮想SMTPサーバーでリレー制限と接続制御を追加して、外部接続が許可されないようにします

ここに画像の説明を入力してください

于 2015-04-16T08:19:40.197 に答える