从 ASP.NET 使用 Outlook 2016 发送电子邮件
Send email with Outlook 2016 from ASP.NET
我需要发送电子邮件,但在发送前先预览它们。我正在使用 Visual Studio 2019,我的 Outlook 版本是 Windows 10 开发机器上的 2016 32 位。
我收到一个错误
FileNotFoundException: Could not load file or assembly 'office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'. The system cannot find the file specified.
但是我通过浏览器安装了 COM 库 C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Tools.Excel.v9.0.0.0.0
我使用 Outlook 版本 16,据我所知,没有版本 16 的 COM 库。
还有其他方法可以使它正常工作吗?
private void SendEmail()
{
try
{
Outlook.MailItem mailItem = (Outlook.MailItem)this.CreateItem(Outlook.OlItemType.olMailItem);
mailItem.Subject = "This is the subject";
mailItem.To = "someone@example.com";
mailItem.Body = "This is the message.";
mailItem.Importance = Outlook.OlImportance.olImportanceLow;
mailItem.Display(false);
}
catch (Exception eX)
{
throw new Exception("cDocument: Error occurred trying to create an Outlook e-mail"
+ Environment.NewLine + eX.Message);
}
}
这是我用来 运行 本地计算机上的 Outlook 的 VB 代码。
Public Sub SendEmail(ByVal sTo As String, ByVal sSubject As String, ByVal sBody As String)
Try
If Not Process.GetProcessesByName("OUTLOOK").Any() Then
System.Diagnostics.Process.Start("Outlook.exe")
End If
'Dim oApp As Outlook._Application
'oApp = New Outlook.Application()
Dim oApp As Object
' Create a new MailItem.
'Dim oMsg As Outlook._MailItem
Dim oMsg As Object
Const olMailItem As Long = 0 'à commenter si marche pas
oApp = CreateObject("Outlook.Application") 'à commenter si marche pas
'oMsg = oApp.CreateItem(Outlook.OlItemType.olMailItem)
oMsg = oApp.CreateItem(olMailItem)
oMsg.Subject = sSubject
oMsg.Body = sBody
' TODO: Replace with a valid e-mail address.
oMsg.To = sTo
' Send
oMsg.Send()
' Clean up
oMsg = Nothing
oApp = Nothing
Catch ex As Exception
Debug.Print(ex.ToString)
End Try
End Sub
这真的是 asp.net 和基于网络的应用程序吗????您确实意识到 windows 桌面软件和基于 Web 的软件之间的巨大区别,对吧?您不能在客户端 Web 浏览器中使用或显示桌面程序中的任何内容。我必须假设您在这里只使用桌面软件,而不是基于 Web 的软件?我的意思是,即使您可以在代码中使用 Outlook,它也会在 Web 服务器上 运行,并且用户不会在那台 Web 服务器计算机上看到 outlook 运行ning,他们会吗?
而且您当然不能在最终用户的客户端计算机上使用和启动 Outlook。我的意思是,如果你到我的网站上看一张猫的照片,那真的很酷,我现在可以使用你的 outlook 副本,或者 Excel。嘿,为什么不启动您的银行应用程序并窃取所有这些信息呢?或者在本地硬盘上搜索 Excel sheet 密码?如果您考虑一下,如果那是可能的,那么零个人将永远冒险使用互联网,对吧?
因此,您使用或弄乱我的计算机的能力为零。您甚至无法在“我的电脑”上搜索或查找文件。这是我的电脑,如果只是去某个网站就可以让你以任何方式弄乱我的电脑,那将是世界上最大的安全漏洞。
您当然可以设置一个漂亮的大文本框,甚至可以将发送框作为 Web 表单或网页。但发送该电子邮件将基于您自己的电子邮件设置和您在网站上设置的帐户。我的意思是,您认为您的网站将使用我的电子邮件系统以及电子邮件密码和信息?真的吗?那么我现在可以通过我的网站在您的计算机上使用您的软件了吗?你真的必须停下来想想你问的是什么?如前所述,如果您考虑这一点,那么您会很好地意识到这种对网络软件的方法是不可能的,但是也应该非常明显的是,使用网络软件进行此类操作是不可能的,因为如果是的话,那么没有人会冒险甚至考虑使用互联网做任何事情。
即使您使用上传文件控件,您也永远无法设置要选择上传的文件——只有最终用户才能这样做。您的服务器端软件无法接触、查看或了解有关客户端计算机的任何信息。此外,该客户端计算机可能是 iPad、智能手机或您的 Apple Mac 计算机 - 您不知道,不可能有任何想法,这无关紧要。
所以,客户端软件和文件是 100% 放手的。最终用户的桌面上有一个浏览器。你只能发送一些 HTML 给那个浏览器然后显示。
并尝试使用服务器端软件?好吧,如果您确实设法做到了这一点,那么在服务器上您会看到 outlook 在计算机上弹出。但是最终用户呢?他们不会看到任何东西 - 因为您无法看到和使用软件。
如果你在亚马逊上买东西,你的网络浏览器会让你在他们的网络服务器上乱搞软件,那就太酷了??
您使用网络系统所能做的就是创建一个网页并将其传递给最终用户,然后他们的浏览器将呈现并显示标记。您在该 Web 服务器(只是一台计算机)上 运行 的内容由您决定,但您只能将一些 HTML 输出到用户浏览器 - 仅此而已。任何 windows 在网络服务器上启动的程序只有在您坐在网络服务器上的控制台前才能看到。
那么,我要为模板做什么?我会扔出一个文本框或 Web 表单,然后将一些模板保存到数据库中。
如果你真的很聪明,你会采用 ckedit,或者一个允许你输入标记的屏幕。所以,现在您可以放入任何图形或字体或其他内容。
这样说:
所以,我在上面所做的是将我的电子邮件模板“保存”到数据库中。然后我有一个简单的例程,search/replace [Email] 等字段与数据库中的数据。那么字体,图形等?我可以编辑、构建和剪切 + 粘贴图形。
但是,我当然不能真正将 outlook 用于此目的。 “发送”电子邮件地址必须是网站地址 - 不能是任何旧的发送电子邮件地址。
我需要发送电子邮件,但在发送前先预览它们。我正在使用 Visual Studio 2019,我的 Outlook 版本是 Windows 10 开发机器上的 2016 32 位。
我收到一个错误
FileNotFoundException: Could not load file or assembly 'office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'. The system cannot find the file specified.
但是我通过浏览器安装了 COM 库 C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Tools.Excel.v9.0.0.0.0
我使用 Outlook 版本 16,据我所知,没有版本 16 的 COM 库。
还有其他方法可以使它正常工作吗?
private void SendEmail()
{
try
{
Outlook.MailItem mailItem = (Outlook.MailItem)this.CreateItem(Outlook.OlItemType.olMailItem);
mailItem.Subject = "This is the subject";
mailItem.To = "someone@example.com";
mailItem.Body = "This is the message.";
mailItem.Importance = Outlook.OlImportance.olImportanceLow;
mailItem.Display(false);
}
catch (Exception eX)
{
throw new Exception("cDocument: Error occurred trying to create an Outlook e-mail"
+ Environment.NewLine + eX.Message);
}
}
这是我用来 运行 本地计算机上的 Outlook 的 VB 代码。
Public Sub SendEmail(ByVal sTo As String, ByVal sSubject As String, ByVal sBody As String)
Try
If Not Process.GetProcessesByName("OUTLOOK").Any() Then
System.Diagnostics.Process.Start("Outlook.exe")
End If
'Dim oApp As Outlook._Application
'oApp = New Outlook.Application()
Dim oApp As Object
' Create a new MailItem.
'Dim oMsg As Outlook._MailItem
Dim oMsg As Object
Const olMailItem As Long = 0 'à commenter si marche pas
oApp = CreateObject("Outlook.Application") 'à commenter si marche pas
'oMsg = oApp.CreateItem(Outlook.OlItemType.olMailItem)
oMsg = oApp.CreateItem(olMailItem)
oMsg.Subject = sSubject
oMsg.Body = sBody
' TODO: Replace with a valid e-mail address.
oMsg.To = sTo
' Send
oMsg.Send()
' Clean up
oMsg = Nothing
oApp = Nothing
Catch ex As Exception
Debug.Print(ex.ToString)
End Try
End Sub
这真的是 asp.net 和基于网络的应用程序吗????您确实意识到 windows 桌面软件和基于 Web 的软件之间的巨大区别,对吧?您不能在客户端 Web 浏览器中使用或显示桌面程序中的任何内容。我必须假设您在这里只使用桌面软件,而不是基于 Web 的软件?我的意思是,即使您可以在代码中使用 Outlook,它也会在 Web 服务器上 运行,并且用户不会在那台 Web 服务器计算机上看到 outlook 运行ning,他们会吗?
而且您当然不能在最终用户的客户端计算机上使用和启动 Outlook。我的意思是,如果你到我的网站上看一张猫的照片,那真的很酷,我现在可以使用你的 outlook 副本,或者 Excel。嘿,为什么不启动您的银行应用程序并窃取所有这些信息呢?或者在本地硬盘上搜索 Excel sheet 密码?如果您考虑一下,如果那是可能的,那么零个人将永远冒险使用互联网,对吧?
因此,您使用或弄乱我的计算机的能力为零。您甚至无法在“我的电脑”上搜索或查找文件。这是我的电脑,如果只是去某个网站就可以让你以任何方式弄乱我的电脑,那将是世界上最大的安全漏洞。
您当然可以设置一个漂亮的大文本框,甚至可以将发送框作为 Web 表单或网页。但发送该电子邮件将基于您自己的电子邮件设置和您在网站上设置的帐户。我的意思是,您认为您的网站将使用我的电子邮件系统以及电子邮件密码和信息?真的吗?那么我现在可以通过我的网站在您的计算机上使用您的软件了吗?你真的必须停下来想想你问的是什么?如前所述,如果您考虑这一点,那么您会很好地意识到这种对网络软件的方法是不可能的,但是也应该非常明显的是,使用网络软件进行此类操作是不可能的,因为如果是的话,那么没有人会冒险甚至考虑使用互联网做任何事情。
即使您使用上传文件控件,您也永远无法设置要选择上传的文件——只有最终用户才能这样做。您的服务器端软件无法接触、查看或了解有关客户端计算机的任何信息。此外,该客户端计算机可能是 iPad、智能手机或您的 Apple Mac 计算机 - 您不知道,不可能有任何想法,这无关紧要。
所以,客户端软件和文件是 100% 放手的。最终用户的桌面上有一个浏览器。你只能发送一些 HTML 给那个浏览器然后显示。
并尝试使用服务器端软件?好吧,如果您确实设法做到了这一点,那么在服务器上您会看到 outlook 在计算机上弹出。但是最终用户呢?他们不会看到任何东西 - 因为您无法看到和使用软件。
如果你在亚马逊上买东西,你的网络浏览器会让你在他们的网络服务器上乱搞软件,那就太酷了??
您使用网络系统所能做的就是创建一个网页并将其传递给最终用户,然后他们的浏览器将呈现并显示标记。您在该 Web 服务器(只是一台计算机)上 运行 的内容由您决定,但您只能将一些 HTML 输出到用户浏览器 - 仅此而已。任何 windows 在网络服务器上启动的程序只有在您坐在网络服务器上的控制台前才能看到。
那么,我要为模板做什么?我会扔出一个文本框或 Web 表单,然后将一些模板保存到数据库中。
如果你真的很聪明,你会采用 ckedit,或者一个允许你输入标记的屏幕。所以,现在您可以放入任何图形或字体或其他内容。
这样说:
所以,我在上面所做的是将我的电子邮件模板“保存”到数据库中。然后我有一个简单的例程,search/replace [Email] 等字段与数据库中的数据。那么字体,图形等?我可以编辑、构建和剪切 + 粘贴图形。
但是,我当然不能真正将 outlook 用于此目的。 “发送”电子邮件地址必须是网站地址 - 不能是任何旧的发送电子邮件地址。