Отправка писем из кода Delphi в среде Citrix
Наши клиенты в основном используют MS Outlook, но иногда и другие клиенты создают проблемы при создании нового почтового окна из кода.
мы попытались также реализовать альтернативу mailto:, но использование attachment="C:\filename.txt" не удалось.
щелчок правой кнопкой мыши по файлу с помощью функции "Отправить на почту" работает в основном так или иначе, но я так и не нашел способа сделать это с помощью кода.
Есть ли другие способы создать новое письмо с вложенным файлом?
мы также поняли, что из-за кода mapi происходит сбой всего приложения, ошибка windows довольно часто выдает ошибку, похожую на эту:
Faulting module name: dhcpcsvc.DLL, version: 6.1.7600.16385, time stamp: 0x4a5bd9b5
Exception code: 0xc0000005
Fault offset: 0x00001d00
Faulting process id: 0x868
Faulting application start time: 0x01ca7fbc86a3e836
Faulting application path: C:\Program Files (x86)\Microsoft Office\OFFICE11\OUTLOOK.EXE
Faulting module path: C:\Windows\system32\dhcpcsvc.DLL
Report Id: c60fa358-ebaf-11de-8b4f-0026b9486d93
2 ответа
Смотрите: Как я могу симулировать "Отправить..." с помощью Delphi?
Код показывает, как можно открыть новое окно "Создать почту" с уже прикрепленным файлом, имитируя действие операционной системы по умолчанию для контекстного меню оболочки "Отправить в...".
Есть ли другие способы создать новое письмо с вложенным файлом?
Да. Вы можете отправить напрямую используя Indy: TIdSMTP + TIdMessage + TIdAttachmentFile.
Образец кода:
IdMessage := TIdMessage.Create(nil);
IdSMTP := TIdSMTP.Create(nil);
try
IdMessage.Subject := 'YourMessageSubject';
IdMessage.Recipients := 'targetmail1@example.com,targetmail2@example.com';
IdMessage.CCList := ...
IdMessage.BccList := ...
IdMessage.Body.Text := 'YourMessageText';
IdSMTP.Host := 'smtp.example.com';
i := 1;
TIdAttachmentFile.Create(IdMessage.MessageParts, TFileName('YourAttachmentFileName'));
try
IdSMTP.Connect;
IdSMTP.Send(IdMessage);
finally
IdSMTP.Disconnect;
end;
finally
IdMessage.Free;
IdSMTP.Free;
end;