Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


SmartPad4i RPGプログラムからメール送信する方法

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ルート上に配置してください。

SP4ISENDMAIL

IFSルート 上にファイルを配置するには、IFSルートの共有をするか、FTPでファイルをアップロードしてください。

FTPでアップロードする方法

FTPでアップロードする場合、SP4ISENDMAILフォルダをzip圧縮後、FTPでIBMiに転送して、jarコマンドを使用して展開してください。

Windows端末からコマンドプロンプトを起動して、以下のコマンドを実行します。

Windows FTPコマンド ログイン
ftp [IBMi IP Address]

ユーザー、パスワードを入力すると、IBMiのFTPサーバーに接続できます。

Windows FTPコマンド 設定変更
bin
quote site namefmt 1

binコマンドでバイナリーモードに変更します。
「quote site namefmt 1」はIFS領域にアクセスする際に指定します。

Windows FTPコマンド ファイルの転送
cd /

カレントディレクトリを / 「ルート」に指定後、putコマンドでファイルを転送します。

put C:\TEMP\SP4ISENDMAIL.zip

C:\TEMPフォルダにSP4ISENDMAIL.zipを配置している場合、上記のputコマンドでファイルをIBMiのIFSルートディレクトリに転送します。

Windows FTPコマンド リモートコマンドでzipファイルの展開
QUOTE RCMD QSH CMD('jar -xvf SP4ISENDMAIL.zip')

リモートコマンドを実行して SP4ISENDMAIL.zipを展開してください。

Windows FTPコマンド delファイルの削除
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モジュールと同階層にエラーログを出力できますので送信が失敗する場合は、エラーログを確認ください。