Delphi 发送带有附件的电子邮件时发生访问冲突

Delphi 发送带有附件的电子邮件时发生访问冲突,delphi,smtp,gmail,delphi-7,indy,Delphi,Smtp,Gmail,Delphi 7,Indy,如果我发电子邮件,效果很好 var IdEnviar: TIdMessage; 但如果我尝试添加附件,请添加以下3行: IdSSLIOHandlerSocketOpenSSL1.Host := 'smtp.gmail.com'; IdSSLIOHandlerSocketOpenSSL1.Port := 587; 我得到一个访问冲突错误 我正在使用最后的indy10文件您的代码包含严重错误: IdEnviar.MessageParts.Clear; IdAttachmentFile1.C

如果我发电子邮件,效果很好

var
  IdEnviar: TIdMessage;
但如果我尝试添加附件,请添加以下3行:

IdSSLIOHandlerSocketOpenSSL1.Host :=  'smtp.gmail.com';
IdSSLIOHandlerSocketOpenSSL1.Port := 587;
我得到一个访问冲突错误


我正在使用最后的indy10文件

您的代码包含严重错误:

IdEnviar.MessageParts.Clear;
IdAttachmentFile1.Create(IdEnviar.MessageParts, 'c:\file.png');
IdAttachmentFile1.ContentType := 'multipart/mixed';
您未能正确创建
TIdAttachmentFile
,因此尝试在不存在的对象上设置属性,从而获取AV

正确的方法是将
TIdAttachmentFile.Create
的结果分配给变量,然后设置该变量的
ContentType

IdAttachmentFile1.ContentType := 'multipart/mixed';

你知道如何创建一个实例吗<代码>MyFoo:=TFoo.Create我想我有所有对象的实例IdSMTP1:=tidstp.Create(nil);IdSSLIOHandlerSocketOpenSSL1:=TIdSSLIOHandlerSocketOpenSSL.Create(nil);IdEnviar:=TIdMessage.Create(nil);代码编译正确,如果我不使用附件,电子邮件发送很好,我的问题是attachmentAnd
IdAttachmentFile1.Create(IdEnviar.MessageParts,'c:\file.png')?您的意思是将其添加到var中吗?我也这么做了:tidattachmentfile1:TIdAttachmentfile;我的意思是您应该使用
TIdAttachmentFile创建一个实例。创建(…)
这就是您必须创建实例的方式
var
  Attachment: TIdAttachmentFile;

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