如何使用 JavaScript 傳送電子郵件?
從 JavaScript 傳送電子郵件是大多數 Web 應用程式中常見的功能。它允許您自動化通知、傳送使用者生成的內容或促進與使用者的通訊。我們可以使用不同的方法,例如使用 Mailto 協議、使用伺服器端語言傳送電子郵件以及透過 API 實現電子郵件傳送,來從 Javascript 傳送電子郵件。在本文中,我們將探討所有這些使用 javascript 傳送電子郵件的方法。
傳送電子郵件的基礎知識
在使用不同的庫和方法實現電子郵件傳送功能之前,我們需要了解發送電子郵件的基本要求。從高層次來看,傳送電子郵件需要兩個主要元素:傳送方的電子郵件地址和接收方的電子郵件地址。此外,您還需要一個 SMTP(簡單郵件傳輸協議)伺服器來處理電子郵件傳遞。
方法 1:使用 Mailto 協議
從 JavaScript 傳送電子郵件最簡單的方法是利用“mailto”協議。它只是生成一條帶有預先填充的主題、收件人和正文的電子郵件訊息。當用戶點選“mailto”連結時,它會自動開啟其預設的電子郵件客戶端,並顯示預先填充的資訊。
示例
在下面的示例中,我們定義了收件人的電子郵件地址、主題和電子郵件正文。然後,我們透過將這些值連線在一起並使用 encodeURIComponent() 確保正確的編碼來構建“mailto”連結。最後,我們將 window.location.href 屬性設定為生成的 mailto 連結,從而觸發使用者的預設電子郵件客戶端開啟,並顯示預先填充的資訊。
const recipient = 'example@example.com'; const subject = 'Hello'; const body = 'This is the body of the email.'; const mailtoLink = `mailto:${recipient}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`; window.location.href = mailtoLink;
輸出
在開啟瀏覽器中生成的 Malito 連結後,它將開啟使用者的預設電子郵件客戶端,並顯示一個包含預先填充的主題、收件人和正文的新電子郵件草稿。使用者可以在傳送電子郵件之前進行任何必要的修改。
mailto:example@example.com?subject=Hello&body=This%20is%20the%20body%20of%20the%20email.
方法 2:使用伺服器端語言傳送電子郵件
Mailto 協議在使用方面存在一些限制。它依賴於使用者的電子郵件客戶端來發送電子郵件,並且無法控制電子郵件傳遞過程。為了克服這些限制,您可以使用伺服器端語言(如 Node.js 或 PHP)來處理電子郵件傳送過程。
示例
const nodemailer = require('nodemailer'); async function sendEmail() { try { const transporter = nodemailer.createTransport({ service: 'Gmail', auth: { user: 'your-email@gmail.com', pass: 'your-password' } }); const mailOptions = { from: 'your-email@gmail.com', to: 'recipient@example.com', subject: 'Hello', text: 'This is the body of the email.' }; const info = await transporter.sendMail(mailOptions); console.log('Email sent:', info.messageId); } catch (error) { console.error('Error occurred:', error); } } sendEmail();
輸出
Email sent: <6fd37d54-7882-c074-5886-85abc286ac8c@gmail.com>
注意:如果您在郵件登入中啟用了 2FA 身份驗證,則必須生成您的應用程式特定密碼才能傳送郵件。
方法 3:透過 API 實現電子郵件傳送
從 JavaScript 傳送電子郵件的另一種方法是與電子郵件傳遞服務或 API 整合。此方法為傳送電子郵件提供了更大的靈活性和可擴充套件性。
示例
使用 SendGrid API
在下面的示例中,我們使用 SendGrid API 傳送電子郵件。首先,我們使用 @sendgrid/mail 包中的 setApiKey() 設定 API 金鑰。然後,我們定義電子郵件詳細資訊,例如收件人、發件人、主題和文字內容。我們將此資訊傳遞給 send() 方法,該方法返回一個 Promise。我們相應地處理成功和錯誤情況。
注意:您可以透過在 Sendgrid 平臺上註冊並建立自己的 API 金鑰來獲取 Sendgrid API 金鑰。
const apiKey = 'your-sendgrid-api-key'; const sgMail = require('@sendgrid/mail'); sgMail.setApiKey(apiKey); const msg = { to: 'recipient@example.com', from: 'sender@example.com', subject: 'Hello', text: 'This is the body of the email.' }; sgMail.send(msg) .then(() => { console.log('Email sent successfully'); }) .catch((error) => { console.error('Error occurred:', error); });
輸出
Email sent successfully
結論
在本文中,我們討論瞭如何使用不同的方法從 javascript 傳送電子郵件。我們首先介紹了“mailto”協議,它對於基本的電子郵件功能很有用。接下來,我們討論了使用 Node.js 或 PHP 等伺服器端語言傳送電子郵件,從而更好地控制電子郵件傳遞過程。最後,我們探討了透過 API 傳送電子郵件,這提供了靈活性和可擴充套件性。請記住,在傳送電子郵件時適當地處理錯誤,因為由於憑據錯誤、網路問題或電子郵件服務提供商施加的限制,可能會發生故障。