通知として処理する方法(連携先がデヂエやメールワイズ以外の場合)
連携先が、デヂエやメールワイズ以外のシステムである場合の設定を説明します。
連携先側、サイボウズ Office側、それぞれで準備が必要です。
サイボウズ製品以外の連携システム側の設定
通知メールを、通知として処理するには、システムから送信される通知メールのヘッダーに、サイボウズ Office側の処理に必要な特殊なヘッダーを設定する必要があります。
下記で説明するヘッダーやメール形式の仕様と、サンプルプログラムのソースコードを参照し、必要なプログラムをお客様自身で準備する必要があります。
処理に必要なヘッダー
連携システムからの通知では、通知の表示に、通知内の情報を表示する仕様です。
- 「連携システムからの通知」画面の例:
システムからの通知メールのヘッダーに、次の情報を設定します。「X-Cybozu-Notify-App-Name」と「X-Cybozu-Notify-App-URL」は必須項目です。必ず設定してください。
ヘッダー名 | 概要 | 説明 |
---|---|---|
X-Cybozu-Notify-App-Name | 製品名 | 製品名を設定するヘッダーです。 通知は製品名ごとにカテゴリ分けできるため、システム名などを設定すると便利です。 半角、全角の区別なく設定できます。 |
X-Cybozu-Notify-App-Ver | 製品バージョン | 製品のバージョン情報を設定するヘッダーです。 バージョン情報を管理する場合に使用します。 |
X-Cybozu-Notify-App-UniqueID | 通知の識別ID | 通知の識別 IDを設定するヘッダーです。 通知の識別 IDは、通知の重複チェックに使用します。 重複した通知があった場合、E-mailの送信時刻(「X-Cybozu-Notify-Date」が設定されている場合は、「X-Cybozu-Notify-Date」の時刻を優先)をもとに、最新 のものに上書きします。 このヘッダーを省略した場合は、「X-Cybozu-Notify-App-URL」(リンク先URL)に設定された文字列を識別ID とします。 |
X-Cybozu-Notify-App-URL | リンク先URL | 通知のリンク先URLを設定するヘッダーです。 通知メールに「X-Cybozu-Notify-App-UniqueID」が設定されていない場合は、このヘッダーに設定されている文字列が通知の識別IDになります。その際、「#」以降の文字列は無視されます。 |
X-Cybozu-Notify-Date | 受信日時 | 受信日時を設定するヘッダーです。通知の新旧を比較する際に使用します。 通知の識別IDが重複する通知が、既に最新情報に表示されている場合、受信日時が新しい通知が優先されます。 このヘッダーを省略した場合は、メールヘッダー「Date」を受信日時とします。 |
X-Cybozu-Notify-Name | 送信者名 | 通知の送信者名を設定するヘッダーです。 このヘッダーを省略した場合は、メールヘッダー「From」を通知の送信者名とします。 |
X-Cybozu-Notify-Subject | 標題 | 通知の標題を設定するヘッダーです。 このヘッダーを省略した場合は、メールヘッダー「Subject」を通知の標題とします。 |
X-Cybozu-Notify-Abstract | 内容 | 通知の内容を設定するヘッダーです。 このヘッダーを省略した場合は、メールの本文を通知の内容とします。 |
X-Cybozu-Notify-Version | 通知メールバージョン | 通知のバージョンを設定するヘッダーです。 |
X-Cybozu-Notify-Icon-URL | アイコンURL | 通知のアイコン用URLです。 省略した場合は、外部通知用に組み込まれている 「notify16.png」が通知アイコンとして指定されます。 アイコンを別途作成する場合は、アイコンサイズは「16×16」を推奨します。 |
通知メールの形式
連携先のシステムからの通知メールは、次の形式で設定してください。
項目 | 値 |
---|---|
Content-Type | text/plain |
charset | JIS(iso-2022-jp)、us-ascii |
Content-Transfer-Encoding | 7bit、base64、quote-printable |
サンプルプログラムのソースコード(Perl)
特殊ヘッダーを含む通知メールを送信するためのサンプルプログラムのソースコード(Perl)を紹介します。
このソースコードをもとに、サンプルプログラムを作成します。
# ------------------------------------------------------- #
# 【Program name 】smtp_sample.pl
# ------------------------------------------------------- #
use Socket;
require './jcode.pl';
# SMTP サーバー名(IP アドレス)
$server = '××.co.jp' ;
# 宛先、送信元、題名、送信データ
$to = '××@××.co.jp' ;
$from = '××@××.co.jp' ;
$subject = '連携システムからの通知サンプル' ;
$data = '連携システムからの通知のサンプルです' ;
# ------------------------------------------------------- #
# ヘッダー、データ部の作成
# ------------------------------------------------------- #
$send_data = 'X-Mailer: SMTP Samle' . "\r\n";
$send_data .= 'MIME-Version: 1.0' . "\r\n";
$send_data .= 'Content-Type: text/plain; charset=iso-2022-jp' . "\r\n";
$send_data .= 'From: '. $from . '<'. $from .'>' . "\r\n";
$send_data .= 'To: '. $to . "\r\n";
$send_data .= 'Subject: ' . $subject . "\r\n";
#Cybozu 拡張ヘッダー
$send_data .= 'X-Cybozu-Notify-App-Name:Sample' . "\r\n";
$send_data .= 'X-Cybozu-Notify-App-UniqueID:Sample-notify-1' . "\r\n";
$send_data .= 'X-Cybozu-Notify-App-URL:http://www.cybozu.co.jp' . "\r\n";
$send_data .= 'X-Cybozu-Notify-App-Name:Sample' . "\r\n";
$send_data .= "\r\n";
$send_data .= $data;
# ------------------------------------------------------- #
# SOCKET の作成
# ------------------------------------------------------- #
# 接続のための準備
$port = getservbyname('smtp','tcp');
$struct = sockaddr_in($port,inet_aton($server));
socket(SH, PF_INET, SOCK_STREAM, 0) || die("ソケットエラー$!") ;
# 接続
connect(SH, $struct ) || die("接続失敗$!") ;
select(SH); $| = 1; select(STDOUT);
$respons = <SH> ;
unless($respons =~ /^220/)
{
close(SH); die("接続失敗$!") ;
}
# ------------------------------------------------------- #
# コマンドの送信
# ------------------------------------------------------- #
# HELO コマンドの作成、送信
$command = "HELO $server\r\n";
print SH $command ;
$respons = <SH>;
&decode(\$respons) ;
unless($respons =~ /^250/)
{
close(SH); die("Command:HELO ・・・FAIL $!") ;
}
# MAIL コマンドの作成、送信
$command = "MAIL FROM:$from\r\n";
print SH $command ;
$respons = <SH>;
&decode(\$respons) ;
unless($respons =~ /^250/)
{
print SH "RSET\r\n"; close(SH);
die("Command:MAIL・・・FAIL $!") ;
}
# RCPT コマンドの作成、送信
$command = "RCPT TO:$to\r\n";
print SH $command ;
$respons = <SH>;
&decode(\$respons) ;
unless($respons =~ /^25[0|1]/)
{
print SH "RSET\r\n"; close(SH);
die("Command:RCPT・・・FAIL $!") ;
}
# DATA コマンドの作成、送信
$command = "DATA\r\n";
print SH $command ;
$respons = <SH>;
&decode(\$respons) ;
unless($respons =~ /^354/){
print SH "RSET\r\n"; close(SH);
die("Command:DATA・・・FAIL $!") ;
}
# ------------------------------------------------------- #
# ヘッダー、本文の送信
# ------------------------------------------------------- #
# 文字コードの変換
&jcode'convert(*send_data,'jis');
# コマンドの作成、送信
$command = "$send_data\r\n.\r\n";
print SH $command ;
$respons = <SH>;
&decode(\$respons) ;
unless($respons =~ /^250/){
print SH "RSET\n"; close(SH);
die("本文、ヘッダーの送信失敗$!") ;
}
# QUIT コマンドの作成、送信
$command = "QUIT\n";
print SH $command ;
#切断
close(SH); select(STDOUT);
print "MAIL は正常に送信されました。\n";
# ------------------------------------------------------- #
# 改行コード変換
# ------------------------------------------------------- #
sub decode{
my $inf = $_[0];
$$inf =~ s/\x0D\x0A|\x0D|\x0A/\n/g;
}
サンプルプログラムを実行する
サイボウズ Office側の準備が完了したあと、サンプルプログラムを実行します。
サンプルプログラムを実行するのに必要な環境とモジュールは、次のとおりです。
- Perlがインストールされている環境
- 文字コード変換ライブラリ(jcode.pl)
ActivePerlがインストールされたWindows環境の場合を例に説明します。
-
サイボウズ Office側の準備をします。
詳細は、サイボウズ Office側の設定を参照してください。 -
連携先のシステムをインストールしているサーバーにアクセスします。
-
作成したサンプルプログラムを、「smtp_sample.pl」の名前で任意のフォルダに保存します。
例:
C:\tmp\smtp_sample.pl
-
「jcode.pl」を、手順3と同じフォルダに保存します。
例:
C:\tmp\jcode.pl
-
サンプルプログラムを実行環境に合わせて、編集します。
パラメーター 値 $server E-mailを送信するメールサーバー $to 通知メールを送信するユーザーのE-mailアドレス $from 通知メールの差出人のE-mailアドレス $subject 通知メールのタイトル $data 通知メールの本文 X-Cybozu-Notify-App-URL 通知のリンク先 X-Cybozu-Notify-App-Name 通知のカテゴリ名 -
サンプルプログラムを実行します。
例:
C:\tmp > perl smtp_sample.pl
サイボウズ Office側の設定
連携先のシステムでの準備が完了したあと、次の手順でサイボウズ Office側の準備をします。
-
システム設定で許可するドメインを設定します。
詳細は、連携システムの登録を参照してください。 -
システム設定で、連携システムからの通知を有効にします。
- システム設定画面で、
他システムとの連携をクリックします。
-
使用停止をクリックします。
- 「連携システムからの通知を使用しない」の選択を外し、設定するをクリックします。
- システム設定画面で、
-
個人設定で、連携システムからの通知を有効にします。
ユーザーに次の設定を依頼してください。
- 個人設定画面で、
連携システムからの通知をクリックします。
- 「連携システムからの通知を使用しない」の選択を外し、設定するをクリックします。
- 個人設定画面で、