AWS Simple Email Service(SES)는 거래 메시지, 마케팅 캠페인, 자동 알림 등 이메일을 안전하게 보내는 데 도움이 되는 강력하고 비용 효율적인 솔루션입니다.
이 블로그 게시물에서는 AWS SES를 사용하여 이메일을 보내는 방법을 살펴보고 HTML 템플릿, 첨부 파일, 캘린더 이벤트 전송과 같은 다양한 사용 사례를 다룹니다. 빠르게 시작하는 데 도움이 되는 실제 사례를 살펴보겠습니다.
AWS Simple Email Service(SES)는 디지털 마케팅 담당자와 애플리케이션 개발자가 마케팅, 알림 및 거래 이메일을 보낼 수 있도록 설계된 클라우드 기반 이메일 전송 서비스입니다. 모든 규모의 기업을 위한 안정적이고 확장 가능하며 비용 효과적인 서비스입니다.
주요 기능:
이메일 보내기에 앞서 계정에 AWS SES를 설정해 보겠습니다.
AWS SES에서는 사용하려는 이메일 주소나 도메인을 확인해야 합니다.
기본적으로 새 AWS 계정은 샌드박스 환경에 있으므로 이메일 전송 기능이 제한됩니다.
SES와 프로그래밍 방식으로 상호 작용하려면 AWS 액세스 키가 필요합니다.
Node.js용 AWS SDK를 사용하여 간단한 일반 텍스트 이메일을 보내는 것부터 시작해 보겠습니다.
const AWS = require('aws-sdk'); // Configure AWS SDK AWS.config.update({ accessKeyId: 'YOUR_ACCESS_KEY_ID', secretAccessKey: 'YOUR_SECRET_ACCESS_KEY', region: 'us-east-1', // Replace with your SES region }); const ses = new AWS.SES(); const params = { Source: 'sender@example.com', Destination: { ToAddresses: ['recipient@example.com'], }, Message: { Subject: { Data: 'Test Email from AWS SES', }, Body: { Text: { Data: 'Hello, this is a test email sent using AWS SES!', }, }, }, }; ses.sendEmail(params, (err, data) => { if (err) { console.error('Error sending email', err); } else { console.log('Email sent successfully', data); } });
설명:
이제 HTML 콘텐츠가 포함된 이메일을 보내 시각적으로 더욱 매력적으로 만들어 보겠습니다.
const params = { Source: 'sender@example.com', Destination: { ToAddresses: ['recipient@example.com'], }, Message: { Subject: { Data: 'Welcome to Our Service!', }, Body: { Html: { Data: ` <html> <body> <h1>Welcome!</h1> <p>We're glad to have you on board.</p> </body> </html> `, }, }, }, }; ses.sendEmail(params, (err, data) => { if (err) { console.error('Error sending HTML email', err); } else { console.log('HTML email sent successfully', data); } });
팁:
첨부 파일이 포함된 이메일을 보내려면 sendEmail 대신 sendRawEmail 메소드를 사용합니다.
const fs = require('fs'); const path = require('path'); const AWS = require('aws-sdk'); const ses = new AWS.SES(); // Read the attachment file const filePath = path.join(__dirname, 'attachment.pdf'); const fileContent = fs.readFileSync(filePath); // Define the email parameters const params = { RawMessage: { Data: createRawEmail(), }, }; function createRawEmail() { const boundary = '----=_Part_0_123456789.123456789'; let rawEmail = [ `From: sender@example.com`, `To: recipient@example.com`, `Subject: Email with Attachment`, `MIME-Version: 1.0`, `Content-Type: multipart/mixed; boundary="${boundary}"`, ``, `--${boundary}`, `Content-Type: text/plain; charset=UTF-8`, `Content-Transfer-Encoding: 7bit`, ``, `Hello, please find the attached document.`, `--${boundary}`, `Content-Type: application/pdf; name="attachment.pdf"`, `Content-Description: attachment.pdf`, `Content-Disposition: attachment; filename="attachment.pdf";`, `Content-Transfer-Encoding: base64`, ``, fileContent.toString('base64'), `--${boundary}--`, ].join('\n'); return rawEmail; } ses.sendRawEmail(params, (err, data) => { if (err) { console.error('Error sending email with attachment', err); } else { console.log('Email with attachment sent successfully', data); } });
설명:
캘린더 이벤트를 보내기 위해 .ics 파일을 첨부 파일로 포함합니다.
function createCalendarEvent() { const event = [ 'BEGIN:VCALENDAR', 'VERSION:2.0', 'BEGIN:VEVENT', 'DTSTAMP:20231016T090000Z', 'DTSTART:20231020T100000Z', 'DTEND:20231020T110000Z', 'SUMMARY:Meeting Invitation', 'DESCRIPTION:Discuss project updates', 'LOCATION:Conference Room', 'END:VEVENT', 'END:VCALENDAR', ].join('\n'); return Buffer.from(event).toString('base64'); } function createRawEmail() { const boundary = '----=_Part_0_123456789.123456789'; let rawEmail = [ `From: sender@example.com`, `To: recipient@example.com`, `Subject: Meeting Invitation`, `MIME-Version: 1.0`, `Content-Type: multipart/mixed; boundary="${boundary}"`, ``, `--${boundary}`, `Content-Type: text/plain; charset=UTF-8`, `Content-Transfer-Encoding: 7bit`, ``, `Hello, you're invited to a meeting.`, `--${boundary}`, `Content-Type: text/calendar; method=REQUEST; name="invite.ics"`, `Content-Transfer-Encoding: base64`, `Content-Disposition: attachment; filename="invite.ics"`, ``, createCalendarEvent(), `--${boundary}--`, ].join('\n'); return rawEmail; } ses.sendRawEmail(params, (err, data) => { if (err) { console.error('Error sending calendar invite', err); } else { console.log('Calendar invite sent successfully', data); } });
설명:
AWS SES는 다양한 이메일 전송 요구 사항을 처리할 수 있는 다목적 서비스입니다. 간단한 알림을 보내든, 풍부한 HTML 콘텐츠가 포함된 마케팅 이메일을 보내든, 첨부 파일과 달력 이벤트가 포함된 복잡한 메시지를 보내든, AWS SES가 모든 것을 처리해 드립니다.
이 가이드를 따르면 이제 다음 방법을 확실하게 이해하게 될 것입니다.
읽어주셔서 감사합니다! 질문이나 공유하고 싶은 팁이 있으면 아래에 댓글을 남겨주세요. 즐거운 코딩하세요!
위 내용은 AWS SES를 통해 이메일 전송: 종합 안내서의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!