Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# iTextSharp使用Memorystream将PDF作为附件发送_C#_Asp.net Mvc_Itextsharp - Fatal编程技术网

C# iTextSharp使用Memorystream将PDF作为附件发送

C# iTextSharp使用Memorystream将PDF作为附件发送,c#,asp.net-mvc,itextsharp,C#,Asp.net Mvc,Itextsharp,我一直在努力解决这个问题,而且已经非常接近了,但还没有完全实现。我正在尝试使用iTextSharp V 4.1.2将PDF作为电子邮件附件发送。我在下面提供的代码同时使用了filestream和memorystream,filestream是为了向我自己证明PDF模板上有数据戳记(它是)。另外,我正在接收电子邮件,但没有附件。有人能看到我遗漏了什么吗 public class BasePDFController : BaseController { 受保护的ActionResult eMail

我一直在努力解决这个问题,而且已经非常接近了,但还没有完全实现。我正在尝试使用iTextSharp V 4.1.2将PDF作为电子邮件附件发送。我在下面提供的代码同时使用了filestream和memorystream,filestream是为了向我自己证明PDF模板上有数据戳记(它是)。另外,我正在接收电子邮件,但没有附件。有人能看到我遗漏了什么吗

public class BasePDFController : BaseController
{ 受保护的ActionResult eMailPdf(对象模型) { 字符串pdf=Path.Combine(Server.MapPath(“~/Infrastructure/PDFTemplates/fw9.pdf”); 字符串outputFilePath=@“C:\Projects\Temp\test\u template\u filled.pdf”

}

编辑: -是的,邮件提供商有问题。我不知道如何解决它,或者这是否是发送邮件的最佳方式?写这篇文章的人显然放弃了。 编辑 修正了附件

    public static class EmailProvider
{
    public class Email
    {
        public String To { get; set; }

        public String Subject { get; set; }

        public String Body { get; set; }

        **public Attachment Attachment { get; set; }**
    }

    public static void SendEmail(Email email)
    {
        MailMessage mail = new MailMessage();
        mail.To.Add(email.To);
        mail.Subject = email.Subject;
        mail.Body = email.Body;
        mail.IsBodyHtml = true;
        mail.Attachments.Add(email.Attachment);
        SmtpClient smtp = new SmtpClient();

        smtp.Send(mail);
    }
}
修复电子邮件后,我将收到PDF!但是,当我尝试从电子邮件打开PDF时,我收到一个错误: 打开此文档时出错。文件已损坏,无法修复。
想法?

您应该在
pdfMemoryStamper.Writer.CloseStream=false之后调用
pdfMemoryStamper.Close()

像这样:

// *snip*

pdfFileStamper.FormFlattening = true;
pdfMemoryStamper.FormFlattening = true;
pdfMemoryStamper.Writer.CloseStream = false;

pdfMemoryStamper.Close();

memoryStream.Position = 0;

// *snip*

问题可能与
EmailProvider.Email
EmailProvider.SendEmail
有关。如果可以,请发布该代码。我已更新了上述代码,如果有人正在寻找使用iTextSharp发送PDF的工作示例,则上述示例有效。
// *snip*

pdfFileStamper.FormFlattening = true;
pdfMemoryStamper.FormFlattening = true;
pdfMemoryStamper.Writer.CloseStream = false;

pdfMemoryStamper.Close();

memoryStream.Position = 0;

// *snip*