2017-02-14 2 views
0

Я здесь в затруднении. Я кодирую форум, и пользователи будут иметь возможность получать уведомление по электронной почте, когда кто-то отвечает на поток, в котором они участвуют. Таким образом, пользователь A, B и C активны в потоке и хотят получать уведомление, когда это сообщение. Когда пользователь D приходит и отправляется в поток, мне нужно отправить электронное письмо на A, B и C.Электронная почта с сайта ASP Forum

Обычно я отправляю электронные письма с помощью CDO (ASP Classic), но проблема в том, что происходит, когда мне нужно отправлять пользователям A, хотя Z, или больше?

Пользователь D приходит, ударяет POST, а затем я пишу текст в базу данных и начинаю рассылать электронные письма - и ему приходится ждать, пока они будут отправлены.

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

Любое направление будет ДЕЙСТВИТЕЛЬНО оценено.

+0

Вы отметили это как ASP.NET, но отметили использование компонентов ASP Classic. Является ли этот ASP.NET или просто [ASP Classic] (https://en.wikipedia.org/wiki/Active_Server_Pages)? – mason

+0

Упрощенный для отмены эффекта ненужного нижнего уровня. :-) – Craig

ответ

0

ASP Classic не может выполнять параллельные действия или «фоновые действия», о которых вы спрашиваете. Вы должны имитировать его, ускорить отправку электронной почты или выполнить функцию электронной почты с помощью запланированной задачи.

Для имитации:

  1. Выполните все операции с базой данных (например, сохранить пост D'Пользователя к базе данных)

  2. На следующей странице пользователя D видит, инициировать вызов на ASP файл с использованием тега JavaScript. ASP-файл должен отправить электронные письма, например.

    <script type="text/javascript" async defer src="my_emailer.asp?postID=XXX"></script> 
    

Причина вы бы использовать метод script потому, что она будет называться асинхронно страница пользователя D направляется после вывешивать.

Чтобы ускорить

Создать и отправить только один адрес электронной почты, но BCC других получателей.

Для запуска в качестве запланированной задачи

Следуйте пост здесь советы: Make server automatic run asp-script every day

+0

[ASP Classic] (https://en.wikipedia.org/wiki/Active_Server_Pages) относится к чему-то другому. Пожалуйста, не обращайтесь к ASP Classic, если вы хотите обратиться к веб-формам ASP.NET или ASP.NET. – mason

+0

Я имел в виду ссылку на ASP Classic. Из того, что я собрал, OP заявил, что он имеет сценарий ASP Classic и нуждается в решении ASP Classic. –

+0

Да. Я использую ASP Classic. Спасибо. Единственная проблема с решением javascript заключается в том, что если пользователь D не переходит на другую страницу. Я думаю, что планировщик может быть лучшим вариантом в этом случае. Существует asp compent - ASPMail от программного обеспечения Persists, у которого есть сообщение queing. Я думаю, что это может быть то, что мне нужно, но еще не на 100 процентов. И будет ли отправка одного электронного письма с остальным BCC действительным? Существует ли ограничение на количество BCC? И более вероятно, что это будет спам? Я думаю, что проблема со спамом не имеет значения, поскольку они будут зарегистрированы пользователями и в прошлом получили бы как минимум 1 электронную почту. – msith718

0

У меня есть запланированное задание на мой классический сайт ASP, который работает в верхней части каждого часа и отправляет сообщения электронной почты для различные причины. Прекрасно работает.

Я планирую командный файл для выполнения по графику, который я хочу. Пакетный файл имеет одну строку, которая выглядит следующим образом:

"C:\path\XMLRequester.vbs" http://example.com/SendFollowUpEmails.asp 

XMLRequester.vbs является небольшой скрипт, который запрашивает сценарий ASP, заставляя его выполнять:

' Simpler XML Requester 

On Error Resume Next 

dim shell 
Set shell = CreateObject("WScript.Shell") 
Dim objXML, strURL 

' Request URL from 1st Command Line Argument. This is 
' a nice option so you can use the same file to 
' schedule any number of differnet scripts just by 
' changing the command line parameter. 

strURL = WScript.Arguments(0) 

Set objXML = CreateObject("Microsoft.XMLHTTP") 
objXML.Open "GET", strURL, False 
objXML.Send 

if Err.Number <> 0 then 
    shell.LogEvent 1, "Error " & Err.Number & " (" & Err.Description & ")" 
end if 

Set objXML = Nothing 
Set shell = Nothing 

SendFollowUpEmails.asp это просто ASP скрипт, который делает все, что вам нужно.В моем случае он запрашивает базу данных, чтобы найти клиентов, которым необходимо отправить электронные письма, а затем отправляет их. У этого есть некоторое разумное значение тайм-аута, но если у него заканчивается время до его завершения, он просто заберет место, где он остановился при следующем запуске.

Смежные вопросы