Запланированная почта в asp.net - PullRequest
1 голос
/ 29 августа 2009

Hai Guys, Мое приложение рассматривает запланированную почтовую концепцию (то есть) каждое утро в 6 часов утра. Мои пользователи получают оставшуюся почту об их деятельности за день ... Я не знаю, как это сделать .... Многие сказали, что используют службу Windows, но я буду размещать свой веб-сайт на общем сервере я не могу получить права на обслуживание Windows ... Есть ли dll для отправки почты в запланированное время через приложение asp.net ... пожалуйста, помогите мне, ребята ......

Ответы [ 5 ]

1 голос
/ 29 августа 2009

Вы не можете многое сделать на виртуальном хостинге. Попробуйте обновить хостинг или напишите Windows-сервис, который будет работать на вашем компьютере, который будет вызывать asp.net, который может отправлять электронные письма. Конечно, ваша машина должна быть включена постоянно или хотя бы в 6:00 утра :). Вы должны будете принять надлежащие меры, чтобы избежать несанкционированного запроса на эту страницу aspx.

Вы также можете проверить эту статью: http://www.codeproject.com/KB/aspnet/ASPNETService.aspx

0 голосов
/ 29 августа 2009

Хорошо, это интересно, и то, что я сделал, соответствует определенному «обману» Силки, но нет, это было довольно круто для меня.

Я создал новый поток из кода ASP.Net (это было возможно на этом хосте), и этот поток выполнил запланированное задание.

Я проверял, была ли ветка жива (что довольно легко) при каждом посещении веб-сайта (я не знаю, насколько это надежно, но это сработало, потому что у сайта много посетителей).

Если ты вообще это делаешь

  • Относитесь к этому как к пробелу, пока вы договариваетесь о выделенном хосте или VPS.
  • Будьте уверены, что хостинговая компания убьет ваш поток и отзовет разрешения, когда обнаружит, что вы делаете это.
0 голосов
/ 29 августа 2009

Если вам это пригодится (и я полагаю, вы это делаете), вы можете использовать задание агента SQL Server для отправки запроса на страницу ASP.NET, которая отправляет электронное письмо.

Вот пример кода:

http://nicholasclarke.co.uk/blog/2008/01/16/web-request-from-sql-server-via-c/

Конечно, поскольку вы все равно используете SQL Server для вызова кода CLR, вы могли бы просто с этим кодом отправлять электронные письма (через System.Net.Mail), а не запрашивать страницу в IIS. сделать это. Для этого SQL Server потребуется:

  • Доступ ко всем данным, необходимым для отправки электронных писем
  • Исходящий доступ через брандмауэр для отправки электронной почты
  • CLR-код, который инкапсулирует всю логику, необходимую для того, чтобы знать, куда и что отправлять.
0 голосов
/ 29 августа 2009

Вы можете иметь программу, которая работает постоянно и имеет таймер или цикл, который проверяет время суток, а затем спит в течение очень долгого времени, а когда таймер выключается или наступает подходящее время суток, он отправляет электронное письмо. или вы можете запустить программу как запланированное задание. Первый метод также может быть реализован как сервис, если хотите. Помните, что вам не нужен ASP.Net для отправки электронной почты, все, что вам нужно, это консольное приложение, которое использует System.Net.Mail. Посмотрите пример почтовой программы на MSDN для очень простой идеи.

Еще одна вещь, которую вы можете рассмотреть: в IIS есть служба smtp, которую вы можете установить, и она использует каталог раскладки для отправки почты. Вы пишете электронное письмо в каталог раскладки в виде файла .eml, а IIS захватывает его и отправляет почти сразу. Если вы это сделаете, вам все равно придется писать электронные письма (System.net.Mail будет записывать файлы .eml из MailMessage, просто установите SmtpClient.DeliveryMethod в SpecifiedPickupDirectory или PickupDirectoryFromIIS и вызовите SmtpClient.Send), но затем он отправит их для вас. Вам все равно нужно будет что-то запланировать, чтобы это было не так уж и полезно, но я подумал, что по крайней мере дам вам знать, что это существует.

Следует помнить одну вещь: когда служба SMTP IIS считывает конверт отправки файла .eml, порядок заголовков Отправитель и От имеет значение; если заголовок From появляется перед заголовком Sender, то команда MAIL FROM будет использовать заголовок From, что неверно (и MS не исправит этот). Похоже, что это проблема ТОЛЬКО со службой IIS SMTP, так как об этом больше нигде не сообщалось, о чем я знаю. Изменение порядка заголовков - это обходной путь. По умолчанию SmtpClient всегда записывает заголовок From первым. Я знаю об этой проблеме, и IIS ее не исправляет, но, возможно, я смогу получить исправление в SmtpClient для сборки .NET 4.0 RC, которое переупорядочивает заголовки для вас, но без обещаний.

0 голосов
/ 29 августа 2009

Вы не можете сделать это с ASP.Net. ASP.Net предназначен для веб-страниц, которые реагируют на запросы HTTP.

Вам нужно запланированное задание или сервис. Все, что может сделать веб-сайт, - это отвечать на запросы. Я полагаю, вы могли бы запрограммировать эту функциональность на веб-страницу, и каждое утро удаленный процесс запрашивал страницу - но что произойдет, если кто-то еще запросит страницу?

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