发送带附件的电子邮件时出现访问冲突

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';