3

.NET コンソール アプリケーションで電子メールを送信しようとしています。私はIPアドレスXXXXのSMTPサーバーを持っています(罪のない人を保護するためにサニタイズされています)。

SMTP サーバーは、.NET コンソール アプリをホストしているサーバーからの電子メールを許可し、その電子メールを外部に送信するようにセットアップされています (リレーが構成されています)。

コンソール アプリをホストしているサーバーから telnet でこれをテストしました。SMTP サーバーの IP アドレスを使用して、コンソール アプリをホストしているサーバーから telnet コンソールでメールを送信することに成功しました。telnet を使用する場合、認証は必要ありません。接続資格情報が与えられていません。

しかし、.NET アプリで実行しようとすると、次のエラーが発生します。

Syntaz エラー、コマンドを認識できません。サーバーの応答は次のとおりです: : Helo コマンドが拒否されました: 完全修飾ホスト名が必要です

これが私のコードです:

string mailMessagetest = "test";
        string subjecttest = "test";
        List<string> recipienttest = new List<string>();
        recipienttest.Add("me@mydomain.com");

        utility.SendMail(recipienttest, subjecttest, mailMessagetest);

関数 SendMail は次のとおりです。

        public static void SendMail(List<string> recipient, string subject, string message)
    {
        MailMessage mailMessage = new MailMessage();
        mailMessage.From = new MailAddress("myfriend@mydomain.com");

        foreach (string to in recipient)
        {
            mailMessage.To.Add(to);
        }

        mailMessage.Subject = subject;
        mailMessage.Body = message;

        SmtpClient client = new SmtpClient();
        client.Host = "X.X.X.X";
        client.Port = 25;
        client.Send(mailMessage);
    }
4

2 に答える 2

5

ホスト名をIPアドレスからその名前に変更します(例:「smtp.provider.com」またはその内部「mailserver.domain」の場合)。

アップデート:

このsystem.net.mail.smtpclientfqdnを読んでみてください。これは、HELOまたはEHLOを送信するときにFQDNが送信されないためです

于 2012-10-25T07:00:06.953 に答える
1

SMTPサーバーでパスワードを使用してユーザーを作成し、次の設定を適用します。

        smtp.UseDefaultCredentials = false;
        smtp.Credentials = new NetworkCredential("user", "pass");
        smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtp.Port = 25;
        smtp.EnableSsl = true; // or false depending your server
于 2012-10-25T06:59:38.373 に答える