Vb.net 如何从Outlook 2003发送多份草稿

Vb.net 如何从Outlook 2003发送多份草稿,vb.net,outlook,Vb.net,Outlook,Outlook不允许我同时发送多份草稿。是否有一种在outlook中一次发送多份草稿的简单方法?而不必单独打开每一个 从我读到的,看到的和尝试过的;这在outlook本身中是不可能的,因此需要一个编程解决方案,可能需要一些VB脚本。是的,您可以编写宏或外接程序来实现这一点。是的,您可以编写宏或外接程序来实现这一点。好的,我发现了一个VB脚本: `Public Sub SendDrafts() Dim lDraftItem As Long Dim myOutlook As Outlook.App

Outlook不允许我同时发送多份草稿。是否有一种在outlook中一次发送多份草稿的简单方法?而不必单独打开每一个


从我读到的,看到的和尝试过的;这在outlook本身中是不可能的,因此需要一个编程解决方案,可能需要一些VB脚本。是的,您可以编写宏或外接程序来实现这一点。

是的,您可以编写宏或外接程序来实现这一点。

好的,我发现了一个VB脚本:

`Public Sub SendDrafts()

Dim lDraftItem As Long
Dim myOutlook As Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim myFolders As Outlook.Folders
Dim myDraftsFolder As Outlook.MAPIFolder

'Send all items in the "Drafts" folder that have a "To" address filled
'in.

'Setup Outlook

Set myOutlook = Outlook.Application
Set myNameSpace = myOutlook.GetNamespace("MAPI")
Set myFolders = myNameSpace.Folders


'Set Draft Folder.  This will need modification based on where it's
'being run.

Set myDraftsFolder = myFolders("$MAILBOX").Folders("$DRAFTS")

'Loop through all Draft Items

For lDraftItem = myDraftsFolder.Items.Count To 1 Step -1

'Check for "To" address and only send if "To" is filled in.

If Len(Trim(myDraftsFolder.Items.Item(lDraftItem).To)) > 0 Then

'Send Item

myDraftsFolder.Items.Item(lDraftItem).Send

End If
Next lDraftItem

'Clean-up

Set myDraftsFolder = Nothing
Set myNameSpace = Nothing
Set myOutlook = Nothing

End Sub
只需将$MAILBOX替换为邮箱名称,将$DRAFTS替换为草稿文件夹的名称即可。
这已经过个人测试,似乎工作正常。

好的,我发现一点VB可以做到这一点:

`Public Sub SendDrafts()

Dim lDraftItem As Long
Dim myOutlook As Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim myFolders As Outlook.Folders
Dim myDraftsFolder As Outlook.MAPIFolder

'Send all items in the "Drafts" folder that have a "To" address filled
'in.

'Setup Outlook

Set myOutlook = Outlook.Application
Set myNameSpace = myOutlook.GetNamespace("MAPI")
Set myFolders = myNameSpace.Folders


'Set Draft Folder.  This will need modification based on where it's
'being run.

Set myDraftsFolder = myFolders("$MAILBOX").Folders("$DRAFTS")

'Loop through all Draft Items

For lDraftItem = myDraftsFolder.Items.Count To 1 Step -1

'Check for "To" address and only send if "To" is filled in.

If Len(Trim(myDraftsFolder.Items.Item(lDraftItem).To)) > 0 Then

'Send Item

myDraftsFolder.Items.Item(lDraftItem).Send

End If
Next lDraftItem

'Clean-up

Set myDraftsFolder = Nothing
Set myNameSpace = Nothing
Set myOutlook = Nothing

End Sub
只需将$MAILBOX替换为邮箱名称,将$DRAFTS替换为草稿文件夹的名称即可。
这已经过个人测试,似乎效果不错。

与作者的答案没有太大区别,但仍然:

Sub SendDrafts()
  Dim ns As NameSpace
  Dim drafts As MAPIFolder
  Dim Item As MailItem

  Set ns = Application.GetNamespace("MAPI")
  Set drafts = ns.GetDefaultFolder(olFolderDrafts) ' 16
  For Each Item In drafts.Items
    'Item.Send
  Next
End Sub

请小心,因为它确实会在您的默认草稿文件夹中发送所有电子邮件。取消对发送行的注释后<代码>调暗行,以便在Outlook宏编辑器中自动完成。

与作者的答案没有太大区别,但仍然:

Sub SendDrafts()
  Dim ns As NameSpace
  Dim drafts As MAPIFolder
  Dim Item As MailItem

  Set ns = Application.GetNamespace("MAPI")
  Set drafts = ns.GetDefaultFolder(olFolderDrafts) ' 16
  For Each Item In drafts.Items
    'Item.Send
  Next
End Sub

请小心,因为它确实会在您的默认草稿文件夹中发送所有电子邮件。取消对发送行的注释后<代码>调暗行,以便在Outlook宏编辑器中自动完成。

一个有用的版本,我刚刚在Outlook 2000中测试过:

将要发送的电子邮件拖到发件箱。它们不会自动发送,但使用之前发布的此版本会发送它们:

Sub SendOutbox()
  Dim ns As NameSpace
  Dim outbox As MAPIFolder
  Dim Item As MailItem

  Set ns = Application.GetNamespace("MAPI")
  Set outbox = ns.GetDefaultFolder(olFolderOutbox) ' 16
  For Each Item In outbox.Items
    Item.Send
  Next
End Sub

这样,您就可以进行选择。

一个有用的版本,我刚刚在Outlook 2000中测试过:

将要发送的电子邮件拖到发件箱。它们不会自动发送,但使用之前发布的此版本会发送它们:

Sub SendOutbox()
  Dim ns As NameSpace
  Dim outbox As MAPIFolder
  Dim Item As MailItem

  Set ns = Application.GetNamespace("MAPI")
  Set outbox = ns.GetDefaultFolder(olFolderOutbox) ' 16
  For Each Item In outbox.Items
    Item.Send
  Next
End Sub

这样,您就可以有选择性。

+1关闭,与编程无关。我想说是的,因为通过outlook本身不可能做到这一点。编程解决方案是我能看到问题得到解决的唯一方法。@spence-然后您需要在问题主体中指定您正在寻找问题的编程解决方案。现在听起来你只是想知道是否有人能提供Outlook的使用方法。很公平,我想让它变得模棱两可,以防有人对这个问题有一个简单的解决方案+1关闭,与编程无关。我想说是的,因为通过Outlook本身是不可能做到这一点的。编程解决方案是我能看到问题得到解决的唯一方法。@spence-然后您需要在问题主体中指定您正在寻找问题的编程解决方案。现在听起来你只是想知道是否有人能提供Outlook的使用方法。公平地说,我想让它变得模棱两可,以防有人对这个问题有一个微不足道的解决方案