Форум: "Начинающим";
Текущий архив: 2012.03.18;
Скачать: [xml.tar.bz2];
ВнизКонтроль отправки письма по Email Найти похожие ветки
← →
Laguna © (2011-12-01 13:23) [0]Для отправки письма есть такая процедура
procedure SendReport(Pol : TStringList; Sub, Bod : String; Attach : TStringList);
const
olMailItem = 0;
olByValue = 1;
StrGood = "Письмо отправлено.";
StrBad = "Письмо поставлено в очередь на отправку." + #13#10 +
"Запустите почтовую программу и оно будет отправлено.";
var
OutlookApp,
MailItem,
MyAttachments : OLEVariant;
Otp : Boolean;
ifSend : Boolean;
i : Integer;
begin
ifSend := False;
try
OutlookApp := GetActiveOleObject("Outlook.Application");
Otp := True;
except
OutlookApp := CreateOleObject("Outlook.Application");
Otp := False;
end;
try
try
MailItem := OutlookApp.CreateItem(olMailItem);
for i := 0 to Pred(Pol.Count) do
MailItem.Recipients.Add(Pol.Strings[i]);
MailItem.Subject := Sub;
MailItem.Body := Bod;
MyAttachments := MailItem.Attachments;
for i := 0 to Pred(Pol.Count) do
MyAttachments.Add(Attach[i], olByValue, 1, "");
MailItem.Send;
ifSend := True;
except
InfMsg("","Отмена отправки");
end;
finally
MyAttachments := VarNull;
OutlookApp := VarNull;
if ifSend then
InfMsg("", IIF(Otp, StrGood, StrBad));
end;
end;
первый блокtry.. except.. end;
проверяет открыт ли аутлук или нет. Если открыт - отправляем письмо. Если закрыт - ставим в очередь. Затем при отправке аутлук трижды переспрашивает разрешения на отправк, дабы не вирус отправляет. тАк вот если нажать на кнопку отмена, то отправка просто обрывается и не заходит в нижний блок finally. Что не правильно сделано? Может блоки try не так сопоставил?
← →
Медвежонок Пятачок © (2011-12-01 13:36) [1]это оптический обман.
если второй сверху трай пройден, то в файнали попадаешь гарантировано.
← →
Laguna © (2011-12-01 13:40) [2]Так в том и дело, что он не проходит, точнее срабатывает except вложенного try и срабатывает
InfMsg("","Отмена отправки");
. А в finally не заходит(ставил точки в трассировке)
← →
Медвежонок Пятачок © (2011-12-01 13:41) [3]Ты примерно стомиллионный посетитель, который говорит, что не попадает в файнали.
PS Если из под среды, то F9 после всех исключений.
← →
Laguna © (2011-12-01 13:44) [4]Аааа... походу умный компилятор не пошел вниз, поскольку невыполняемое условие стояло в финальной части. Изменил на такое и прошло
...
ifSend := True;
except
// InfMsg("","Отмена отправки");
end;
finally
MyAttachments := VarNull;
OutlookApp := VarNull;
if ifSend then
InfMsg("", IIF(Otp, StrGood, StrBad))
else
InfMsg("","Отмена отправки");
end;
end;
← →
Медвежонок Пятачок © (2011-12-01 13:48) [5]не путай теплое и мягкое.
в файнали ты попадаешь всегда. даже если у тебя нет денег, тебя бросила жена и ты пьяный.
а будет ли оптимизатором прилинкован код внутри файналли - это уже другой вопрос.
← →
Laguna © (2011-12-01 13:54) [6]
> в файнали ты попадаешь всегда. даже если у тебя нет денег,
> тебя бросила жена и ты пьяный.а будет ли оптимизатором
> прилинкован код внутри файналли - это уже другой вопрос.
>
Хорошо, токда почему я в него не захожу в режиме отладки? Точку ствлю здесь
finally
MyAttachments := VarNull;
OutlookApp := VarNull;
if ifSend then
InfMsg("", IIF(Otp, StrGood, StrBad));
end;
end;
← →
Сергей М. © (2011-12-01 14:35) [7]
> Точку ствлю здесь
где "здесь" ?
в этом блоке целых 4 строки..
← →
Laguna © (2011-12-01 14:50) [8]
> где "здесь" ?в этом блоке целых 4 строки..
выделена жирным
← →
Сергей М. © (2011-12-01 14:53) [9]А накой шиш вообще эти строчки
MyAttachments := VarNull;
OutlookApp := VarNull;
?
Компилятор сделает это неявно...
← →
QAZ (2011-12-01 15:12) [10]
> дабы не вирус отправляет.
а нафига вирусу отправлять почту через оутлук? lol
← →
Laguna © (2011-12-01 15:22) [11]Я полагаю для обнудения значений, хотя действительно может и лишнее. Хорошо, закоменнтил я их и оставил только одну строку, чтобы проверить вход в финализацию. Так вот после компиляции на этой строке синие точки не появились, куда я мог бы установить точку останова. http://s017.radikal.ru/i408/1112/b2/8e3a6802d90d.jpg Получается не считает он нужным заходить в этот блок.
← →
Laguna © (2011-12-01 15:27) [12]Походу строчка потерялась. В финале нужно вот это сделать OutlookApp := VarNull
> а нафига вирусу отправлять почту через оутлук? lol
А я почем знаю? Кто работал с аутглюком и отправлял через него письма, тот в курсе о его переспросах.
← →
OW © (2011-12-01 16:11) [13]на потом, sleep(1) я обычно ставлю при отладке. Этот оператор не оптимизируется никогда :)
← →
Медвежонок Пятачок © (2011-12-01 16:13) [14]Еще раз.
Ты стомиллионный пациент, который здесь утверждает, что зайдя в трай, не попадает в его файнали.
А если точек останова там нет, то значит они выброшены оптимизатором.
← →
Сергей М. © (2011-12-01 16:20) [15]Вирусу равно как и не-вирусу ничего не стоит подавить эти самые "переспросы" - достаточно перед отправкой сообщений программно воткнуть в Аутглюк Add-In с соответствующей давилкой.
← →
Laguna © (2011-12-01 19:14) [16]
> Вирусу равно как и не-вирусу ничего не стоит подавить эти
> самые "переспросы" - достаточно перед отправкой сообщений
> программно воткнуть в Аутглюк Add-In с соответствующей давилкой.
>
Ну всем не повтыкаешь, да и не ставилась такая цель.
> Еще раз.Ты стомиллионный пациент, который здесь утверждает,
> что зайдя в трай, не попадает в его файнали. А если точек
> останова там нет, то значит они выброшены оптимизатором.
Я в подсознании я полностью согласен, но когда реальные факты...
Касаемо этой переменнойOutlookApp := VarNull
Ее то обязательно нужно обнулить?
← →
Медвежонок Пятачок © (2011-12-01 19:35) [17]Зачем?
Даже если этого не сделать самому,
то обе переменные все равно не просто обнулятся, но еще и исчезнут совсем, как только закончится SendReport.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.03.18;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.003 c