Outlook 互操作 MailItem 与 F#
Outlook interop MailItem with F#
我正在将 outlook 电子邮件的 C# 转换为 F#。如果发生异常给我发邮件,这个函数将在 try...with 块中调用。我通常使用仅在生产环境中工作的 SMTP 邮件服务。我必须在 Dev.
中使用 Outlook
open System.Net.Mail
open System.Runtime.InteropServices
open System.Reflection
open System.Collections
open System.Threading
open Microsoft.Office.Interop
open Microsoft.Office.Interop.Outlook
let sendEmail2 (sMessage:string) =
let subject = "Load Failed at " + DateTime.Now.ToString() + "."
let body = sMessage
let app = new Outlook.ApplicationClass
let mailItem = new app.CreateItem(OlItemType.olMailItem)
//let mailItem = app.CreateItem(OlItemType.olMailItem)
mailItem.Subject = subject
mailItem.Body = body
mailItem.To = "user@mycompany.com"
mailItem.Send()
问题是创建 MailItem。原始 C# 代码是这样做的
Outlook.Application app = new Outlook.Application();
Outlook.MailItem mailItem = app.CreateItem(Outlook.OlItemType.olMailItem);
我尝试使用等号右侧的 C# 代码,完全引用互操作程序集等。我什至查看了 MSDN Word 和 Excel 中的示例来引用 ApplicationClass。我什至想过使用 MailItemClass,但它是受保护的。
它总是在 mailItem 行出现错误:
Incomplete structured construct at or before this point in expression
错误消息表明在报告错误的位置附近存在语法错误。因此,就此而言,第一个问题是您在构造 Outlook.ApplicationClass
的实例时缺少参数。应该是:
let app = new Outlook.ApplicationClass()
正如评论中已经提到的,还有其他问题 - 赋值应该使用 <-
编写,而 app.CreateItem
是一个方法调用,所以你不需要 new
:
let mailItem = app.CreateItem(OlItemType.olMailItem)
mailItem.Subject <- subject
mailItem.Body <- body
mailItem.To <- "user@mycompany.com"
附带说明一下,这可能不是您可以从使用 F# 中获得很多好处的领域,因此如果这是为了工作,最好将代码保留在 C# 中并使用 F#对于一些比 Office 互操作更多的功能问题。但是您当然也可以在 F# 中执行此操作。
我正在将 outlook 电子邮件的 C# 转换为 F#。如果发生异常给我发邮件,这个函数将在 try...with 块中调用。我通常使用仅在生产环境中工作的 SMTP 邮件服务。我必须在 Dev.
中使用 Outlookopen System.Net.Mail
open System.Runtime.InteropServices
open System.Reflection
open System.Collections
open System.Threading
open Microsoft.Office.Interop
open Microsoft.Office.Interop.Outlook
let sendEmail2 (sMessage:string) =
let subject = "Load Failed at " + DateTime.Now.ToString() + "."
let body = sMessage
let app = new Outlook.ApplicationClass
let mailItem = new app.CreateItem(OlItemType.olMailItem)
//let mailItem = app.CreateItem(OlItemType.olMailItem)
mailItem.Subject = subject
mailItem.Body = body
mailItem.To = "user@mycompany.com"
mailItem.Send()
问题是创建 MailItem。原始 C# 代码是这样做的
Outlook.Application app = new Outlook.Application();
Outlook.MailItem mailItem = app.CreateItem(Outlook.OlItemType.olMailItem);
我尝试使用等号右侧的 C# 代码,完全引用互操作程序集等。我什至查看了 MSDN Word 和 Excel 中的示例来引用 ApplicationClass。我什至想过使用 MailItemClass,但它是受保护的。
它总是在 mailItem 行出现错误:
Incomplete structured construct at or before this point in expression
错误消息表明在报告错误的位置附近存在语法错误。因此,就此而言,第一个问题是您在构造 Outlook.ApplicationClass
的实例时缺少参数。应该是:
let app = new Outlook.ApplicationClass()
正如评论中已经提到的,还有其他问题 - 赋值应该使用 <-
编写,而 app.CreateItem
是一个方法调用,所以你不需要 new
:
let mailItem = app.CreateItem(OlItemType.olMailItem)
mailItem.Subject <- subject
mailItem.Body <- body
mailItem.To <- "user@mycompany.com"
附带说明一下,这可能不是您可以从使用 F# 中获得很多好处的领域,因此如果这是为了工作,最好将代码保留在 C# 中并使用 F#对于一些比 Office 互操作更多的功能问题。但是您当然也可以在 F# 中执行此操作。