C#:将自定义文件(.sl)附加到电子邮件中

时间:2016-11-06 23:48:33

标签: c# .net email batch-file

我正在尝试将自定义文件附加到电子邮件中但无济于事。下面的代码调用批处理文件,该文件创建加密文件,然后我尝试将该文件附加到电子邮件。批处理文件成功创建文件,但是当它尝试附加文件时表示该文件不存在。我读到你需要创建一个内存缓冲区或附加到同一个线程,我试着思考它,但我现在真的很难过。有人可以帮忙吗?

代码:

                string file = @"C:\EncryptedFile\file.sl";

                //EXECUTE BATCHFILE SUPPLYING PARAMETERS TO IT
                Process process = new Process();
                process.StartInfo.Arguments = string.Format("{0} {1} {2} {3}",
                                            file,
                                            key,
                                            doc1, 
                                            doc2);
                process.StartInfo.FileName = MyBatchFile;
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.CreateNoWindow = true;
                process.Start();

                //attach to email
                Attachment attachment;
                attachment = new Attachment(file);
                mail.Attachments.Add(attachment);

错误:

  

System.IO.DirectoryNotFoundException:找不到部分内容   路径'C:\ EncryptedFile \ file.sl'。在   System.IO .__ Error.WinIOError(Int32 errorCode,String maybeFullPath)
  在System.IO.FileStream.Init(字符串路径,FileMode模式,FileAccess   访问,Int32权限,布尔useRights,FileShare共享,Int32   bufferSize,FileOptions选项,SECURITY_ATTRIBUTES secAttrs,String   msgPath,Boolean bFromProxy,Boolean useLongPath,Boolean checkHost)
  在System.IO.FileStream..ctor(字符串路径,FileMode模式,FileAccess   访问,FileShare共享)at   System.Net.Mail.AttachmentBase.SetContentFromFile(String fileName,   字符串mediaType)在System.Net.Mail.AttachmentBase..ctor(String   System.Net.Mail.Attachment..ctor(String fileName)

中的fileName)

谢谢!

1 个答案:

答案 0 :(得分:1)

异常非常清楚。这意味着创建附件时文件不存在。 我会修改你的代码:

  1. 等待util进程退出。没有它,您可以在批处理文件创建附件之前创建附件。
  2. 检查退出代码(如果您的批次支持)
  3. 在创建附件之前检查文件以处理批处理由于某种原因未创建文件的情况。