Note: The other languages of the website are Google-translated. Back to English

Outlook에서 한 번에 여러 초안을 보내는 방법은 무엇입니까?

Drafts 폴더에 여러 개의 임시 메시지가있는 경우 지금은 하나씩 보내지 않고 한 번에 보내려고합니다. Outlook에서이 작업을 어떻게 빠르고 쉽게 처리 할 수 ​​있습니까?

VBA 코드를 사용하여 Outlook에서 한 번에 모든 초안 메시지 보내기


VBA 코드를 사용하여 Outlook에서 한 번에 모든 초안 메시지 보내기

다음 VBA 코드는 Drafts 폴더에서 한 번에 모든 또는 선택한 초안 이메일을 보내는 데 도움이 될 수 있습니다. 다음과 같이하십시오.

1. 누르고 ALT + F11 키를 눌러 응용 프로그램 용 Microsoft Visual Basic 창.

2. 그런 다음 끼워 넣다 > 모듈, 아래 코드를 복사하여 열린 빈 모듈에 붙여 넣으십시오. 스크린 샷을 참조하십시오.

VBA 코드 : Outlook에서 한 번에 모든 초안 이메일 보내기 :

Sub SendAllDraftEmails()
Dim xAccount As Account
Dim xDraftFld As Folder
Dim xItemCount As Integer
Dim xCount As Integer
Dim xDraftsItems As Outlook.Items
Dim xPromptStr As String
Dim xYesOrNo As Integer
Dim i As Long
Dim xCurFld As Folder
Dim xTmpFld As Folder
On Error Resume Next
xItemCount = 0
xCount = 0
Set xTmpFld = Nothing
Set xCurFld = Application.ActiveExplorer.CurrentFolder
For Each xAccount In Outlook.Application.Session.Accounts
    Set xDraftFld = xAccount.DeliveryStore.GetDefaultFolder(olFolderDrafts)
    xItemCount = xItemCount + xDraftFld.Items.Count
    If xDraftFld.EntryID = xCurFld.EntryID Then
        Set xTmpFld = xCurFld.Parent
    End If
Next xAccount
Set xDraftFld = Nothing
If xItemCount > 0 Then
   xPromptStr = "Are you sure to send out all the drafts?"
    xYesOrNo = MsgBox(xPromptStr, vbQuestion + vbYesNo, "Kutools for Outlook")
    If xYesOrNo = vbYes Then
        If Not xTmpFld Is Nothing Then
            Set Application.ActiveExplorer.CurrentFolder = xTmpFld
        End If
        VBA.DoEvents
        For Each xAccount In Outlook.Application.Session.Accounts
            Set xDraftFld = xAccount.DeliveryStore.GetDefaultFolder(olFolderDrafts)
            Set xDraftsItems = xDraftFld.Items
            For i = xDraftsItems.Count To 1 Step -1
                If xDraftsItems.Item(i).Recipients.Count <> 0 Then
                    xDraftsItems.Item(i).sEnd
                    xCount = xCount + 1
                End If
            Next
        Next xAccount
        VBA.DoEvents
        Set Application.ActiveExplorer.CurrentFolder = xCurFld
        MsgBox "Successfully sent " & xCount & " messages", vbInformation, "Kutools for Outlook"
    End If
Else
    MsgBox "No Drafts!", vbInformation + vbOKOnly, "Kutools for Outlook"
End If
End Sub

3. 그런 다음 코드를 저장하고 F5 키를 눌러이 코드를 실행하면 모든 초안을 보낼지 알려주는 프롬프트 상자가 나타납니다. 가능, 스크린 샷 참조 :

4. 그리고 얼마나 많은 초안 이메일이 발송되었는지 알려주는 대화 상자가 나타납니다. 스크린 샷을 참조하십시오.

5. 그런 다음 OK 버튼, 모든 이메일 체커 폴더가 한 번에 전송됩니다. 스크린 샷 참조 :

배송 시 요청 사항:

1. 위의 코드는 Outlook의 모든 계정에서 모든 초안 이메일을 보냅니다.

2. Drafts 폴더에서 특정 이메일을 보내려면 다음 VBA 코드를 적용하십시오.

VBA 코드 : Drafts 폴더에서 선택한 이메일을 보냅니다.

Sub SendSelectedDraftEmails()
Dim xSelection As Selection
Dim xPromptStr As String
Dim xYesOrNo As Integer
Dim i As Long
Dim xAccount As Account
Dim xCurFld As Folder
Dim xDraftsFld As Folder
Dim xTmpFld As Folder
Dim xArr() As String
Dim xCount As Integer
Dim xMail As MailItem
On Error Resume Next
xCount = 0
Set xTmpFld = Nothing
Set xCurFld = Application.ActiveExplorer.CurrentFolder
For Each xAccount In Outlook.Application.Session.Accounts
    Set xDraftsFld = xAccount.DeliveryStore.GetDefaultFolder(olFolderDrafts)
    If xDraftsFld.EntryID = xCurFld.EntryID Then
        Set xTmpFld = xCurFld.Parent
    End If
Next xAccount
If xTmpFld Is Nothing Then
    MsgBox "The current folder is not a draft folder", vbInformation, "Kutools for Outlook"
    Exit Sub
End If
Set xSelection = Outlook.Application.ActiveExplorer.Selection
If xSelection.Count > 0 Then
    xPromptStr = "Are you sure to send out the selected " & xSelection.Count & " draft item(s)?"
    xYesOrNo = MsgBox(xPromptStr, vbQuestion + vbYesNo, "Kutools for Outlook")
    If xYesOrNo = vbYes Then
        ReDim xArr(xSelection.Count - 1)
        For i = 1 To xSelection.Count
            xArr(i - 1) = xSelection.Item(i).EntryID
        Next
        Set Application.ActiveExplorer.CurrentFolder = xTmpFld
        VBA.DoEvents
        For i = 0 To UBound(xArr)
            Set xMail = Application.Session.GetItemFromID(xArr(i))
            If xMail.Recipients.Count <> 0 Then
                xMail.sEnd
                xCount = xCount + 1
            End If
        Next
        VBA.DoEvents
        Set Application.ActiveExplorer.CurrentFolder = xCurFld
        MsgBox "Successfully sent " & xCount & " messages", vbInformation, "Kutools for Outlook"
    End If
Else
    MsgBox "No items selected!", vbInformation, "Kutools for Outlook"
End If
End Sub

관련 기사:

Outlook에서 개별적으로 여러 수신자에게 이메일을 보내는 방법은 무엇입니까?

Outlook을 통해 Excel에서 개인화 된 대량 이메일을 목록으로 보내는 방법은 무엇입니까?

Outlook에서 개별적으로 여러 수신자에게 일정을 보내는 방법은 무엇입니까?

Outlook에서 모르는 여러 수신자에게 이메일을 보내는 방법은 무엇입니까?


Outlook 용 Kutools-Outlook에 100 개의 고급 기능을 제공하고 작업을 훨씬 더 쉽게 만듭니다!

  • 자동 CC / BCC 이메일을 보낼 때 규칙에 따라; 자동 전달 사용자 정의에 의한 여러 이메일; 자동 회신 교환 서버없이 더 많은 자동 기능 ...
  • BCC 경고 -모두 답장하려고 할 때 메시지 표시 메일 주소가 숨은 참조 목록에있는 경우; 첨부 파일 누락시 알림및 기타 알림 기능 ...
  • 메일 대화에서 모든 첨부 파일로 (전체) 회신; 많은 이메일에 답장 초 안에; 인사말 자동 추가 대답 할 때; 제목에 날짜 추가 ...
  • 첨부 도구 : 모든 메일의 모든 첨부 파일 관리, 자동 분리, 모두 압축, 모두 이름 바꾸기, 모두 저장 ... 빠른 보고서, 선택한 메일 수...
  • 강력한 정크 메일 관습에 의해; 중복 메일 및 연락처 제거... Outlook에서 더 스마트하고 빠르며 더 나은 작업을 수행 할 수 있습니다.
샷 kutools 전망 kutools 탭 1180x121
샷 kutools 전망 kutools 플러스 탭 1180x121
 
코멘트 (15)
아직 평가가 없습니다. 가장 먼저 평가하세요!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
훌륭하고 매력을 발휘했습니다. 감사합니다 :)
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
einfach nur perfekt. 헤르츨리헨 당크
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
위와 같이 복사했지만 F5 키를 누르면 아무 일도 일어나지 않습니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕, 캐서린
위의 코드는 내 Outlook에서 잘 작동합니다. 어떤 Outlook 버전을 사용합니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
저는 여러 개의 거래소 계정을 가지고 있습니다. 기본값이 아닌 계정 중 하나를 보낸 사람으로 지정하고 싶습니다. 이것을 코드의 어디에 삽입할까요? 감사!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
이렇게 하면 삭제된 폴더로 이메일이 전송되는 사람이 있습니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕, 빌
삭제된 foder에서 선택한 여러 이메일을 보내시겠습니까?
문제를 더 자세히 알려주세요. 감사합니다!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 skyyang, 같은 문제에 직면하고 있습니다. 나는 보통 15-20개의 이메일 초안을 작성한 다음 이 코드를 사용하여 한 번에 모두 보내지만 나중에 그 이메일 중 하나가 전송되지 않고 내 'Deleted' 폴더로 전송된다는 것을 알게 됩니다. 프롬프트에도 예를 들어 '20개의 이메일이 전송됨'에 대한 올바른 이메일 수가 표시되어 있지만 확인하면 19개만 전송되었을 것이며 하나는 삭제된 항목 폴더에 있음을 알 수 있습니다. 모든 이메일이 오류 없이 수신자에게 전송되기를 바랍니다. 왜 이런 일이 발생하는지 알려주실 수 있습니까? 도와주세요.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕, Darewin.위의 코드를 업데이트했습니다. 다시 시도하십시오. 감사합니다!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
같은 문제: 4개의 메시지를 선택하면 그 중 XNUMX개를 휴지통에 보낸 후("xDraftsItems.Item(i).Delete" 문으로 인해)
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
우리는 스크립트를 사용하여 sage 200에서 생성된 일련의 명세서 이메일에 대해 모든 초안 이메일을 한 번에 보냅니다. 보낸 항목의 이메일은 괜찮아 보이지만 고객은 중국어로 된 본문 텍스트로 수신합니다! 여기서 무슨 일이 일어날 수 있습니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
마지막 메일(i = 1)이 .Send 대신 새 MailItem에서 다시 생성되는 이유를 설명할 수 있습니까?

감사.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요, 빠른 질문에 아이디어가 있을 수 있습니다. 모든 메일을 초안 폴더에 저장하는 외부 응용 프로그램이 있습니다. 매크로를 실행하면 목록의 첫 번째 메일만 올바르게 전송되고 메일 주소에 따옴표 ' '가 추가되기 때문에 다른 모든 메일은 지연되는 문제가 있습니다. 이를 방지할 수 있는 방법이 있습니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
이 코드는 Merge Tools라는 하위 폴더의 모든 초안을 보냅니다(보내기 전에 묻습니다). 그래도 필요에 맞게 편집할 수 있다고 확신합니다. 훨씬 간단합니다. 즐기다 :)
하위 SendAllMergeToolsDrafts()

If MsgBox("Merge Tools 초안 폴더에 있는 모든 항목을 보내시겠습니까?", _
vbQuestion + vbYesNo) <> vbYes 그런 다음 Sub 종료

Dim myNamespace As Outlook.NameSpace '인라인 오류를 방지하기 위해 받은 편지함으로 보기 변경
Set myNamespace = Application.GetNamespace("MAPI") '인라인 오류를 방지하기 위해 보기를 받은 편지함으로 변경
Application.ActiveExplorer.CurrentFolder = _ 설정
myNamespace.GetDefaultFolder(olFolderInbox) '인라인 오류를 방지하기 위해 보기를 받은 편지함으로 변경

Dim fldDraft를 MAPIFolder로, msg를 Outlook.MailItem으로, intCount를 정수로
Set fldDraft = Outlook.GetNamespace("MAPI").GetDefaultFolder(olFolderDrafts).Folders("Merge Tools") '병합 도구 폴더의 모든 초안만 보냅니다.
정수 = 0
fldDraft.Items.count > 0인 동안 수행
메시지 설정 = fldDraft.Items(1)
msg.보내기
정수 개수 = 정수 개수 + 1
고리
그렇지 않은 경우(msg가 없음) 다음 설정 msg = 없음
fldDraft = 없음으로 설정
MsgBox intCount & " 보낸 메시지 ", vbInformation + vbOKOnly

최종 하위
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕 얘들아. 공유할 생각입니다. 모든 초안을 보내는 코드는 다음과 같습니다.
Sub SendAllDrafts() '작성자: jamesmalcolmwood@gmail.com

If MsgBox("초안 폴더에 있는 모든 항목을 보내시겠습니까?", _
vbQuestion + vbYesNo) <> vbYes 그런 다음 Sub 종료

Dim myNamespace As Outlook.NameSpace '인라인 오류를 방지하기 위해 받은 편지함으로 보기 변경
Set myNamespace = Application.GetNamespace("MAPI") '인라인 오류를 방지하기 위해 보기를 받은 편지함으로 변경
Application.ActiveExplorer.CurrentFolder = _ 설정
myNamespace.GetDefaultFolder(olFolderInbox) '인라인 오류를 방지하기 위해 보기를 받은 편지함으로 변경

Dim fldDraft를 MAPIFolder로, msg를 Outlook.MailItem으로, intCount를 정수로
Set fldDraft = Outlook.GetNamespace("MAPI").GetDefaultFolder(olFolderDrafts) '기본 초안 폴더의 모든 초안을 보냅니다. 하위 폴더의 경우 .Folders("폴더 이름") 추가
정수 = 0
fldDraft.Items.count > 0인 동안 수행
메시지 설정 = fldDraft.Items(1)
msg.보내기
정수 개수 = 정수 개수 + 1
고리
그렇지 않은 경우(msg가 없음) 다음 설정 msg = 없음
fldDraft = 없음으로 설정
MsgBox intCount & " 보낸 메시지 ", vbInformation + vbOKOnly

최종 하위
아직 코멘트가 없습니다
여러분의 의견을 남겨
게스트로 게시
×
이 게시물 평가 :
0   등장 인물
추천 위치

Follow Us

저작권 © 2009 - WWW.extendoffice.com. | 판권 소유. 에 의해 구동 ExtendOffice. | | 사이트 맵
Microsoft 및 Office 로고는 미국 및 / 또는 기타 국가에서 Microsoft Corporation의 상표 또는 등록 상표입니다.
Sectigo SSL로 보호