如何使用 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 傳送電子郵件,這提供了靈活性和可擴充套件性。請記住,在傳送電子郵件時適當地處理錯誤,因為由於憑據錯誤、網路問題或電子郵件服務提供商施加的限制,可能會發生故障。

更新於: 2023-07-18

9K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告