vb.net - 使用 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)
然后,您只需使用一行代码即可将 cryRpt 对象导出为 pdf 文件:
cryRpt.ExportToDisk(ExportFormatType.PortableDocFormat, pdfFile)
如果没有发生异常,您的附件已创建并准备好邮寄。
推荐阅读
- unity3d - 使用四元数的Unity3D相对偏移对象旋转
- angular - 使用角度和firebase获取上传文件的url“无法设置未定义的属性”
- java - 类型为内部类的通用数据类型数组创建
- oracle - Spring Boot JNDI 数据源 weblogic 12c
- selenium - 如何在现有的 REAL 浏览器中启动 selenium 或 puppeteer
- stata - 处理缺失值
- javascript - 引导弹出窗口动态更改内容
- image-processing - 如何准备图像分割数据来训练区域提议网络以自动提取对象周围的边界框?
- html - 如何将离子内容放在离子导航栏的顶部?
- html - 如何在浏览器检查的项目目录中找到 html 文件?