通知として処理する方法(連携先がメールワイズ以外の場合)

連携先がメールワイズ以外のシステムである場合の設定を説明します。
連携先側、サイボウズ 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環境の場合を例に説明します。

  1. サイボウズ Office側の準備をします。

    詳細は、サイボウズ Office側の設定を参照してください。

  2. 連携先のシステムをインストールしているサーバーにアクセスします。

  3. 作成したサンプルプログラムを、「smtp_sample.pl」の名前で任意のフォルダに保存します。

    例:

    C:\tmp\smtp_sample.pl

  4. 「jcode.pl」を、手順3と同じフォルダに保存します。

    例:

    C:\tmp\jcode.pl

  5. サンプルプログラムを実行環境に合わせて、編集します。

    パラメーター
    $server E-mailを送信するメールサーバー
    $to 通知メールを送信するユーザーのE-mailアドレス
    $from 通知メールの差出人のE-mailアドレス
    $subject 通知メールのタイトル
    $data 通知メールの本文
    X-Cybozu-Notify-App-URL 通知のリンク先
    X-Cybozu-Notify-App-Name 通知のカテゴリ名

  6. サンプルプログラムを実行します。

    例:

    C:\tmp > perl smtp_sample.pl

サイボウズ Office側の設定

連携先のシステムでの準備が完了したあと、次の手順でサイボウズ Office側の準備をします。

  1. システム設定で許可するドメインを設定します。

    詳細は、連携システムの登録を参照してください。

  2. システム設定で、連携システムからの通知を有効にします。

    1. システム設定画面で、 他システムとの連携をクリックします。
    2. 使用停止をクリックします。
    3. 「連携システムからの通知を使用しない」の選択を外し、設定するをクリックします。

  3. 個人設定で、連携システムからの通知を有効にします。

    ユーザーに次の設定を依頼してください。

    1. 個人設定画面で、 連携システムからの通知をクリックします。
    2. 「連携システムからの通知を使用しない」の選択を外し、設定するをクリックします。