Отправка писем из кода 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;
Другие вопросы по тегам