通过批处理作业“无法创建CLR对象”发送电子邮件时出错。如果没有附件,代码工作正常,对附件所在的文件和目录的权限是正常的。
这是我的代码:
permissionSet = new Set(Types::Class);
permissionSet.add(new InteropPermission(InteropKind::ClrInterop));
permissionSet.add(new FileIOPermission(_filename, 'rw'));
CodeAccessPermission::assertMultiple(permissionSet);
smtpClient = new System.Net.Mail.SmtpClient();
smtpClient.set_Port(25);
smtpClient.set_DeliveryMethod(System.Net.Mail.SmtpDeliveryMethod::Network);
smtpClient.set_UseDefaultCredentials(true);
smtpClient.set_Host('smtp-out.adista.fr');
mail = new System.Net.Mail.MailMessage(sendFrom,sendTo);
mail.set_Subject(subject);
mail.set_IsBodyHtml(true);
mail.set_Body(emailBody);
mailAttachementCollection = mail.get_Attachments();
mailAttachment = new System.Net.Mail.Attachment(filename);
mailAttachementCollection.Add(mailAttachment);
smtpClient.Send(mail);
CodeAccessPermission::revertAssert();
我调试了,错误出现在“mail attachment = new System.Net.Mail.Attachment(filename);”线。是否存在路径编码错误?我使用UNC路径,如'\ network \ directory \ file.csv'和@path,硬编码路径和文件名具有相同的错误。 我尝试使用sysmailer类,添加附件时也出错了。 有任何想法吗? 谢谢你的帮助
的问候,
答案 0 :(得分:1)
AOS服务帐户必须具有Windows文件权限才能读取该文件。
访问问题是批处理文件问题的最常见原因,或者可能仅次于非UNC文件名。