我在发送很多电子邮件时都在寻找良好的性能。

我听说正确的方法是打开连接发送约20封电子邮件并关闭连接。一遍又一遍地做到这一点。这个对吗?

SMTPCLIENT如何工作,它是否为自己的一生打开连接? (不可识别,所以看起来不像那样),还是为发送的每个电子邮件打开一个连接?还是它一直都有连接?还是有一些魔法在合适的情况下打开和关闭连接?

我想知道,所以我知道如何启动SMTPCLIENT。作为单身人士或仅用于大量消息...

有帮助吗?

解决方案

它仅从连接发送一个邮件。实际上,它甚至无法正确关闭连接。它发送了邮件,但后来不告诉邮件服务器要退出。因此,它只是使其悬挂开,直到下面的汇集溪流决定关闭插座。

这是反射器的内部代码:

...
        this.GetConnection();
        fileMailWriter = this.transport.SendMail((message.Sender != null) ? message.Sender : message.From, recipients, message.BuildDeliveryStatusNotificationString(), out exception);
        }
        catch (Exception exception2)
        {
            if (Logging.On)
            {
                Logging.Exception(Logging.Web, this, "Send", exception2);
            }
            if ((exception2 is SmtpFailedRecipientException) && !((SmtpFailedRecipientException) exception2).fatal)
            {
                throw;
            }
            this.Abort();
            if (this.timedOut)
            {
                throw new SmtpException(SR.GetString("net_timeout"));
            }
            if (((exception2 is SecurityException) || (exception2 is AuthenticationException)) || (exception2 is SmtpException))
            {
                throw;
            }
            throw new SmtpException(SR.GetString("SmtpSendMailFailure"), exception2);
        }

顺便说一句,这是有关未发行戒烟命令的SMTPCLIENT的更多信息。https://connect.microsoft.com/visualstudio/feedback/viewfeedback.aspx?feedbackid=146711&wa=wsignin1.0

编辑:在上面查看上面的死亡链接 web.archive.org

工作目的是将SmtpClient.ServicePoint.maxtimeout设置为1。这将更快地关闭套接字,但是,这实际上并未发布戒烟命令。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top