歡迎使用 WRLCC 自動寄信系統

您好,歡迎使用 WRLCC 自動寄信系統。本服務由 151-NAS 提供, 採用 Gmail 的 SMTP 機制實現 自動化寄信 功能, 無須自行搭建傳統的 SMTP / POP3 郵件伺服器,便能快速整合到您的網站、系統或 APP。

本系統支援 GET / POST 兩種請求方式來觸發寄信, 並內建 AES-256高強度加密 機制,確保您傳輸的內容與帳號安全不外洩。 透過簡單的 API 呼叫,即可完成會員通知、訂單提醒、驗證信、即時訊息推送等多種應用。

本服務特色包含:

  • 高安全性:使用 Google 應用程式密碼與 AES 加密技術,防止密碼與訊息外洩。
  • 高相容性:支援任何系統或平台,且提供多語法的AES加密程式,包括 PHP、Node.js、JS。
  • 多樣化寄信模式:支援 GET / POST 觸發、AES 加密傳輸,以及 VOIP 觸發通知。
  • 快速部署:免安裝額外郵件伺服器,僅需設定一次,即可立即使用。
  • 測試與驗證工具:內建 GET/POST 測試、AES加密驗證測試,方便開發者除錯與驗證。

WRLCC 自動寄信系統是一個 快速、方便、自動化 寄信工具,可協助企業、 開發者或個人快速建立 可靠、安全、自動化 的電子郵件通知機制。

何謂 Google 應用程式密碼?如何取得 Google 應用程式密碼?

Google 應用程式密碼是一組 16 位密碼,替代 Gmail 原始密碼使用於第三方程式登入,以確保Google 帳號安全;且Google 應用程式密碼有唯一性及二階段式驗證(2FA),無論呼叫或申請都有一定的安全性。

取得 Google 應用程式密碼:
步驟一   登入您的 Google 帳號
步驟二   管理你的 Google 帳戶
步驟三   安全性
步驟四   兩步驟驗證
步驟五   應用程式密碼
步驟六   輸入 該應用程式密碼的用途(自訂)
步驟七   複製 Google 應用程式密碼

本服務呼叫方式:

  • GET 寄信
  • POST 寄信
  • AES-GET 寄信
  • AES-POST 寄信
  • JSON 寄信 (僅適用於VOIP 網路電話系統)

GET 參數

  • rn:收件人姓名
  • re:收件人電子信箱
  • sn:寄件人姓名
  • se:寄件人 Gmail 電子信箱
  • sp:寄件人 Google 應用程式密碼
  • mt:信件主旨
  • mb:信件內文

POST 參數

  • rn:收件人姓名
  • re:收件人電子信箱
  • sn:寄件人姓名
  • se:寄件人 Gmail 電子信箱
  • sp:寄件人 Google 應用程式密碼
  • mt:信件主旨
  • mb:信件內文

AES-GET 參數

為加密後的密文

  • rn:收件人姓名
  • re:收件人電子信箱
  • sn:寄件人姓名
  • se:寄件人 Gmail 電子信箱
  • sp:寄件人 Google 應用程式密碼
  • mt:信件主旨
  • mb:信件內文
  • auth: API數值 (無須加密)

AES-POST 參數

為加密後的密文

  • rn:收件人姓名
  • re:收件人電子信箱
  • sn:寄件人姓名
  • se:寄件人 Gmail 電子信箱
  • sp:寄件人 Google 應用程式密碼
  • mt:信件主旨
  • mb:信件內文
  • auth: API數值 (無須加密)

JSON 參數

事件上報(觸發條件:來電通知、發話通知)

  • $answer_state : RINGING/ANSWER/HANGUP
  • $caller_username : 主叫用戶名
  • $caller_number : 主叫號碼
  • $callee_number : 目的號碼
  • $sn : 設備序號
  • $mac : MAC位址
  • $ip : WAN IP地址(路由模式)或 LAN IP地址(橋接模式)
  • $key : 驗證碼
  • $time : 本地日期/時間,年-月-日 時:分:秒
  • $epochtime : Unix時間戳


SIP狀態(觸發條件:SIP Phone離線/上線)

  • $username : SIP用戶帳號
  • $network_address : SIP分機註冊位址,IP:端口
  • $agent : SIP用戶代理
  • $sip_status : SIP分機狀態, REGISTER/UNREGISTER
  • $sn : 設備序號
  • $mac : MAC位址
  • $ip : WAN IP地址(路由模式)或 LAN IP地址(橋接模式)
  • $key : 驗證碼
  • $time : 本地日期/時間,年-月-日 時:分:秒
  • $epochtime : Unix時間戳

AES 加密程式

PHP版本:

function encode($str, $key) {
    $method = 'AES-256-CBC';
    $ivLength = openssl_cipher_iv_length($method);
    $iv = openssl_random_pseudo_bytes($ivLength);
    $encrypted = openssl_encrypt($str, $method, $key, 0, $iv);
    $output = base64_encode($iv . $encrypted);
    return $output;
}


Node.js版本:

const crypto = require("crypto");

function encode(str, key) {
    const algorithm = "aes-256-cbc";
    const iv = crypto.randomBytes(16);
    const cipher = crypto.createCipheriv(algorithm, crypto.createHash("sha256").update(key).digest(), iv);
    let encrypted = cipher.update(str, "utf8", "binary");
    encrypted += cipher.final("binary");
    const output = Buffer.concat([iv, Buffer.from(encrypted, "binary")]).toString("base64");
    return output;
}


JavaScript版本:

使用前須引入CrytoJS函式庫:

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>

function encode(str, key) {
    const iv = CryptoJS.lib.WordArray.random(16);
    const encrypted = CryptoJS.AES.encrypt(str, CryptoJS.SHA256(key), {
        iv: iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    });
    const ivCipher = iv.concat(encrypted.ciphertext);
    return CryptoJS.enc.Base64.stringify(ivCipher);
}

觸發寄信程式碼

* 若為AES加密版本,需透過encode(str, key)函式進行加密

PHP版本(GET):

$params = array(
  'rn' => $rn,*
  're' => $re,*
  'sn' => $sn,*
  'se' => $se,*
  'sp' => $sp,*
  'mt' => $mt,*
  'mb' => $mb,*
  'auth' => $auth //如果為AES加密版本,才需加上此參數
);

// 組成完整 URL
$url = 'http://mail.wrlcc.synology.me/send.php?' . http_build_query($params);

// 建立 GET 請求(加上 timeout 避免阻塞)
$options = [
  'http' => [
    'method' => 'GET',
    'timeout' => 5
  ]
];
$context = stream_context_create($options);

// 發送 GET 請求
$response = @file_get_contents($url, false, $context);

PHP版本(POST):

$postData = http_build_query(
array(
  'rn' => $rn,*
  're' => $re,*
  'sn' => $sn,*
  'se' => $se,*
  'sp' => $sp,*
  'mt' => $mt,*
  'mb' => $mb,*
  'auth' => $auth //如果為AES加密版本,才需加上此參數
)
);

$options = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postData ) );
$context = stream_context_create($options);
file_get_contents('http://mail.wrlcc.synology.me/send.php', false, $context);

Node.js版本(GET):

import fetch from "node-fetch"; // 若使用 Node.js 18+ 可省略這行

const params = new URLSearchParams({
  rn: rn,*
  re: re,*
  sn: sn,*
  se: se,*
  sp: sp,*
  mt: mt,*
  mb: mb,*
  auth: auth // 如果為 AES 加密版本,才需加上此參數
});

const url = `http://mail.wrlcc.synology.me/send.php?${params.toString()}`;

try {
  const response = await fetch(url, {
    method: "GET",
    timeout: 5000 // 5秒 timeout
  });   const text = await response.text();
  console.log("伺服器回應:", text);
} catch (error) {
  console.error("連線錯誤:", error);
}

Node.js版本(POST):

import fetch from "node-fetch"; // 若使用 Node.js 18+ 可省略這行

const formData = new URLSearchParams({
  rn: rn,*
  re: re,*
  sn: sn,*
  se: se,*
  sp: sp,*
  mt: mt,*
  mb: mb,*
  auth: auth // 如果為 AES 加密版本,才需加上此參數
});

try {   const response = await fetch("http://mail.wrlcc.synology.me/send.php", {
    method: "POST",
    headers: {
      "Content-Type": "application/x-www-form-urlencoded"
    },
    body: formData.toString(),
    timeout: 5000 // 5秒 timeout
  });
  const text = await response.text();
  console.log("伺服器回應:", text);
} catch (error) {
  console.error("連線錯誤:", error);
}

Q&A 問答

  • Q: 我忘記應用程式密碼怎麼辦?
    A: 只能重新設定一組新的應用程式密碼。
  • Q: WRLCC 自動寄信系統需要收費嗎?
    A: 本服務總共提供 5 種版本的寄信服務,其包含GET寄信、POST寄信、AES-GET寄信、AES-POST寄信、JSON寄信,僅AES-GET/AES-POST及JSON會進行酌收會員費(每月酌收),每組帳號僅能生成3組API。
  • Q: GET、POST 版本與 AES-GET、AES-POST 版本差異在哪?
    A: 差別在AES版本在觸發本服務時,其收件人資訊、寄件人資訊、信件標題與內文皆事先透過AES加密,本服務在寄出時,進行AES解密並將該信件傳送給Gmail,再由Gmail寄出信件給用戶,過程會相對前兩個版本更為安全。
  • Q: 我該如何將資訊透過 AES 加密程式來進行加密?
    A: 購買會員後,本服務將提供AES加密程式(PHP/JS 雙版本),您可以透過呼叫的方式來進行加密。
  • Q: WRLCC 自動寄信系統能寄出類似HTML的郵件嗎?
    A: 本服務支援HTML格式的郵件,您可以在信件內文(mb)中,套用html語法即可。
  • Q: 我們該如何觸發 WRLCC 自動寄信系統?
    A: 您可以透過Form表單寄出時觸發,或透過AJAX觸發特定網址(GET/POST)來寄出您的信件。
  • Q: 本服務可以讓我應用在哪些地方或場景?
    A: 您可以使用在 登入提醒信、二段式登入驗證信、註冊驗證信、顧客滿意度轉發雇主信箱、顧客留言轉發至雇主信箱、廣告信、會員通知信等情境,只要需要E-Mail寄信的情境,本服務都能做到。
  • Q: 市場上的推播系統 與 WRLCC 自動寄信系統,兩者有何差異?
    A: WRLCC自動寄信系統是屬於推播系統的一環,所謂的推播系統,涵蓋了E-Mail、簡訊、LINE、手機APP等多種方式進行通知、驗證。
  • Q: 何謂 JSON 寄信?
    A: 部分系統(如VOIP系統),在事件觸發時,僅能呼叫特定網址,其過程無法夾帶URL參數,僅能夾帶JSON參數,則本服務將透過其中參數(LAN MAC)來辨識是否為本服務用戶呼叫,再透過其他參數完成寄信服務。
  • Q: JSON 寄信需要設定哪些項目?
    A: JSON 寄信需設定「收件人姓名」、「收件人信箱」、「寄件人姓名」、「寄件人信箱」、「寄件人應用程式密碼」、「VoIP 閘道/Server LAN MAC位址」、「VoIP 系統名稱」,並確認您的VoIP 系統支援「寄送JSON格式」及「包含所需參數」,即可正常使用。
  • Q: JSON 寄信目前支援那些系統?
    A: 經測試,目前支援 Dinstar 的 VOIP 網路電話系統。