SmartPad4iでは、RPGプログラムからメール送信をする機能が用意されています。
SMTPサーバーへの接続設定と、RPGプログラムからAPIを呼び出すだけでメールが送信できるため非常に便利です。Tipsでは、SmartPad4iでのメール送信をご紹介します。
SmartPad4iのメール送信
SmartPad4iでは、SMTPサーバーが別途必要となりますが、IFS上に配置したファイルの設定と、RPGプログラムでの実装でメール送信が実現できます。
IBMiには、SMTPサーバーの機能もあるため、IBMiのSMTP設定を変更することでIBMiからメールを送信することも可能です。
IFS領域にjavaファイルを配置
SmartPad4iメディアに含まれている \CD-ROM Drive\Documents\SP4i V2サンプル\IFS\SP4ISENDMAILのフォルダごとIBMiのIFSルート上に配置してください。
IFSルート 上にファイルを配置するには、IFSルートの共有をするか、FTPでファイルをアップロードしてください。
FTPでアップロードする方法
FTPでアップロードする場合、SP4ISENDMAILフォルダをzip圧縮後、FTPでIBMiに転送して、jarコマンドを使用して展開してください。
Windows端末からコマンドプロンプトを起動して、以下のコマンドを実行します。
ftp [IBMi IP Address]
ユーザー、パスワードを入力すると、IBMiのFTPサーバーに接続できます。
bin
quote site namefmt 1
binコマンドでバイナリーモードに変更します。
「quote site namefmt 1」はIFS領域にアクセスする際に指定します。
cd /
カレントディレクトリを / 「ルート」に指定後、putコマンドでファイルを転送します。
put C:\TEMP\SP4ISENDMAIL.zip
C:\TEMPフォルダにSP4ISENDMAIL.zipを配置している場合、上記のputコマンドでファイルをIBMiのIFSルートディレクトリに転送します。
QUOTE RCMD QSH CMD('jar -xvf SP4ISENDMAIL.zip')
リモートコマンドを実行して SP4ISENDMAIL.zipを展開してください。
del SP4ISENDMAIL.zip
FTPのdelコマンドを実行してSP4ISENDMAIL.zipファイルを削除します。
アクセス接続権限の設定
IFS上に配置したSP4ISENDMAILのディレクトリにアクセス権を設定します。
RPGプログラムからアクセスできるように権限を設定してください。
以下のコマンドは、SP4ISENDMAILディレクトリ以下に対して、*PUBLIC (オブジェクトまたは権限リストに対する特定権限を持っていないユーザー)に R「読込み」、W「書込み」、X「実行」権限を割り当てるコマンドになります。
CHGAUT OBJ('/SP4ISENDMAIL') USER(*PUBLIC) DTAAUT(*RWX) OBJAUT(*ALL) SUBTREE(*ALL)
SMTPサーバー接続設定
SMTPサーバーの接続設定を SP4ISENDMAILディレクトリ内の「sp4isendmail.ini」で設定します。
- smtp_auth
SMTP認証が必要なSMTPサーバーの場合にはsmtp_auth=Yを設定 - smtp_host
SMTPサーバーのIPアドレスを設定 - smtp_port
SMTPサーバーのポート番号を設定 - smtp_user
SMTP認証をYに設定している場合、認証に使用するユーザーを設定 - smtp_password
SMTP認証のパスワードを設定 - debug
詳細なログを出力する設定
※SP4ISENDMAILディレクトリにError.txtが出力されます。
例)
[smtp_settings]
smtp_auth=N
smtp_host=192.168.0.21
smtp_port=25
//smtp_user=sample@migarotest.mail
//smtp_password=samplePassword
debug=N
debug=N をdebug=Yとしていただくことで詳細なログが出力されるようになります。
メールの送信が成功しない場合はdebug=Yを設定して、ログから問題点を確認してください。
RPGプログラムの実装
RPGプログラムからSOSENDMAIL APIを呼び出すことでメールが送信できます。
以下は、APIの使用例になります。
C* < 送信元 >
C MOVEL*BLANK SENDER256
C ' ':'@' XLATEIFROM SENDER
C* < 送信先 >
C MOVELITO MAILTO256 P
C MOVEL*BLANK MAILTO
C ' ':'@' XLATEITO MAILTO
C* < メールタイトル >
C MOVELISUBJ SUBJC 256 P
C* < メール本文 >
C MOVELITEXT MALTXT256 P
C* < 送信 >
C MOVEL@PAR,2 MALCMD 10 P
C* <SOSENDMAIL>
C CALL MALCMD
C PARM SENDER 送信元
C PARM MAILTO 送信先
C PARM SUBJC タイトル
C PARM '*NONE' ATTACH256 添付
C PARM 'TEXT' TYPE 4 メールタイプ
C PARM *BLANK TEMPLA256 テンプレート
C PARM 1 NBRLIG 30 エラー時追加情報
C PARM RETURN 50 結果
C PARM MALTXT メール本文
C ENDSR
** PAR
SAMPLE@SAMPLE.MAIL
SOSENDMAIL
RETURNフィールドに0が返却されると送信成功です。
IFS上のSP4Iモジュールと同階層にエラーログを出力できますので送信が失敗する場合は、エラーログを確認ください。