使用VB.net发送带有附件的电子邮件



我知道这是一个老问题,但你能帮我吗?

我有一个源代码在互联网上发现,可以通过电子邮件发送附件。我尝试在我的应用程序,但我得到这个错误。

System.Web.HttpException (0x8000405) Invalid mail attachment C:File.pdf  
at System.Web.Mail.MailAttachment.VerifyFile() 
at System.Web.Mail.Attachment..ctor(String filename)
这是我找到的代码
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports System.Web.Mail
Public Class ReportsForm
Dim cryRpt As New ReportDocument
Dim pdfFile As String = "C:File.pdf"
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
cryRpt.Load("Crystal Report Path here")
CrystalReportViewer1.ReportSource = cryRpt
CrystalReportViewer1.Refresh()
End Sub
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Try
Dim CrExportOptions As ExportOptions
Dim CrDiskFileDestinationOptions As New  _
DiskFileDestinationOptions()
Dim CrFormatTypeOptions As New PdfRtfWordFormatOptions
CrDiskFileDestinationOptions.DiskFileName = pdfFile
CrExportOptions = cryRpt.ExportOptions
With CrExportOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
.DestinationOptions = CrDiskFileDestinationOptions
.FormatOptions = CrFormatTypeOptions
End With
cryRpt.Export()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
sendMail()
End Sub
Private Sub sendMail()
Try
Dim Smtp As SmtpMail
SmtpMail.SmtpServer.Insert(0, "hostname")
Dim Msg As MailMessage = New MailMessage
Msg.To = "to address"
Msg.From = "from address"
Msg.Subject = "Crystal Report Attachment "
Msg.Body = "Crystal Report Attachment "
Msg.Attachments.Add(New MailAttachment(pdfFile))
SmtpMail.Send(Msg)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
End Class

谢谢

我想问题出在你的pdf附件文件上。你需要一个安全的地方来创建它。您将使用以下代码创建附件文件路径和名称:

Dim pdfFile As String = System.IO.Path.GetTempPath & "File.pdf"
If System.IO.File.Exists(pdfFile) Then My.Computer.FileSystem.DeleteFile(pdfFile)

然后使用一行代码将cryppt对象导出为pdf文件:

cryRpt.ExportToDisk(ExportFormatType.PortableDocFormat, pdfFile)

如果没有异常,您的附件将被创建并准备发送。

最新更新