2015-01-01 7 views
0
var 
    IdEnviar: TIdMessage; 

Если отправить электронную почту, он отлично работаетдоступа отправьте по электронной почте с приложением

IdSSLIOHandlerSocketOpenSSL1.Host := 'smtp.gmail.com'; 
IdSSLIOHandlerSocketOpenSSL1.Port := 587; 

но если я пытаюсь добавить вложение, добавив эти 3 строки:

IdEnviar.MessageParts.Clear; 
IdAttachmentFile1.Create(IdEnviar.MessageParts, 'c:\file.png'); 
IdAttachmentFile1.ContentType := 'multipart/mixed'; 

Я получаю ошибку нарушения доступа.

Я использую последние indy10 файлы

+0

Вы знаете, как создать экземпляр? 'MyFoo: = TFoo.Create;' –

+0

Я думаю, что у меня были экземпляры всех объектов IdSMTP1: = TIdSmtp.Create (nil); IdSSLIOHandlerSocketOpenSSL1: = TIdSSLIOHandlerSocketOpenSSL.Create (nil); IdEnviar: = TIdMessage.Create (nil); Код скомпилирован вправо, и если я не использую вложение, отправьте письмо по электронной почте, моя проблема связана с вложением –

+0

А как насчет 'IdAttachmentFile1.Create (IdEnviar.MessageParts, 'c: \ file.png');' ? –

ответ

2

Ваш код содержит серьезную ошибку:

IdAttachmentFile1.ContentType := 'multipart/mixed'; 

Вы не удалось создать TIdAttachmentFile должным образом, так что вы пытаетесь установить свойство на объект, который не существует и, таким образом, получает AV.

Правильный путь для достижения этой цели является присвоить результат TIdAttachmentFile.Create переменной, а затем установить, что переменной ContentType:

var 
    Attachment: TIdAttachmentFile; 

Attachment := TIdAttachmentFile.Create(IdEnviar.MessageParts, 'c:\file.png'); 
Attachment.ContentType := 'multipart/mixed'; 
Смежные вопросы