Запланируйте отправку электронного письма

#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 или, что еще лучше, имел бы запланированную задачу, вызывающую мое приложение каждый день в полночь, затем приложение проверяет, кому электронное письмо должно быть отправлено прямо сейчас, создает его и отправляет.