많은 사람들에게 대량 이메일을 보내야 할 때는 반복 작업을 빠르게 처리할 수 있는 자동화 프로세스가 필수입니다. 이메일 주소 목록이 담긴 엑셀 파일을 만드는 것이 대량 이메일을 발송하는 가장 일반적인 방법입니다. 이번 글에서는 엑셀 목록을 활용해 다수의 수신자에게 자동으로 이메일을 보내는 두 가지 방법을 소개합니다.
엑셀 목록으로 이메일을 보내는 2가지 실용적인 방법
아래 이미지에는 이름, 이메일 주소, 등록 번호가 포함된 데이터 세트가 준비되어 있습니다. 이 엑셀 목록에서 각 개인에게 이메일을 보내야 하는 상황이라고 가정하겠습니다. 이를 위해 첫 번째 방법으로 Microsoft Word의 메일 병합(Mail Merge) 기능을 사용하고, 두 번째 방법으로 VBA 코드를 활용해 기존 목록에서 원하는 수신자에게 이메일을 발송하는 방법을 알아봅니다.

1. 메일 병합 기능으로 엑셀 목록에서 여러 이메일 보내기
⇒ 1단계: 새 Word 문서 열기
- 빈 Word 문서를 엽니다.
- 메일(Mailings) 탭을 클릭합니다.
- 수신자 선택(Select Recipients) 옵션에서 기존 목록 사용(Use an Existing List)을 선택합니다.

⇒ 2단계: 엑셀 목록을 Word 문서에 연결하기
- 목록을 만들어 둔 엑셀 파일을 선택하고 열기(Open)를 클릭합니다.

- 목록이 작성된 시트를 선택합니다.
- 그다음 확인(OK)을 클릭합니다.

⇒ 3단계: 필드 삽입하기
- 메일 탭에서 병합 필드 삽입(Insert Merge Field)을 클릭해 원하는 필드를 문서에 넣습니다.
- 먼저 이름(Name) 필드를 클릭하여 일반 메일 본문 중 원하는 위치에 삽입합니다.

- 아래 이미지처럼 이름 필드를 추가하면 각 수신자의 이름이 변수 형태로 표시됩니다.

- 같은 방식으로 등록 번호(Reg) 필드도 본문에서 원하는 위치에 배치합니다.

- 완료되면 아래 이미지와 같이 표시됩니다.

⇒ 4단계: 미리 보기 결과 확인하기
- 미리 보기 결과(Preview Results)를 클릭하면 이메일 발송 전 최종 화면을 확인할 수 있습니다.
- 아래 스크린샷은 샘플 이메일의 모습입니다.

⇒ 5단계: 이메일 병합 및 발송하기
- 이메일을 병합하려면 마침 및 병합(Finish & Merge) 옵션을 클릭합니다.
- 전자 메일 메시지 보내기(Send Email Messages)를 선택하면 전자 메일로 병합 창이 열립니다.

- 받는 사람(To) 상자에서 이메일(Email) 옵션을 선택합니다.
- 제목(Subject line) 상자에 원하는 제목을 입력합니다.
- 메일 형식은 기본적으로 HTML로 설정되어 있으므로 변경할 필요가 없습니다.
- 레코드 보내기(Send Records) 옵션에서 모두(All)를 클릭합니다.
- 마지막으로 확인을 클릭하면 여러 수신자에게 동시에 이메일이 발송됩니다.

- 모든 이메일은 연결된 Outlook을 통해 발송됩니다. Outlook의 보낸 편지함을 확인하여 정상적으로 전송되었는지 확인하세요.

- 보낸 이메일을 열어 보면 각 필드가 해당 개인의 정보로 채워져 있는 것을 확인할 수 있습니다.

함께 읽으면 좋은 글: 엑셀에서 조건 충족 시 자동으로 이메일 보내는 방법
관련 추천 글
- 편집 가능한 엑셀 스프레드시트를 이메일로 보내는 방법 (3가지 빠른 방법)
- [해결됨]: 엑셀에서 통합 문서 공유가 표시되지 않을 때 (간단한 해결 단계)
- VBA를 활용해 엑셀 워크시트에서 자동 알림 이메일 보내기
- 공유된 엑셀 파일에서 접속자 확인하는 방법 (간단한 단계)
- 엑셀에서 통합 문서 공유 기능 활성화하는 방법
2. VBA 코드를 실행하여 지정한 범위에서 이메일 보내기
VBA를 활용하면 엑셀 목록에서 원하는 셀 범위를 직접 선택해 이메일을 발송하는 프로그램을 만들 수 있습니다. 아래 단계를 따라 해 보세요.
⇒ 1단계: 모듈 만들기
- Alt + F11 키를 눌러 VBA 매크로 편집기를 엽니다.
- 삽입(Insert) 탭을 클릭합니다.
- 모듈(Module) 옵션을 선택하여 새 모듈을 생성합니다.

⇒ 2단계: VBA 코드 붙여넣기
- 새 모듈에 아래 VBA 코드를 붙여넣습니다.
#If VBA7 And Win64 Then
'Ptr is used to change for operating 32 bit to 64 bit
Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal wnd As LongPtr, ByVal lpDirect As String, _
ByVal Parameters As String, ByVal File As String, ByVal Operation As String, _
ByVal nCmd As Long) As LongPtr
#Else
#End If
Sub SendExcelListEMail()
'Declare the variables
Dim xMailAdd As String
Dim xRegCode As String
Dim xBody As String
Dim xURLink As String
Dim xRngCell As Range
Dim xIntRg As Range
Dim xSelectTxt As String
Dim k As Integer
Dim p As Double
On Error Resume Next
'Select range select adddress
xSelectTxt = ActiveWindow.RangeSelection.Address
'Create a Input box for the range selection
Set xIntRg = Application.InputBox("Please Input Excel data range:", "ExcelDemy", xSelectTxt, , , , , 8)
'Apply If condition to specify column numbers for the operation
If xIntRg Is Nothing Then Exit Sub
If xIntRg.Columns.Count <> 3 Then
'Show the result in a msg box for not meeting the condition
MsgBox "Error with Region Selection, please confirm", , "ExcelDemy"
Exit Sub
End If
'Apply For loop to run operation in each row individually
For k = 1 To xIntRg.Rows.Count
' Collect the email address and set to the variable
xMailAdd = xIntRg.Cells(k, 2)
' Give a subject for the Email
xRegCode = "ExcelDemy Registration No."
' Type the body of the email
xBody = ""
' Insert Names with the variable xIntRg
xBody = xBody & "Greetings " & xIntRg.Cells(k, 1) & "," & vbCrLf & vbCrLf
xBody = xBody & " Here is your ExcelDemy Registration No. "
' Insert Registration No. with the variable xIntRg
xBody = xBody & xIntRg.Cells(k, 3).Text & "." & vbCrLf & vbCrLf
xBody = xBody & "We are really glad to have you visit in our site, keep supporting us." & vbCrLf
xBody = xBody & "ExcelDemy Team"
' Define spaces with (hex)
xRegCode = Application.WorksheetFunction.Substitute(xRegCode, " ", "%20")
xBody = Application.WorksheetFunction.Substitute(xBody, " ", "%20")
' Specify to replace carriage returns with(hex)
xBody = Application.WorksheetFunction.Substitute(xBody, vbCrLf, "%0D%0A")
' Generate the URL Link
xURLink = "mailto:" & xMailAdd & "?subject=" & xRegCode & "&body=" & xBody
' Use the Link to start emailing
ShellExecute 0&, vbNullString, xURLink, vbNullString, vbNullString, vbNormalFocus
' three seconds interval for sending keystrokes
Application.Wait (Now + TimeValue("0:00:03"))
Application.SendKeys "%s"
Next
End Sub

⇒ 3단계: 프로그램 실행하기
- F5 키를 눌러 프로그램을 실행합니다.
- 입력 상자에서 이메일을 보낼 범위를 선택합니다.
- 확인을 클릭하면 이메일이 발송됩니다.

- 실행 결과, 아래 이미지와 같이 이메일 전송 미리 보기가 차례로 나타납니다.

- 마지막으로 보낸 편지함에서 이메일이 정상적으로 전송되었는지 확인할 수 있습니다.

함께 읽으면 좋은 글: 엑셀에서 조건이 충족되면 이메일 보내는 방법 (3가지 쉬운 방법)
마무리
이 글이 엑셀 목록에서 대량 이메일을 보내는 방법을 익히는 데 도움이 되었기를 바랍니다. 소개해 드린 두 가지 방법을 직접 학습하고 실제 데이터에 적용해 보세요. 함께 제공되는 실습 워크북을 활용하면 더욱 효과적으로 연습할 수 있습니다. 여러분의 소중한 관심이 이런 유용한 강좌를 계속 만들어 가는 원동력이 됩니다.
궁금한 점이 있다면 언제든지 문의해 주세요. 아래 댓글란에 의견을 남겨주셔도 좋습니다.
저희 ExcelDemy 팀은 여러분의 질문에 항상 성심껏 답변해 드립니다.
저희와 함께 꾸준히 배워 나가세요.
함께 읽으면 좋은 관련 글
- 엑셀에서 Outlook으로 자동 이메일 보내는 방법 (4가지 방법)
- 매크로로 엑셀에서 본문을 포함해 이메일 보내는 방법 (간단한 단계)
- 엑셀 매크로: 특정 셀의 주소로 이메일 보내기 (2가지 쉬운 방법)
- 날짜를 기준으로 엑셀에서 자동으로 이메일 보내는 방법
- 엑셀 스프레드시트에서 여러 이메일 보내는 방법 (2가지 쉬운 방법)
- 본문을 포함해 엑셀에서 이메일을 보내는 매크로 (3가지 유용한 사례)