ページを選択

ストブロ

Coffee's Blog.

fmlで自動応答を実現する

執筆者 | 2021年01月26日 | Coffee, さくらのレンタルサーバー, ストブロ

さくらのレンタルサーバーでメーリングリストを使用していますが、fmlというものが使用されています。

今回は「メールを送ってくれたら、送信者に受付番号を自動応答したい」という希望で色々調べたり、教えて貰ったりしました。

今回もヤンマさんにヒントを頂いて頑張りました!ヤンマさんいつもありがとうございます。

さて、fmlには「config.ph」という設定ファイルがあります。
今回もそれを修正していきます。
前回までのfml回で説明しているのでそちらを参照して下さい。

返信先を指定して居ない場合の挙動

さくらのMLで送信元への配信をスキップ

$RECEIVED_FILE=      "$DIR/received";

$str = "日本語";
use Encode 'from_to';
from_to($str, 'Shift_JIS', 'UTF-8');
$RECEIVED_STATEMENT = "$str";

$DISTRIBUTE_CLOSE_HOOK= q{
  $Envelope{'GH:From:'} = $MAIL_LIST;
  $MY_RECEIVED_STATEMENT=
        sprintf("[${BRACKET}:%05d] ${RECEIVED_STATEMENT}", $ID);
  &SendFile($From_address, $MY_RECEIVED_STATEMENT, $RECEIVED_FILE);
};

ずばり、私のたどり着いた答えはこうでした。

自動応答の内容を示すファイル

$RECEIVED_FILE=      "$DIR/received";

↑これは「received」というファイルを参照しなさいよ!という指示です。
config.phと同じディレクトリに、定型文のファイルがいくつかあります。
それを複製して、中身を書き換えます。
中身は何でも構いません。

自動応答のタイトル(日本語対応)

$str = "日本語";
use Encode 'from_to';
from_to($str, 'Shift_JIS', 'UTF-8');
$RECEIVED_STATEMENT = "$str";

これが一番悩みました。
メールのタイトルを日本語化したいのですが、文字化けしてしまうのです。
色々調べた結果、「Shift_JISをUTF-8に変化してタイトルに表記」という手順が必要らしいという事が分かりました。
1行目の「日本語」の所を自由に書き換えて最終的に「RECEICED_STATEMENT」に受け渡します。

以下のサイトを参考にさせて頂きました、大変ありがとうございました。
参考:fml.org

参考:Perlゼミ

返信者のアドレスを変更する

  $Envelope{'GH:From:'} = $MAIL_LIST;

そのままやると送信元(返信者)が管理者アドレスみたいなアドレスになってしまいます。
そこで送信元を修正します。
MAIL_LISTとは予め指定されたメーリングリストのアドレスの様です。

自動応答を組み立てて送信する

$MY_RECEIVED_STATEMENT=
        sprintf("[${BRACKET}:%05d] ${RECEIVED_STATEMENT}", $ID);
  &SendFile($From_address, $MY_RECEIVED_STATEMENT, $RECEIVED_FILE);

自動応答の中身を組み立てます。

[${BRACKET}:%05d]

これは自動付与する連番を参照する命令です。

SendFile($From_address, $MY_RECEIVED_STATEMENT, $RECEIVED_FILE);

From_Addressつまり元々メールを送ってきた人に、指定のタイトルを付けて、RECEIVED_FILEを本文にして送ってね!という事だと思います。

これでメーリングリストがメールを受け取ると送ってくれた人に自動応答してくれます。

やり残した事

RECEIVED_FILEで指定した本文中に受付番号が入れられると良いのですが…
それがまだ未解決のままです。


私の中の現在の最終形

このコードで以下の3つを実現しています。
1.通常はMLメンバー全員に配信されるメールを「送信者には送信しない」
2.MLへ送られたメールの返信先が空欄なら送り元のアドレスを入れる
3.送信者には改めて「受付メール」を送信する

# 送信元への配信はスキップし、Reply-toが未設定なら送信元アドレスを挿入
$START_HOOK = q#
 $SKIP{ $From_address } = 1;
 if ("reply-to" == $MAIL_LIST) {
        &DEFINE_FIELD_FORCED("reply-to", $From_address);
    };
#;

# 自動応答
$RECEIVED_FILE=      "$DIR/received";
$str = "メール受付のご案内";
use Encode 'from_to';
from_to($str, 'Shift_JIS', 'UTF-8');
$RECEIVED_STATEMENT = "$str";

$DISTRIBUTE_CLOSE_HOOK= q{
  $Envelope{'GH:From:'} = $MAIL_LIST;
  $MY_RECEIVED_STATEMENT=
        sprintf("[${BRACKET}:%05d] ${RECEIVED_STATEMENT}", $ID);
  &SendFile($From_address, $MY_RECEIVED_STATEMENT, $RECEIVED_FILE);
};

電器屋Walker10周年記念グッズ

2009年の配信スタート以来、電器屋Walkerは10周年を迎えました。長きにわたるご愛顧とご支援誠にありがとうございます。電器屋Walkerでは10周年記念バッジ&ステッカーを作成しました。こちらはCAMPFIREのパトロンさん限定セット「電器屋Walker...

Velopでネットワークカメラ等の2.4Ghz接続機器を接続する方法

Velopは2.4Ghz及び5Ghzを電波強度などを自立的に判断しながら切り替えて使える非常に便利なWi-Fiルーターです。特に「メッシュWi-Fi」と呼ばれ、同じSSIDを複数の無線アクセスポイントが共用し、複数の無線アクセスポイント(ノード)が一つの編み目...

IPv6環境での外部アクセス方法 その2

「IPv6 (IPoE MAP-E)環境でNASに外部接続出来る様にする環境設定」 前回に引き続きIPv6環境にてSynologyのNAS(今回はDS218J)にアクセスする手順を確認していきます。 1)DS218Jを家庭内LAN環境に接続する。...

IPv6環境での外部アクセス方法 その1 Synology DS218J

電器屋Walker Synology部略してSyno部(シノブ)です。 現在2ベイモデルのNAS DS218Jを使用していますが、半年ほど実用して色々分かってきたことを備忘録としてまとめていきます。 みなさんのNASライフのお役に立てれば幸いです。...

Synology部 略してSyno部 始めます!

電器屋Walkerのコーヒーは外部ストレージそSynologyのDS218Jに頼っています。 ここ数ヶ月実用してきて色々と分かってきたこと、興味が深まったこと、これから学びたいことが出てきました。...

Windows10とBSoDとexfat

突如Windows10でBSoDが表示された。SDカードを挿入したタイミング。 SDカードはOM-D E-M1 MarkⅡで直前までテスト撮影等をしていたもの。OM-D E-M1 MarkⅡではきちんと認識されている。...

F1-LP、F1-SPキャリングケースDIY

OM-D E-M1 MarkⅡでの動画撮影の際にZOOMのF1シリーズがかなり良い感じだという事はYoutubeでもレビューしたとおりです。 マイクカプセルとか色々あるので、キャリングケースを自作しました。 使用したのは「メイホウ」の「アタッシェ B5」...

さくらのレンサバをLet’s Encryptでhttps対応 その6

レンタルサーバーforビギナーズ さくらのレンタルサーバーをLet's Encryptでhttps対応(SSL対応) 「その6 リダイレクト(正規化)の設定。」 みなさんご機嫌いかがですか、久しぶりのレンタルサーバーforビギナーズです。...

さくらのレンサバをLet’s Encryptでhttps対応 その5

レンタルサーバーforビギナーズ さくらのレンタルサーバーをLet's Encryptでhttps対応(SSL対応) 「その5 SSL証明書をwwwありとwwwなしに設定する。」 みなさんご機嫌いかがですか、久しぶりのレンタルサーバーforビギナーズです。...

0コメント


電器屋Walkerの過去配信のBGMで利用させて頂いております。

ポッドキャスト品質向上、整音テクニック 解説Live

開催のお知らせ

詳細はこちら

国際ポッドキャストの日

International Podcast Day Event

ツキイチ - 隣のポッドキャスト

まとめファンサイト