コンテンツにスキップ

$p.apiSendMail

概要

AjaxのPOSTリクエストにより、指定宛先にメールを送信します。

構文

JavaScript
$p.apiSendMail({
    id: 123,
    data: {
        To: <Toに設定したいメールアドレス>,
        Cc: <Ccに設定したいメールアドレス>,
        Bcc: <Bccに設定したいメールアドレス>,
        Title: <メール件名に設定する値>,
        Body: <メール本文に設定する値>
    }
})

各パラメータの説明

パラメータ名 説明
ID 操作対象のサイトID
To Toに設定する宛先
Cc Ccに設定する宛先
Bcc Bccに設定する宛先
Title メールのタイトルに設定する値
Body メールの本文に設定する値

使用例

JavaScript
$p.apiSendMail({
    id: 123,
    data: {
        To: 'to_user1@example.com',
        Cc: 'cc_user1@example.com',
        Bcc: 'bcc_user1@example.com',
        Title: 'メール送信検証',
        Body: 'これはメール送信検証の本文です。'
    }
})

サンプルコード

Note

コード内の【 ... 】は適宜修正してください。

1. 保存前に入力内容をテストメールで確認する

プロセス機能で「テストメール送信」ボタンを作成し、レコードを保存せずに入力内容を「確認用メールアドレス」項目宛てへテストメールとして送信します。

実務での使いどころ

標準の通知や$p.events.before_sendは保存の完了時、または保存と同時にしか発火しないため、保存するかどうかを決める前に入力内容を確認することができません。
本サンプルはボタンを押しても保存自体は行わないため、何度でも保存前に入力内容をメールで確認できます。

事前準備

  1. テーブルに下記の項目を有効化します。
    1. 分類A(項目コード:ClassA):テストメールの送信先を入力する「確認用メールアドレス」欄
  2. スクリプトを登録します。
    1. 「テーブルの管理 > スクリプト」タブで「新規作成」を選択します。
設定項目 設定値
タイトル 任意の名前(例:保存前のテストメール送信)
スクリプト 下記サンプルコードを貼り付け
出力先 「新規作成」と「編集」の両方にチェック
  1. プロセスを登録します。
    1. 「テーブルの管理 > プロセス」タブで「新規作成」を選択します。
設定項目 設定値
名称・表示名 任意の名前(例:テストメール送信)
画面種別 編集(新規作成でも使う場合はもう1つ追加)
現在の状況 *(すべて)
実行種別 追加したボタン
アクション種別 無し
OnClick sendTestMailWithoutSave()
// 確認用メールアドレスを入力する項目のカラム名
const CONFIRM_MAIL_COLUMN = 'ClassA';

function sendTestMailWithoutSave() {
    const siteId = $p.siteId();
    const title = $p.getValue('Title');
    const body = $p.getValue('Body');
    const confirmMailAddress = $p.getValue(CONFIRM_MAIL_COLUMN);

    $p.clearMessage();

    if (!confirmMailAddress) {
        $p.setMessage('#Message', JSON.stringify({
            Css: 'alert-error',
            Text: '確認用メールアドレスが未入力のため、テストメールを送信できません。',
        }));
        return;
    }

    $p.apiSendMail({
        id: siteId,
        data: {
            To: confirmMailAddress,
            Title: `【テストメール】${title}`,
            Body:
                '以下の内容で保存しようとしています(テストメールです。まだ保存はされていません)。\n\n' +
                `件名: ${title}\n` +
                `本文: ${body || '(未入力)'}\n` +
                `送信日時: ${new Date().toLocaleString('ja-JP')}\n`,
        },
        done: function (data) {
            console.log('テストメール送信成功');
            $p.setMessage('#Message', JSON.stringify({
                Css: 'alert-success',
                Text: 'テストメールを送信しました(レコードはまだ保存されていません)。',
            }));
        },
        fail: function (data) {
            console.log('テストメール送信失敗');
            $p.setMessage('#Message', JSON.stringify({
                Css: 'alert-error',
                Text: 'テストメールの送信に失敗しました。',
            }));
        },
    });
}