如何从 Excel 加载项发送电子邮件 (js)
How to send an email from an Excel Add-in (js)
我正在尝试将我广泛使用的 VBA 宏转换为 JS/HTML。它获取当前选定的范围,检查内容是否看起来像电子邮件地址,然后向这些人发送电子邮件。
我的框架可以正常工作,但无法找到如何从我的 Excel 插件发送电子邮件。我似乎无法从 Excel 主机访问 Outlook api (office.mailbox)。
使用 mailto 可行,但有大小限制,这还不够,因为我指定的是长正文,可能还有数百个收件人。
window.location.href = "mailto:user@example.com
在 VBA 中,宏如下所示:
Sub EmailSelected()
Dim OutlookApp As Object
Dim Mess As Object, Recip As String
Dim selRange As Range
' If there is only one cell selected, don't call SpecialCells, it messes up
If selection.Count = 1 Then
Set selRange = selection
Else
Set selRange = selection.SpecialCells(xlCellTypeVisible)
End If
' If the first cell contains an email address, send as email.
If InStr(selRange.Item(1).Value, "@") > 0 Then
For Each c In selRange.Cells
Recip = Recip & c.Value & ";"
Next
Set OutlookApp = CreateObject("Outlook.Application")
Set Mess = OutlookApp.CreateItem(olMailItem)
If selRange.Count = 1 Then
Mess.To = Recip
Else
Mess.BCC = Recip
End If
Mess.Display
Else
' google the cell contents
For Each c In selRange.Cells
Recip = Recip & c.Value & " "
Next
ActiveWorkbook.FollowHyperlink ("http://www.google.ca/search?q=" & Recip)
End If
End Sub
另一种选择是从我的 excel 加载项调用宏(次优但可以工作)。但是我也找不到办法做到这一点。有什么想法吗?
Mailto 是理想选择,但如果数据太多,则可以通过 Microsoft Graph 使用 Outlook REST API。以下是有关发送邮件的 API 的文档:https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/message_send。这里的优势是您可以更好地控制整个过程,包括实际的发送操作(而不仅仅是创建新消息)。主要缺点是使用这种方法需要编写更多代码。
我正在尝试将我广泛使用的 VBA 宏转换为 JS/HTML。它获取当前选定的范围,检查内容是否看起来像电子邮件地址,然后向这些人发送电子邮件。
我的框架可以正常工作,但无法找到如何从我的 Excel 插件发送电子邮件。我似乎无法从 Excel 主机访问 Outlook api (office.mailbox)。
使用 mailto 可行,但有大小限制,这还不够,因为我指定的是长正文,可能还有数百个收件人。
window.location.href = "mailto:user@example.com
在 VBA 中,宏如下所示:
Sub EmailSelected()
Dim OutlookApp As Object
Dim Mess As Object, Recip As String
Dim selRange As Range
' If there is only one cell selected, don't call SpecialCells, it messes up
If selection.Count = 1 Then
Set selRange = selection
Else
Set selRange = selection.SpecialCells(xlCellTypeVisible)
End If
' If the first cell contains an email address, send as email.
If InStr(selRange.Item(1).Value, "@") > 0 Then
For Each c In selRange.Cells
Recip = Recip & c.Value & ";"
Next
Set OutlookApp = CreateObject("Outlook.Application")
Set Mess = OutlookApp.CreateItem(olMailItem)
If selRange.Count = 1 Then
Mess.To = Recip
Else
Mess.BCC = Recip
End If
Mess.Display
Else
' google the cell contents
For Each c In selRange.Cells
Recip = Recip & c.Value & " "
Next
ActiveWorkbook.FollowHyperlink ("http://www.google.ca/search?q=" & Recip)
End If
End Sub
另一种选择是从我的 excel 加载项调用宏(次优但可以工作)。但是我也找不到办法做到这一点。有什么想法吗?
Mailto 是理想选择,但如果数据太多,则可以通过 Microsoft Graph 使用 Outlook REST API。以下是有关发送邮件的 API 的文档:https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/message_send。这里的优势是您可以更好地控制整个过程,包括实际的发送操作(而不仅仅是创建新消息)。主要缺点是使用这种方法需要编写更多代码。