AWS Simple Email Service (SES) 是一種強大、經濟高效的解決方案,可以幫助您安全地發送電子郵件,無論是用於交易訊息、行銷活動還是自動通知。
在這篇部落格文章中,我們將探討如何使用 AWS SES 傳送電子郵件,涵蓋各種用例,例如傳送 HTML 範本、附件,甚至行事曆事件。我們將透過實際範例幫助您快速入門。
AWS Simple Email Service (SES) 是一項基於雲端的電子郵件發送服務,旨在幫助數位行銷人員和應用程式開發人員發送行銷、通知和交易電子郵件。對於各種規模的企業來說,這是一項可靠、可擴展且經濟高效的服務。
主要特點:
在我們深入發送電子郵件之前,讓我們為您的帳戶設定 AWS SES。
AWS SES 要求您驗證您打算使用的電子郵件地址或網域。
預設情況下,新的 AWS 帳戶位於沙盒環境中,這限制了電子郵件傳送功能。
您需要 AWS 存取金鑰才能以程式設計方式與 SES 互動。
我們首先使用適用於 Node.js 的 AWS 開發工具包發送一封簡單的純文字電子郵件。
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); } });
溫馨提示:
要發送帶有附件的電子郵件,我們將使用 sendRawEmail 方法而不是 sendEmail。
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中文網其他相關文章!