Добрый день!
Отправляем почту с вложением через Outlook.
procedure TForm1.Button1Click(Sender: TObject);
var OutLook : OleVariant;
MailItem : Variant;
fnlog : string;
begin
try
Outlook:= GetActiveOleObject('Outlook.Application');
except
Outlook:= CreateOleObject('Outlook.Application');
end;
MailItem:= Outlook.CreateItem(olMailItem);
MailItem.Recipients.Add('qwerty@eprst.ru');
MailItem.Subject:= 'отправка log-а';
MailItem.Body:= 'Привет!';
MailItem.Attachments.Add('d:\log.txt'); //Если так - все нормально отрабатывает
fnlog := 'd:\log.txt';
MailItem.Attachments.Add(fnlog); //Если так - в этом месте ошибка "Прект вызвал класс исключения 'EOleSysError' с сообщением ???????..."
//файл не найден
MailItem.Send;
Outlook := Unassigned;
end;
В чем прикол?
Заранее спасибо!
Ошибка при вводе параметра (OleVariant)
Модератор: Модераторы
- alexs
- долгожитель
- Сообщения: 4069
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Не помню где подсмотрел - вроде работает.
Код: Выделить всё
Var
myItem, myAttachments, myAttachment : Variant;
const
olMailItem=0;
var
MailItem: Variant;
Outlook: OLEVariant;
begin
try
Outlook:=CreateOleObject('Outlook.Application');
MailItem:=Outlook.CreateItem(olMailItem);
MailItem.Recipients.Add(FFilter.Email); //'Список адресов');
MailItem.Subject:=FFilter.MessageSubject; //'Заголовок письма';
MailItem.Body:= FFilter.MessageBody.Text; //'Тело письма';
myAttachments := MailItem.Attachments;
myAttachment := myAttachments.Add(FFilter.EmailAttachFileName);
MailItem.Send;
Outlook:=Unassigned;
Except
ShowMessage('OLE error!');
End;
end; Ну да. Это тот же пример.
Проблема в том, что если присоединяемый к письму файл указать напрямую строкой MailItem.Recipients.Add('C:filename.txt') - все работает,
а если через переменную fn := 'C:filename.txt'; MailItem.Recipients.Add(fn); - ошибка "файл не найден"

Добавлено спустя 1 минуту 45 секунд:
Причем этот же кусок в delphi7 работает без проблем. Ошибка в lazarus-е возникает на этапе выполнения.
Добавлено спустя 20 минут 26 секунд:
Решено! Re: Ошибка при вводе параметра (OleVariant)
Решено! Спасибо Дож-у:)
Вместо String использовал WideString и все пошло!!!
Проблема в том, что если присоединяемый к письму файл указать напрямую строкой MailItem.Recipients.Add('C:filename.txt') - все работает,
а если через переменную fn := 'C:filename.txt'; MailItem.Recipients.Add(fn); - ошибка "файл не найден"
Добавлено спустя 1 минуту 45 секунд:
Причем этот же кусок в delphi7 работает без проблем. Ошибка в lazarus-е возникает на этапе выполнения.
Добавлено спустя 20 минут 26 секунд:
Решено! Re: Ошибка при вводе параметра (OleVariant)
Решено! Спасибо Дож-у:)
Вместо String использовал WideString и все пошло!!!
