1

mail.smtp.sendpartialプロパティに相当するC#を探しています

http://javamail.kenai.com/nonav/javadocs/com/sun/mail/smtp/package-summary.html

trueに設定されていて、メッセージに有効なアドレスと無効なアドレスが含まれている場合は、とにかくメッセージを送信し、SendFailedExceptionで部分的な失敗を報告します。false(デフォルト)に設定すると、無効な(サーバー上にメールボックスが存在しない)受信者アドレスがある場合、メッセージはどの受信者にも送信されません。

public static void sendMails(string ptxtSubject, string ptxtBody)
{
    string txtTo = "valid1@aaa.com,valid2@aaa.com,invalid1@aaa.com";
    string txtFrom = "valid@aaa.com";
    string txtSubject = ptxtSubject;
    string txtBody = ptxtBody;

    MailMessage mail = new MailMessage();
    mail.To = txtTo;
    mail.From = txtFrom;
    mail.Subject = txtSubject;
    mail.Body = txtBody;

    try
    {
        SmtpMail.SmtpServer ="smtp.aaa.com";
        SmtpMail.Send(mail);
    }
    catch (Exception ex)
    {
       //log the exception
       throw;  
    }
}

これは私が使用しているC#コードですが、メールアドレスの1つだけが無効であってもメールを送信できません。

グーグルは助けませんでした、どんなポインタでもありがたいです。

4

2 に答える 2

2

.NETはMailAddress.TryParseを提供せず、誤ったメール形式でMailAddressクラスの新しいインスタンスを作成すると例外が発生するため、次を使用することをお勧めします。

http://cobisi.com/email-validation/.net-component

もう1つの醜いオプションは、無効なメールアドレスの作成/割り当てをキャッチすることです。サードパーティのアセンブリを使用したくないので、エンタープライズメールアセンブリでこのように使用でき、正常に機能しています。

役立つ同様の質問:

メールアドレスがSystem.Net.Mail.MailAddressに対して有効であることを確認してください

于 2012-12-03T20:47:31.923 に答える
1

ここでの答えは、無効とはどういう意味かによって異なります。

上記の例から、invalid1@aaa.comは実際には有効なメールアドレスです。

現在C#で、メールの送信に使用するメールアドレスが有効な形式であることを確認する唯一の方法は、次のように、文字列アドレスを渡してMailAddressインスタンスをキャッチすることでMailAddressインスタンスを作成することですFormatException

string email = "invalid1@aaa.com";
System.Net.Mail.MailAddress address = null;
try
{
    address = new MailAddress(email);
}
catch (FormatException fex)
{
    // do something about it here
}

あなたが知りたいのは、メールの受信トレイが実際に存在するかどうかだと思いますinvalid1@aaa.com。誰かがログインしてメッセージを見ることができるサーバー上にそのアドレスのアカウントを持っているからです。

簡単に言えば、それを確認することはできません。Javaクラスが実際にそれを示しているのであれば、Javaクラスが提供する応答の整合性に疑問を投げかけます。メールサーバーがこれを行った場合、スパマーがランダムで有効な電子メールアドレスを探してサーバーを攻撃するのは非常に簡単です。

もっと凝ったものにしたい場合は、ドメイン「aaa.com」が存在することを検証できますが、それは確実にできる限りのことです。

于 2012-12-03T22:01:41.780 に答える