如果启用超时,SmtpClient会影响异常

时间:2016-06-23 06:28:15

标签: c# .net smtpclient

这是.NET Framework中的一个错误吗?如果是这样,我该怎么报告呢,因为我可以报告错误的任何地方我总是得到一个"未授权"错误,所以我现在就像我一样。

无论如何,问题是如果启用了SmtpClienttimeOut会影响任何抛出的异常,除非它SmtpFailedRecipientException并且不是致命的。

你可以在这里的代码中看到它: http://referencesource.microsoft.com/#System/net/System/Net/mail/SmtpClient.cs,538

catch (Exception e) {
    if (Logging.On) Logging.Exception(Logging.Web, this, "Send", e);

    if (e is SmtpFailedRecipientException && !((SmtpFailedRecipientException)e).fatal) {
        throw;
    }


    Abort();
    // This is the issue ... As you can see when timout is enabled, a timeout exception is thrown no matter what
    if (timedOut) {
        throw new SmtpException(SR.GetString(SR.net_timeout));
    }

    if (e is SecurityException ||
        e is AuthenticationException ||
        e is SmtpException) 
    {
        throw;
    }

    throw new SmtpException(SR.GetString(SR.SmtpSendMailFailure), e);
}

http://referencesource.microsoft.com/#System/net/System/Net/mail/SmtpClient.cs,680

(与上述相同,但在SendAsync。)

如果它不是一个错误,有人可以告诉我行为的确切原因吗?现在它导致邮件由于超时而被视为错误,但实际上它们实际上已被发送,并且无法确定实际错误是什么。如果它是一个错误,当我每次尝试创建反馈时总是收到Not authorized错误时,如何报告错误。

0 个答案:

没有答案