Есть ли способ увековечить сеанс электронной почты в приложении C #? - PullRequest
2 голосов
/ 29 января 2010

Используя этот код, я могу отправлять электронные письма людям. Однако каждый раз, когда я нажимаю кнопку отправки, мне кажется, что я снова вхожу в систему, правильно?

Есть ли способ увековечить мой сеанс входа в систему, или это всегда так («Я делаю предположение новичка»)?

        var client = new SmtpClient("smtp.gmail.com", 587)
        {
            Credentials = new NetworkCredential("papuccino1@gmail.com", "password"),
            EnableSsl = true
        };
        client.Send("papuccino1@gmail.com", "stapia.gutierrez@gmail.com", "test", "testbody");
        Console.WriteLine("Sent");
        Console.ReadLine();

Ответы [ 2 ]

3 голосов
/ 29 января 2010

Код у вас в порядке. Да, служба smtp отправляет учетные данные на сервер smtp каждый раз, когда вы отправляете электронное письмо.

С точки зрения кодирования, это предпочтительный способ ведения дел. Если вы пакетируете электронную почту, то вы просто помещаете вызов метода .Send в цикл, пока новый вызов SmtpClient находится над ним.

Вы хотите оставить соединение открытым достаточно долго, чтобы выполнить работу, а затем закрыть его. В противном случае вы рискуете взорвать приложение или иначе не сможет закрыть соединение позже. Серверы имеют только ограниченное количество соединений, которые они могут обрабатывать. Если большинство приложений оставляют их открытыми в течение длительного периода времени, другим пользователям будет трудно войти.

Большинство почтовых клиентов открывают соединение, отправляют любые электронные письма в исходящие, получают новые письма, затем закрывают соединение. Когда таймер отключается, он снова выполняет процесс.

Outlook, связанный с Exchange, работает немного по-другому, потому что есть push-компонент (с сервера).

1 голос
/ 29 января 2010

Каждый сеанс SMTP обычно начинается с аутентификации. Насколько я знаю, нет способа сохранить сеанс открытым для SMTP-сервера. Тем не менее, возможно отправлять несколько писем в пакете, вероятно, именно это и происходит при использовании почтового клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...