이메일 트리거 확장 프로그램(firestore-send-email
)을 사용하면 Cloud Firestore 컬렉션의 문서를 기반으로 이메일을 자동으로 보낼 수 있습니다. 컬렉션에 문서를 추가하면 이 확장 프로그램이 트리거되어 문서의 필드를 사용해 작성된 이메일을 전송합니다. 문서의 최상위 필드는 to
, cc
, bcc
옵션(모두 UID 지원)을 포함한 이메일 발신자 및 수신자를 지정합니다. 문서의 message
필드는 제목 및 이메일 본문(일반 텍스트 또는 HTML)과 같은 다른 이메일 요소를 지정합니다.
다음은 이 확장 프로그램을 트리거하는 기본적인 문서 작성을 보여주는 예시입니다.
admin.firestore().collection('mail').add({
to: 'someone@example.com',
message: {
subject: 'Hello from Firebase!',
html: 'This is an <code>HTML</code> email body.',
},
})
필요에 따라 Handlebars 템플릿을 사용하여 이메일을 렌더링하도록 이 확장 프로그램을 구성할 수도 있습니다.
설치 전 설정
확장 프로그램을 설치하기 전에 다음 단계를 완료하세요.
발신 메일 서비스를 설정합니다.
이메일 트리거 확장 프로그램을 설치할 때 확장 프로그램이 이메일을 보내는 데 사용하는 SMTP 서버의 연결 및 인증 세부정보를 지정해야 합니다. 이는 일반적으로 SendGrid, Mailgun 또는 Mailchimp Transactional Email과 같은 이메일 전송 서비스에서 제공되지만, 사용자가 직접 실행하는 서버일 수도 있습니다.
이메일 문서 컬렉션을 만듭니다.
이메일 트리거 확장 프로그램은 사용자가 지정한 Cloud Firestore 컬렉션에서 새 문서를 수신 대기합니다. 새 문서를 찾으면 확장 프로그램이 문서의 필드를 기준으로 이메일을 보냅니다. 모든 Cloud Firestore 컬렉션은 이러한 용도로 사용할 수 있습니다. 본 페이지의 예시에서는
email
이라는 컬렉션을 사용합니다.이메일 문서 컬렉션에 대한 보안 규칙을 설정합니다.
이 확장 프로그램을 사용하면 클라이언트 애플리케이션에서 직접 이메일 전송을 트리거할 수 있습니다. 그러나 사용자가 회사 주소로 임의의 이메일을 전송하는 잠재적인 악용을 방지하려면 컬렉션에 대한 클라이언트 액세스를 주의해서 제어해야 합니다.
보안 규칙은 애플리케이션에 따라 달라지지만 의도한 수신자에게만 이메일이 전송되고 자유 형식 콘텐츠가 최소 수준으로 유지되도록 항상 주의해야 합니다. 이 경우 템플릿이 도움이 될 수 있습니다. 보안 규칙을 사용하면 템플릿에 채워지는 데이터가 사용자의 트리거가 허용되는 예상 대상과 일치하는지 확인할 수 있습니다.
선택사항: 사용자 컬렉션을 설정합니다.
이 확장 프로그램의 기본적인 사용법에 따라 메시지 문서의
to
,cc
,bcc
필드에 이메일 주소를 지정하여 이메일 수신자를 지정합니다. 또는 Cloud Firestore에 사용자 데이터베이스가 있는 경우 사용자의 UID를 사용하여 수신자를 지정할 수 있습니다. 이 작업을 수행하려면 사용자 컬렉션이 다음 기준을 충족해야 합니다.- 컬렉션에는 사용자 ID에 키가 지정되어야 합니다. 즉, 컬렉션에 있는 각 사용자 문서의 문서 ID는 사용자의 Firebase Authentication UID여야 합니다.
- 각 사용자 문서에는 사용자의 이메일 주소를 포함하는
email
필드가 있어야 합니다.
선택사항: 템플릿 컬렉션을 설정합니다.
Handlebars 템플릿을 사용하여 이메일을 렌더링할 수 있습니다. 이렇게 하려면 템플릿을 포함할 Cloud Firestore 컬렉션이 필요합니다.
자세한 내용은 이메일 트리거 확장 프로그램으로 Handlebars 템플릿 사용을 참조하세요.
확장 프로그램 설치
확장 프로그램을 설치하려면 Firebase Extension 설치 페이지의 단계를 따르세요. 요약하면 다음 중 하나를 수행합니다.
Firebase 콘솔: 다음 버튼을 클릭합니다.
CLI: 다음 명령어를 실행합니다.
firebase ext:install firebase/firestore-send-email --project=projectId-or-alias
확장 프로그램을 설치할 때 이전에 설정한 SMTP 연결 정보와 Cloud Firestore 컬렉션을 지정하라는 메시지가 표시됩니다.
확장 프로그램 사용
설치하고 나면 확장 프로그램이 사용자가 구성한 컬렉션에 대한 모든 문서 쓰기를 모니터링합니다. 이메일은 문서 필드의 콘텐츠를 토대로 전송됩니다. 최상위 필드에는 이메일의 발신자 및 수신자를 지정합니다. message
필드에는 이메일 본문을 포함하여 전송할 이메일의 세부정보가 포함됩니다.
예: 이메일 보내기
간단한 메시지를 보내려면 다음 콘텐츠로 to
필드와 message
필드가 있는 문서를 메시지 컬렉션에 추가하세요.
to: ['someone@example.com'],
message: {
subject: 'Hello from Firebase!',
text: 'This is the plaintext section of the email body.',
html: 'This is the <code>HTML</code> section of the email body.',
}
발신자 및 수신자 필드
문서의 최상위 필드는 이메일의 발신자 및 수신자 정보를 제공합니다. 사용 가능한 필드는 다음과 같습니다.
- from: 발신자의 이메일 주소입니다. 문서에 지정되지 않은 경우 구성된 '기본 발신 주소' 매개변수를 사용합니다.
- replyTo: 답장할 이메일 주소입니다. 문서에 지정되지 않은 경우 구성된 '기본 답장받을 주소' 매개변수를 사용합니다.
- to: 단일의 수신자 이메일 주소 또는 다수의 수신자 이메일 주소가 포함된 배열입니다.
- toUids: 수신자 UID가 포함된 배열입니다.
- cc: 단일의 수신자 이메일 주소 또는 다수의 수신자 이메일 주소가 포함된 배열입니다.
- ccUids: 참조 수신자 UID가 포함된 배열입니다.
- bcc: 단일의 수신자 이메일 주소 또는 다수의 수신자 이메일 주소가 포함된 배열입니다.
- bccUids: 숨은참조 수신자 UID가 포함된 배열입니다.
- headers: 추가 헤더 필드의 객체입니다(예:
{"X-Custom-Header": "value", "X-Second-Custom-Header": "value"}
).
참고: toUids
, ccUids
, bccUids
옵션은 Cloud Firestore 문서 내의 이메일 주소로 키가 지정된 사용자 UID를 기반으로 이메일을 전송합니다. 이러한 수신자 옵션을 사용하려면 확장 프로그램의 '사용자 컬렉션' 매개변수에 대한 Cloud Firestore 컬렉션을 지정해야 합니다. 이제 확장 프로그램에서 toUids
, ccUids
또는 bccUids
필드에 지정된 각 UID에 대한 email
필드를 읽을 수 있습니다.
메시지 필드
문서의 message
필드에는 이메일의 원시 전송 정보가 포함됩니다. 이 필드는 일반적으로 자체 서버 또는 Cloud Functions에서 실행하는 신뢰할 수 있는 코드로만 채워져야 합니다(아래의 '보안 규칙 및 이메일 전송' 섹션 참조).
message
필드에 사용 가능한 속성은 다음과 같습니다.
- messageId: 이메일의 메시지 ID 헤더입니다(있는 경우).
- subject: 이메일의 제목입니다.
- text: 이메일의 일반 텍스트 콘텐츠입니다.
- html: 이메일의 HTML 콘텐츠입니다.
- amp: 이메일의 AMP4EMAIL 콘텐츠입니다.
- attachments: 첨부파일을 포함하는 배열입니다. 지원되는 Nodemailer 옵션에는 utf-8 문자열, 커스텀 콘텐츠 유형, URL, 인코딩된 문자열, 데이터 URI, 사전 생성된 MIME 노드가 있습니다(이메일은 클라우드 서버의 파일 시스템에 액세스할 수 없음).
고급 사용
이 확장 프로그램의 고급 사용에 대해 자세히 알아보세요.