我正在使用方便的iText for C#生成PDF。现在,我基本上只需要生成这个PDF并通过电子邮件发送它。目前我可以用PDF生成文件,但我不想硬编码保存文件的路径。例如,我正在保存这样的文件:
string file = "C:\\Receipts\" + ConfirmationNumber + ".pdf";
现在,硬编码这样的路径完全违背了最佳做法。如何按照最佳做法正确保存文件?也许到项目本身的文件夹?谢谢你的帮助。
答案 0 :(得分:1)
如果你有HttpContext,你可以使用PhysicalApplicationPath。
string filePath = string.Format("{0}\\App_Data\\ExportImport\\{1}",
HttpContext.Current.Request.PhysicalApplicationPath, fileName);
如果您没有HttpContext,可以使用AppDomainAppPath。
string filePath = string.Format("{0}App_Data\\ExportImport\\{1}",
HttpRuntime.AppDomainAppPath, fileName);
答案 1 :(得分:1)
你有将文件写入磁盘吗?将iText创建的pdf直接发送到此 SO answer from Brianng
的电子邮件非常简单var doc = new Document();
MemoryStream memoryStream = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(doc, memoryStream);
doc.Open();
doc.Add(new Paragraph("First Paragraph"));
doc.Add(new Paragraph("Second Paragraph"));
writer.CloseStream = false;
doc.Close();
memoryStream.Position = 0;
MailMessage mm = new MailMessage("username@gmail.com", "username@gmail.com")
{
Subject = "subject",
IsBodyHtml = true,
Body = "body"
};
mm.Attachments.Add(new Attachment(memoryStream, "filename.pdf"));
SmtpClient smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
Credentials = new NetworkCredential("username@gmail.com", "password")
};
smtp.Send(mm);