#c# #wpf #visual-studio-2010 #email #queue
#c# #wpf #visual-studio-2010 #Адрес электронной почты #очередь
Вопрос:
Есть ли у меня способ с помощью приложения браузера WPF запланировать отправку электронного письма? У меня будет дата, дата подписки пользователя, а затем я хотел бы, чтобы он отправил пользователю электронное письмо за 5 дней до истечения срока их членства. Как я могу этого добиться?
Комментарии:
1. Кто несет ответственность за фактическую отправку электронного письма? Само приложение или сервер где-нибудь?
2. Ну, в конце концов, это приложение будет размещено в Интернете (это браузерное приложение). Я не думаю, что приложение может это сделать, так что это будет сервер или какая-то база данных, но, честно говоря, у меня нет опыта в подобных вещах, поэтому мне нужны серьезные рекомендации
3. Вы могли бы взглянуть на службы уведомлений SQL Server . Это сэкономит вам усилия по внедрению еще одного запланированного отправителя электронной почты.
4. ОК. Итак, я никогда не использовал sql; так смогу ли я использовать сервер mysql, предоставляемый моим веб-хостингом? я бы просто создал там базу данных?
5. Вы должны иметь возможность выполнять какое-то планирование, чтобы запускать задачу для отправки электронной почты один раз в день. Не уверен, какие инструменты предоставляет ваш хост, но я готов поспорить, что они что-то предоставляют.
Ответ №1:
Самый простой способ сделать это — записать запись в таблицу базы данных (скажем, в таблицу задач электронной почты), затем написать службу Windows, которая опрашивает эту таблицу, скажем, каждую минуту, проверяет наличие любых электронных писем, которые необходимо отправить, а затем отправляет их.
Комментарии:
1. верно, но это приложение для браузера, которое я выложу в Интернет, и оно будет только в Интернете, могу ли я по-прежнему иметь «службу Windows» онлайн?
2. Что вы имеете в виду, это приложение для браузера? Вы имеете в виду веб-сайт, работающий на сервере, конечно? В этом случае, если у вас нет доступа к серверу, я не понимаю, почему вы не можете написать службу Windows для отправки электронных писем, а затем просто установить ее на сервер.
3. Я думаю, это похоже на веб-сайт; Visual Studio просто называет это приложением браузера wpf. В любом случае, мне нужен специальный хост для этого?
4. вот ссылка от Microsoft на создание службы Windows, есть много статей, если вы погуглите msdn.microsoft.com/en-us/library/aa984464 (v= против 71).aspx . Вам потребуется доступ администратора к серверу, на котором вы устанавливаете службу, но технически служба может быть установлена на любом сервере, если у нее есть доступ к базе данных, где вы собираетесь хранить записи о том, какие электронные письма необходимо отправлять.
Ответ №2:
Похоже, вам придется что-то делать на стороне сервера с ежедневной проверкой запланированного задания / задачи на предмет того, кому нужно отправить электронное письмо.
Комментарии:
1. Да, это то, что я читал, но как именно я это сделаю? Вы бы порекомендовали использовать таблицу sql с заданиями sql?
Ответ №3:
AFAIK SMTP-сервер отправляет электронные письма немедленно, поэтому вам нужно сохранить эту очередь в своем приложении (или использовать MSMQ в качестве хранилища очередей) и заставить какую-то часть вашего приложения выполнять доставку в требуемое время.
На данный момент мой вопрос заключается в следующем: если вы можете отправлять, когда знаете, что пришло время для отправки, не можете ли вы отправить позже напрямую, не используя очередь, или у вас есть какая-либо логика в вашем приложении, чтобы электронное письмо, которое вы сгенерируете сегодня, не могло быть сгенерировано позже?
Я бы, вероятно, создал службу Windows или, что еще лучше, имел бы запланированную задачу, вызывающую мое приложение каждый день в полночь, затем приложение проверяет, кому электронное письмо должно быть отправлено прямо сейчас, создает его и отправляет.