OSSのノーコードツール「プリザンター」でblastengineを使ってメール送信する

[プリザンター](https://pleasanter.org/)は、OSSのノーコード・ローコード開発ツールです。業務アプリをマウス操作だけで簡単に作成できます。そして、業務システムではメール送信が多々行われます。

今回は、このプリザンターにblastengineのメール送信設定を行う方法を解説します。

## ユーザ登録する

blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします（ユーザIDは後で使います）。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/bd2ebf77-a92c-266d-93a1-39809c85d4af.png)

## 送信元ドメインのSPFを設定する

送信元として利用するドメイン（自分で持っているもの）の設定をします。これは任意のドメイン管理サービスで設定できますが、TXTレコードに以下のSPFを追加します。

```
txt @ v=spf1 include:spf.besender.jp ~all
```

## SMTP用のパスワードを設定する

ログイン後、管理画面の右上にある設定メニューへ移動します。

![getting-started-6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/78a4eeb3-4649-149f-8246-44f83d03a0cf.jpeg)

そしてSMTPリレーの設定で、SMTP用のパスワードを設定できます。また、IPアドレスベースの認証も可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/e615c636-8bf6-0937-6ed6-d06e933b84c7.png)

## プリザンターを立ち上げる

今回はDocker版プリザンターを使います。[Docker版プリザンターで運用する方法 #PostgreSQL - Qiita](https://qiita.com/imp-kawano/items/fe0680f756899b251a4d)を参考に、以下のようなファイル構成にしました。

```
% tree .
.
├── CodeDefiner
│   └── Dockerfile
├── Pleasanter
│   └── Dockerfile
├── app_data_parameters
│   └── Mail.json
└── docker-compose.yml
```

### CodeDefiner/Dockerfileの内容

```Dockerfile
FROM implem/pleasanter:codedefiner

COPY app_data_parameters/ /app/Implem.Pleasanter/App_Data/Parameters/
ENTRYPOINT [ "dotnet", "Implem.CodeDefiner.dll" ]
```

### Pleasanter/Dockerfileの内容

```Dockerfile
ARG VERSION=latest
FROM implem/pleasanter:${VERSION}

COPY app_data_parameters/ App_Data/Parameters/
ENTRYPOINT [ "dotnet", "Implem.Pleasanter.dll" ]
```

### app_data_parameters/Mail.jsonの内容

ここでは、先ほど取得したblastengineのユーザーIDとSMTP用パスワードを設定します。SMTPサーバーは`smtp.engn.jp`を使います。

```json
{
	"SmtpHost": "smtp.engn.jp",
	"SmtpPort": 587,
	"SmtpUserName": "YOUR_USER_ID",
	"SmtpPassword": "YOUR_PASSWORD",
	"FixedFrom": "info@example.com",
	"SupportFrom": "info@example.com"
}
```

他のパラメーターは[パラメータ設定：Mail.json | Pleasanter](https://pleasanter.org/manual/mail.json)を参照してください。

### docker-compose.ymlの内容

```yaml
version: '3.7'

services:
  pleasanter:
    build:
      context: .
      dockerfile: ./Pleasanter/Dockerfile
      args:
        - VERSION=${PLEASANTER_VER}
    container_name: pleasanter_${PLEASANTER_VER}
    environment:
      Implem.Pleasanter_Rds_SaConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString}
      Implem.Pleasanter_Rds_OwnerConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString}
      Implem.Pleasanter_Rds_UserConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString}
    depends_on:
      - db
    ports:
      - '8080:8080'
    networks:
      - default
  codedefiner:
    build:
      context: .
      dockerfile: ./CodeDefiner/Dockerfile
    container_name: codedefiner
    environment:
      Implem.Pleasanter_Rds_SaConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString}
      Implem.Pleasanter_Rds_OwnerConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString}
      Implem.Pleasanter_Rds_UserConnectionString: ${Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString}
    depends_on:
      - db
    networks:
      - default
    stdin_open: true
  db:
    container_name: postgres${POSTGRES_VER}
    image: postgres:${POSTGRES_VER}
    volumes:
      - type: volume
        source: pg_data
        target: ${PGDATA}
    networks:
      - default
    environment:
      - POSTGRES_USER
      - POSTGRES_PASSWORD
      - POSTGRES_DB
      - POSTGRES_HOST_AUTH_METHOD
      - POSTGRES_INITDB_ARGS
      - PGDATA
    user: postgres
  dbbackup:
    image: ubuntu
    container_name: dbbackup
    networks:
      - default
    volumes:
      - type: volume
        source: pg_data
        target: /pg_data
      - type: bind
        source: .
        target: /backup

volumes:
  pg_data:
    name: ${COMPOSE_PROJECT_NAME:-default}_pg_data_${POSTGRES_VER}

networks:
  default:
    name: pleasanter_prod_network
```

### .envの内容

.envでは最新のプリザンターを指定しています。他、PostgreSQLのバージョンや接続情報を設定します。

```env
PLEASANTER_VER=1.4.5.0
POSTGRES_VER=15
Implem_Pleasanter_Rds_PostgreSQL_SaConnectionString='Server=db;Database=postgres;UID=USERNAME;PWD=PASSWORD'
Implem_Pleasanter_Rds_PostgreSQL_OwnerConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=PASSWORD'
Implem_Pleasanter_Rds_PostgreSQL_UserConnectionString='Server=db;Database=#ServiceName#;UID=#ServiceName#_User;PWD=PASSWORD'
POSTGRES_USER=USERNAME
POSTGRES_PASSWORD=PASSWORD
POSTGRES_DB=db
POSTGRES_HOST_AUTH_METHOD=scram-sha-256
POSTGRES_INITDB_ARGS="--auth-host=scram-sha-256 --encoding=UTF-8"
PGDATA=/var/lib/postgresql/dat
```

## データベースの設定

データベースの設定を行うコマンドは以下の通りです。

```bash
docker compose run codedefiner _rds
```

## プリザンターの立ち上げ

プリザンターを立ち上げるコマンドは以下の通りです。

```bash
docker compose up -d pleasanter
```

これでプリザンターがメール送信の際にblastengineを使う設定が完了しました。

![FireShot Capture 275 - プリザンター - localhost 275.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/1f951f90-9352-7d1a-76b2-6d1ac3de84c2.jpeg)


## まとめ

プリザンターで顧客管理や、社内連絡網などのアプリを作った際には、メール送信機能が必要になります。blastengineを使えば、簡単にメール送信機能を追加できます。ぜひ、お試しください。

[プリザンター｜OSSのノーコード・ローコード開発ツール](https://pleasanter.org/)