0

smtpについていくつか質問があります

ホストがgmailの場合、このコードを使用してメールを送信すると、動作が異なります。

foreach (string host in hosts)
{
    SmtpClient sc = null;
    try
    {
        if (emailDomain.ToLower() == "gmail.com")
        {
            MailSend.MailSendApp.EventLog.WriteEntry("mail to gmail.com");

            sc = new SmtpClient("smtp.gmail.com", 587);
            sc.UseDefaultCredentials = false;
            sc.DeliveryMethod = SmtpDeliveryMethod.Network;
            sc.Credentials = new NetworkCredential("UID@gmail.com", "PWD");
            sc.EnableSsl = true;
        }                                    }
        else
        {
            sc = new SmtpClient(host);

            sc.Send(mailMessage);

            break;

        }

smtp から応答を取得することは可能ですか : 1. メールが到着したこと 2. メールが存在する場合

ありがとう

4

2 に答える 2

1

電子メールが到着したという通知を受け取りたい場合は、配信通知オプションを指定して電子メールを送信する必要があります。

mailMessage.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

電子メールが存在しない場合は、SMTP クラスではなく、送信者アドレスに電子メールが返されます。

要するに、これら 2 つのことを純粋に SMTP クラスの観点から判断する簡単な方法はありません。

于 2012-04-04T07:24:30.513 に答える
0

昔は、特定のサーバーに電子メール アドレスが存在するかどうかを直接問い合わせることができました ( VRFY userSMTP コマンド)。その後、スパムが誕生し、ほとんどすべての電子メール サーバーでその機能が削除されました。これは、スパマーがボットを使用して各メール サーバーで受信者候補をクエリし、スパム リストを作成するためです。

通常のバウンス レポート (配信が失敗したことを示す返信先アドレスへの電子メール) が引き続き送信されます。Boogie Toolsというツールを使用して、バウンス メッセージの処理を自動化しています。

同様の理由で、Gmail は配信または開封確認を提供していません (ただし、一部のメール サーバーではオプションで許可されています)。

于 2012-04-04T07:23:38.040 に答える