0

我有一个名为OrderExport.aspx的页面,它在服务器上的文件夹中创建一个 pdf 文件。

在我的OrderSend.aspx页面中,我有一个函数可以发送附有 pdf 文件的电子邮件,如下所示:

Dim atc As Net.Mail.Attachment = New Attachment(stm, fileNameOrder)
mail.Attachments.Add(atc)

如何在发送电子邮件之前从该函数调用OrderExport.aspx而不向用户显示它?

发送电子邮件时,我需要确保 pdf 文件存在。

4

3 回答 3

0

您可能想要创建一个类而不是一个 aspx 页面来处理 PDF 创建。一种方法是使用 PDFSharp 库,该库可以处理创建 PDF 文档,然后将其保存到可以附加到电子邮件消息的流中。您还可以同时将流保存到服务器上的文件中。

' Create a new PDF document
Dim document As PdfDocument = New PdfDocument
document.Info.Title = "TITLE"
Dim securitySettings As Security.PdfSecuritySettings = document.SecuritySettings
' Restrict some rights.
securitySettings.PermitAccessibilityExtractContent = False
securitySettings.PermitAnnotations = False
securitySettings.PermitAssembleDocument = False
securitySettings.PermitExtractContent = False
securitySettings.PermitFullQualityPrint = True
securitySettings.PermitModifyDocument = False
securitySettings.PermitPrint = True
' Create an empty page
Dim page As PdfPage = document.AddPage
' Get an XGraphics object for drawing
Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
Dim img As XImage = XImage.FromGdiPlusImage(imgPermit)
gfx.DrawImage(img, 20, 20)
Dim stream As New MemoryStream()
document.Save(stream, False)
Dim xStream As System.IO.Stream = stream
SendEmail(sEmail, xStream)

在您的邮件中,它的构造类似于此

Dim xStream As New Attachment(pdf, "FILE" + Date.Now.ToString("MM.dd.yyyy") + ".pdf")
mm.Attachments.Add(xStream)
于 2012-12-20T18:23:50.830 回答
0

关注点分离是最好的解决方案,但如果您需要一个快速的解决方案 - 不是一个好的解决方案 - 将类和函数公开并像任何其他类一样调用它

于 2012-12-20T19:29:21.837 回答
0

您需要将 GUI 与实际逻辑分开。

您可能在 OrderExport.aspx 中有创建 PDF 并将其保存到磁盘的代码。您应该将该代码放入一个单独的类中,以便您可以从 OrderExport.aspx 和带有“发送电子邮件”按钮的页面调用它。同样,从 OrderSend.aspx 中提取用于发送电子邮件的代码并从那里调用它,然后从“发送电子邮件”按钮中调用它。

于 2012-12-20T18:43:01.620 回答