首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据草稿发送邮件,然后保存草稿?

如何根据草稿发送邮件,然后保存草稿?
EN

Stack Overflow用户
提问于 2022-01-22 12:54:43
回答 2查看 134关注 0票数 0

我们正在更新来自草稿文件夹的邮件,并每天发送几次。

我想打开一个选定的邮件,重新发送它,保存它,让它回到草稿,然后关闭它。

我试过在下面

代码语言:javascript
运行
复制
Sub DRAFT()

  Dim myItem As Outlook.MailItem
  Dim objInsp As Outlook.Inspector
  Dim objActionsMenu As Office.CommandBarControl
  Dim olResendMsg As Outlook.MailItem

  ' get current item & open if needed
  On Error Resume Next

  Select Case TypeName(Application.ActiveWindow)
    Case "Explorer"
   Set myItem = Application.ActiveExplorer.Selection.Item(1)
   myItem.Display
    Case "Inspector"
      Set myItem = Application.ActiveInspector.CurrentItem
    Case Else
  End Select
  On Error GoTo 0
  
  If myItem Is Nothing Then
    MsgBox "Could not use current item. Please select or open a single email.", _
       vbInformation
    GoTo exitproc
  End If
    
 ' run the resend command
    Set objInsp = myItem.GetInspector
    objInsp.CommandBars.ExecuteMso ("ResendThisMessage")
    
  ' save orig email
  myItem.Save
  
  ' close orig email
  myItem.Close
 
exitproc:
Set myItem = Nothing
Set objInsp = Nothing
Set objActionsMenu = Nothing
Set olResendMsg = Nothing

End Sub
EN

Stack Overflow用户

发布于 2022-01-22 13:52:59

您需要将一个OlInspectorClose枚举值传递给MailItem.Close方法。它表示关闭行为,即保存模式。如果在检查器中显示的项未被更改,则此参数无效。

代码语言:javascript
运行
复制
Name    Value   Description
olDiscard   1   Changes to the document are discarded.
olPromptForSave 2   User is prompted to save documents.
olSave  0   Documents are saved.

所以,您的代码应该是这样的:

代码语言:javascript
运行
复制
' close orig email
myItem.Close olSave

与以编程方式使用CommandBars.ExecuteMso方法执行带状控件不同,您可以尝试创建源项的作用域,然后发送它。

在没有特定命令的对象模型的情况下,ExecuteMso方法非常有用。在内置的buttonstoggleButtonssplitButtons控件上工作。如果失败,则返回无效的E_InvalidArg和未启用或不可见的控件的E_Fail

相反,您可以使用MailItem.Copy方法来创建另一个对象实例。

代码语言:javascript
运行
复制
Sub CopyItem() 
 
 Dim myNameSpace As Outlook.NameSpace 
 Dim myFolder As Outlook.Folder 
 Dim myNewFolder As Outlook.Folder 
 Dim myItem As Outlook.MailItem 
 Dim myCopiedItem As Outlook.MailItem 
 
 Set myNameSpace = Application.GetNamespace("MAPI")
 Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)
 Set myNewFolder = myFolder.Folders.Add("Saved Mail", olFolderDrafts)
 Set myItem = Application.CreateItem(olMailItem) 
 
 myItem.Subject = "Speeches" 
 
 Set myCopiedItem = myItem.Copy 
 
 myCopiedItem.To = "email@address.com"

 myCopiedItem.Send() 
 
End Sub
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70813024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档