ASP отправляет дубликаты писем - PullRequest
0 голосов
/ 08 августа 2011

Я занимаюсь некоторым обслуживанием веб-сайта ASP и обнаружил, что он отправляет дубликаты электронных писем. Я не могу понять, как это происходит. Я вставил код здесь http://pastebin.com/Beb94PiC

В строке 443 находится функция SendMsg2. Насколько я могу судить, функция вызывается только один раз. Любые оповещения или сообщения появляются только один раз.

Когда письма отправляются, objMessage.TO = email1 приходит один раз, а затем не появляется ни на одном из вторых писем. Я думаю, что все, что заставляет его работать дважды, также очищает переменную.

Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 09 августа 2011

Ваша функция называется «SendMsg2», но в строке 478 вы устанавливаете

SendMsg = objMessage.Send

Возможно, это имеет некоторые побочные эффекты, когда существует функция SendMsg .

0 голосов
/ 08 августа 2011

С руки, я не вижу ничего ослепительного, на что я могу просто положить палец, чтобы помочь. Лучший способ решить проблемы ASP - это один из двух способов:

  1. Инкапсуляция логики в компоненте VB COM
  2. Использовать Response.Write

Лично у VB COM много лишних затрат для устаревшего приложения. Хотя это позволяет улучшить инструментарий, вы должны написать много кода. Если приложение не имеет гораздо более длительного срока годности, чем должно быть в настоящее время, это не лучший выбор. Это оставляет # 2.

Response.Пишите запись и выход из каждой процедуры. Затем вы видите распечатанный поток и определяете, где подпрограмма почты вызывается во второй раз. Если это ничего не дает, то это может быть пользователь, нажимающий кнопку более одного раза (нетерпеливый пользователь). Если последнее, вы должны отключить кнопку.

Одним из способов отслеживания событий является добавление «идентификатора сеанса» к миксу. рефакторинг почтовых подпрограмм (ов) для принятия значения идентификатора, а затем вы можете кодировать «если идентификатор сессии, то не запускайте электронную почту» в микс. Идентификатор сохраняется после того, как отправлено первое электронное письмо, и любые дополнительные вызовы будут видеть идентификатор уже в миксе. Я говорю сессионный идентификатор в кавычках, так как вам обоим приходится работать с концепцией сеанса и концепцией начального потока, чтобы охватить как пользовательскую ошибку (нажатие более одного раза), так и ошибку потока кода. Если вы можете отправлять несколько электронных писем за один сеанс, вам нужно сохранить в миксе какое-то значение «Я отправил это электронное письмо в этом сеансе», чтобы вы не добавляли ошибку не отправлять электронные письма в этот микс.

Вы должны потратить время на исправление потока и на исправление ошибки пользователя. Но сначала найдите время для устранения неполадок, чтобы увидеть, есть ли другие артефакты. Только в классическом ASP-коде это означает запись значений в поток ответа (такой грубый, как газонокосилки с ручным нажатием?).

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