在VB.Net中创建电子邮件生成类。尝试阅读HTML以生成正文文本时出现错误

克利夫兰

在我的解决方案中,我有一个VB类库项目。此类库有一个包含多个html文件的文件夹,这些文件应该是电子邮件模板。该类库旨在包含在网站和控制台应用程序中,以生成客户电子邮件。

我想做的是将这些html模板读入字符串,并用来自简单数据结构的数据替换模板中的关键字。目前,我正在使用字典,将键作为关键字,并将值作为字符串来替换它。

我遇到的问题是VB似乎不想找到我的html文件。

这是我的基本电子邮件课程的代码

Imports System.Net.Mail
Imports System.IO

Public MustInherit Class Email

    Public Property TheMailMessage As MailMessage
    Protected MustOverride Property SendFrom As MailAddress
    Protected MessageTemplate As StreamReader
    Protected DataModel As Dictionary(Of String, String)
    Protected BodyContent As String

    Protected Function GenerateMessageBody() As String
        BodyContent = MessageTemplate.ReadToEnd
        For Each d In DataModel
            BodyContent.Replace(d.Key, d.Value)
        Next
        Return BodyContent
    End Function

    Protected MustOverride Sub PopulateMailMessage()

    Protected MustOverride Sub CreateDataModel()

End Class

以下是该类的代码,该类继承了Email的子代,该子代试图读取HTML文件以生成消息正文内容(我之所以不包括两者之间的调用,因为它所做的全部是设置发件人地址):

Imports System.IO
Imports System.Net.Mail

Namespace CustomerEmails

    Public Class Welcome : Inherits NoReply

        Sub New(ByVal Client As NinjaNexus.Model.Client)
            MyBase.New(Client)
            MessageTemplate = New StreamReader("Welcome.html")
            CreateDataModel(Client)
            PopulateMailMessage()
        End Sub

        Protected Overrides Sub CreateDataModel()
            Throw New NotImplementedException
        End Sub

        Protected Overrides Sub PopulateMailMessage()
            TheMailMessage.Subject = "Welcome to Company Name"
            TheMailMessage.Body = GenerateMessageBody()
        End Sub

        Protected Overloads Sub CreateDataModel(ByVal Client As NinjaNexus.Model.Client)
            DataModel = New Dictionary(Of String, String)
            DataModel.Add("{FName}", Client.Name)
            DataModel.Add("{Signature}", "Some name here")
        End Sub

    End Class
End Namespace

当我尝试运行代码以生成欢迎电子邮件时,出现如下错误:

mscorlib.dll中发生类型为'System.IO.FileNotFoundException'的异常,但未在用户代码中处理

附加信息:找不到文件'C:\ Program Files(x86)\ IIS Express \ Welcome.html'。

我已经尝试了一些诸如GetFullPath之类的方法,但是那没有用。添加文件夹名称或〜\或。\或任何类似性质的内容都无济于事。如果我使用完整的完整绝对路径,它将读取文件。但是,在运行完成的应用程序的计算机上,此路径将不会相同,因此我确实需要一个相对的解决方案。

有谁知道如何让StreamReader正确读取我的HTML文件?有没有比使用StreamReader更好的方法?我想强调一下,该库将用于多个相关项目,因此理想情况下,我想将其需要的所有资源都保留在其中,而不是在某个文件服务器上闲逛。

克利夫兰

事实证明,答案是将带有我的模板的文件的构建操作设置为“嵌入式资源”。然后从那里,我可以使用GetManifestResourceStream来获取文件的内容并执行我希望的操作。我还将HTML文件切换为TXT文件。尽管我仍然觉得可能有更好的方法可以实现我的目标,但这是可行的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用vb.net的Silverlight应用程序。在Lotus Notes中创建新电子邮件时出现问题

来自分类Dev

文本文件的内容发送到电子邮件正文vb.net

来自分类Dev

在VB中发送电子邮件时出现SSL错误

来自分类Dev

生成类 VB.NET

来自分类Dev

在VB中检查电子邮件格式

来自分类Dev

使用 Outlook VB 从电子邮件正文中获取第一行文本

来自分类Dev

在vb.net 2010中发送电子邮件时出错

来自分类Dev

在vb.net中以HTML格式的页面发送电子邮件

来自分类Dev

将图片嵌入来自vb.net的电子邮件正文中

来自分类Dev

VB.Net-无法获取电子邮件正文-Exchange Services

来自分类Dev

vb.net-从XSD创建类并生成xml

来自分类Dev

通过VB.net发送电子邮件

来自分类Dev

vb.net发送带有图片的电子邮件

来自分类Dev

发送电子邮件vb.Net停止程序

来自分类Dev

尝试在VB.net中设置范围时出现“ DBNull”错误。数据库是Excel

来自分类Dev

如何使用vb.net中的默认电子邮件客户端发送带有附件的电子邮件

来自分类Dev

如何在ASP.net vb.net中获取当前用户ID的电子邮件

来自分类Dev

在VB.net中创建VBA类

来自分类Dev

在VB中创建图形

来自分类Dev

我如何摆脱使用VB.NET发送的电子邮件输出中的'='符号

来自分类Dev

在内存vb.net中创建大列表时出现内存不足错误

来自分类Dev

VB .NET中的错误总数

来自分类Dev

VB.NET和VB之间的区别

来自分类Dev

VB从文本导入值

来自分类Dev

Visual Basic(VB.NET)示例代码,以通过VB.NET Windows应用程序发送SendGrid电子邮件

来自分类Dev

Excel GoogleGeocode VB错误

来自分类Dev

vb 2010 InvalidCastException错误

来自分类Dev

Excel GoogleGeocode VB错误

来自分类Dev

实施的属性错误VB

Related 相关文章

热门标签

归档