如何通过Golang或C#以外的其他语言将EWS GET项目正文转换为PST文件 [英] how can i transfer ews get item body to pst file via golang or other language but c#
本文介绍了如何通过Golang或C#以外的其他语言将EWS GET项目正文转换为PST文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
现在,我正在尝试导出电子邮件数据。导出的数据将导入Outlook进行本地检查,但不包括服务器。 我已经阅读了文档enter link description here。 我可以使用Golang或cmd工具将EWS数据(EXPORT-ITEM/GET-ITEM)传输到PST文件吗? 谢谢!
推荐答案
我已成功。方法LogonPstStore参数加密应为0,以便Mac Outlook可以导入它。 Golang代码:
数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">func main() {
ole.CoInitialize(0)
session, err := oleutil.CreateObject("Redemption.RDOSession")
if err != nil {
fmt.Println(err)
return
}
s, err := session.QueryInterface(ole.IID_IDispatch)
if err != nil {
fmt.Println(err)
return
}
// create a pst file
p := `E:go_projectsrcgithub.comoutlook-ical-export
edemption 22.pst`
store, err := oleutil.CallMethod(s, "LogonPstStore", p, 1, "", "", 0)
if err != nil {
fmt.Println(store, err)
return
}
// get a folder object
inbox, err := s.CallMethod("GetDefaultFolder", 6)
if err != nil {
fmt.Println(inbox, err)
return
}
stores := oleutil.MustGetProperty(s, "Stores").ToIDispatch()
defaultStore := oleutil.MustGetProperty(stores, "DefaultStore").ToIDispatch()
IPMRootFolder := oleutil.MustGetProperty(defaultStore, "IPMRootFolder").ToIDispatch()
IPMFolders := oleutil.MustGetProperty(IPMRootFolder, "Folders").ToIDispatch()
newFolder := oleutil.MustCallMethod(IPMFolders, "Add", "test22").ToIDispatch()
newFolderItems := oleutil.MustGetProperty(newFolder, "Items").ToIDispatch()
RDOMail, err := newFolderItems.CallMethod("Add", "IPM.Note")
if err != nil{
fmt.Println(RDOMail, err)
return
}
data := "base64"
ftsDataPath:= `E:go_projectsrcgithub.comoutlook-ical-export
edemption est22.txt`
d, err := base64.StdEncoding.DecodeString(data)
err = ioutil.WriteFile(ftsDataPath, d, 0644)
if err != nil {
panic(err)
}
_, err = RDOMail.ToIDispatch().CallMethod("Import", ftsDataPath, 1034)
if err != nil{
panic(err)
}
_, err = RDOMail.ToIDispatch().CallMethod("Save")
if err != nil{
panic(err)
}
_, err = defaultStore.CallMethod("Remove")
if err != nil{
panic(err)
}
v, err := s.GetProperty("FastShutdownSupported")
if err != nil{
fmt.Println(err)
}
if v.Value() != nil && v.Value().(bool){
_, err = s.CallMethod("DoFastShutdown")
if err != nil{
fmt.Println(err)
}
}else {
_, err = s.CallMethod("Logoff")
if err != nil{
fmt.Println(err)
}
}
return
}
这篇关于如何通过Golang或C#以外的其他语言将EWS GET项目正文转换为PST文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文