发送带附件的电子邮件时出现访问冲突
Access violation on send email with attachment
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 文件
您的代码包含严重错误:
IdAttachmentFile1.ContentType := 'multipart/mixed';
您未能正确创建 TIdAttachmentFile
,因此您试图在不存在的对象上设置 属性,从而获取 AV。
完成此操作的正确方法是将 TIdAttachmentFile.Create
的结果赋给一个变量,然后设置该变量的 ContentType
:
var
Attachment: TIdAttachmentFile;
Attachment := TIdAttachmentFile.Create(IdEnviar.MessageParts, 'c:\file.png');
Attachment.ContentType := 'multipart/mixed';
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 文件
您的代码包含严重错误:
IdAttachmentFile1.ContentType := 'multipart/mixed';
您未能正确创建 TIdAttachmentFile
,因此您试图在不存在的对象上设置 属性,从而获取 AV。
完成此操作的正确方法是将 TIdAttachmentFile.Create
的结果赋给一个变量,然后设置该变量的 ContentType
:
var
Attachment: TIdAttachmentFile;
Attachment := TIdAttachmentFile.Create(IdEnviar.MessageParts, 'c:\file.png');
Attachment.ContentType := 'multipart/mixed';