Отправка сообщений в Microsoft Outlook. Скрытие окон безопасности
Всем доброго времени суток дорогие читатели блога. Давно я ничего не писал в блог, на этот раз решил исправиться. Передо мной стала задача разработать систему заявок на одном предприятии. Так вот, в одном приложении мне необходимо было сделать, чтобы копия заявки приходила на электронный адрес исполнителя. Все система моя работает на MS SQL Server, электронные адреса исполнителей хранятся там же.
На предприятии у нас работает Microsoft Outlook (установлен сервер) и соответственно на каждом рабочем месте свой клиент с учетной записью. Программа должна записывать заявку в базу данных, а копию отправлять по электронной почте, подключаясь к почтовому ящику пользователя (под его учетной записью, то есть, от его имени).
В принципе тут ничего сложного нет, можно для этих целей использовать MAPI, но минус в этом заключается в том, что когда используется MAPI, то пользователю показывается сообщение о том, что к Вашему ящику пытаются получить доступ, это может быть вредоносное ПО и так далее. Эта лишняя информация для пользователя (в моем случае), потому что они начнут паниковать, когда будут составлять заявку, будут звонить, что вредоносное ПО и так далее. Мне пришлось решать проблему по поводу скрытия данного уведомления. На предприятии у нас используется Microsoft Outlook 2003, поэтому в настройках безопасности там нельзя было выключить данный пункт, по крайней мере, я не знал, как это сделать.
Программа установлена более чем на 100 компьютерах. На некоторых компьютерах мне удалось решить данную проблему при помощи установки Microsoft Outlook Express, так как там имеется пункт по поводу отключения безопасности. В этом случае, отправка сообщений производится в фоном режиме, то есть, пользователю не придется нажимать на кнопку Да, что якобы какое-то программное обеспечение пытается получить доступ к учетной записи в электронной почте. На остальные компьютерах по прежнему был установлен Microsoft Outlook 2003 и там никак нельзя было менять его на более низкую версию. Полазив немного в Интернете, я нашел довольно интересную программу, которая называется ClickYes.
Программа очень полезная и интересная, по крайней мере, в моих целях она мне очень пригодилась. Но один ее очень большой минус – это то, что она является платной. Как Вам сказать платной, есть более ранние версии программы – они бесплатны, а уже новые версии, начиная с 2010 года – уже платные. На нее имеется тестовый период в 30 дней. Программа ClickYes предназначена для того, чтобы скрывать это самое окно безопасности в Microsoft Outlook.
Бесплатные версии его не скрывают, а просто нажимают на кнопку Да, в течение 10 секунд, то есть, пользователь видит это окно все равно и может сам нажать на него в течение 10 секунд, что касается версии с 2010 года (платная версия), то она полностью скрывает это окно безопасности и пользователь его вообще не видит. Конечно, можно было что-то подобное реализовать у себя, но я стал искать простой способ.
Этот способ заключался в том, что я возвращаю на все компьютеры версию Outlook до 2003 (Microsoft Outlook Express), а на сервере (где установлена база данных и серверная часть программы) устанавливаю Microsoft Outlook Express. С сервера и будет отправляться копия заявки на нужные адресаты (за это будет отвечать серверная часть программы). Так как в Outlook Express можно в настройках отключить уведомления безопасности, то я решил таким способом. Насколько я знаю, что в более старших версиях OutLook (после 2003) тоже можно отключать данные уведомления.
Самый простой способ – это установить Outlook Express на сервер и с него отправлять электронную почту на любые адреса (без разницы какой там будет установлен Outlook).
На сервере можно использовать следующий способ отправки сообщений при помощи MAPI:
procedure TForm3.Button2Click(Sender: TObject);
var
lMail: TMapiControl;
begin
try
RichEdit2.Lines.Add('текст письма');
lMail := TMapiControl.Create(Self);
lMail.Reset;
lMail.Recipients.Add(PChar('адресаты');
lMail.Subject:='Заявка от: '+Ini.ReadString('Authorization','login','');
lMail.Body:=RichEdit2.Text;
lMail.ShowDialog:=False; //Показывать перед отправкой диалог мейл-клиента по умолчанию или нет.
lMail.Sendmail;
lMail.Free;
except
on e:Exception do
end;
end;
Не забудьте в usesподключить модуль MAPI. Что касается адресатов, то можно отправлять сразу нескольким, тогда Вам придется каждого указывать через точку запятой. Думаю, что тут все понятно, особо ничего сложного нет.
Подведем итоги: если Вам требуется отправить письмо из своей программы при помощи клиента Microsoft Outlook и чтобы не появлялось окно безопасности, то можно воспользоваться версией Outlook Express (необходимо в настройках безопасности будет выставить), либо же другие версии, где эти уведомления отключаются. Можете разработать функционал, который сам будет скрывать данные окна (нажимать на нужные кнопки). Можете использовать сервер отправки сообщений, как я привел выше, а можете использовать программу ClickYes, которая очень мне понравилась, причем она не слишком дорогая. В конце я прикладываю скриншот одного модуля своей системы заявок, из которого осуществляется отправка электронной почты:
Кстати, еще очень удобно отправлять сообщения из Outlook Express, так как она понимает HTML-разметку, и Вы с легкостью можете формировать внешний вид своего сообщения как Вам захочется. Это еще один плюс в пользу того, что лучше использовать Outlook Expres sна том же самом сервере. Не забудьте посмотреть статью про MAPI, там тоже имеется полезная информация.