    001/*
    002 * Copyright (c) 2009 The openGion Project.
    003 *
    004 * Licensed under the Apache License, Version 2.0 (the "License");
    005 * you may not use this file except in compliance with the License.
    006 * You may obtain a copy of the License at
    007 *
    008 *     http://www.apache.org/licenses/LICENSE-2.0
    009 *
    010 * Unless required by applicable law or agreed to in writing, software
    011 * distributed under the License is distributed on an "AS IS" BASIS,
    012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
    013 * either express or implied. See the License for the specific language
    014 * governing permissions and limitations under the License.
    015 */
    016package org.opengion.hayabusa.taglib;
    017
    018import org.opengion.hayabusa.common.HybsSystem;
    019import org.opengion.hayabusa.common.HybsSystemException;
    020//import org.opengion.hayabusa.resource.LDAPSearch;                                                             // 8.5.2.0 (2023/07/14) Delete
    021import org.opengion.hayabusa.mail.MailPattern;
    022import org.opengion.fukurou.db.DBUtil;
    023import org.opengion.fukurou.mail.MailTX;
    024import org.opengion.fukurou.util.StringUtil;
    025import org.opengion.fukurou.util.ToString;                                                                              // 6.1.1.0 (2015/01/17)
    026
    027import static org.opengion.fukurou.util.StringUtil.nval;
    028
    029import org.opengion.hayabusa.mail.MailModuleUtil;                                                               // 5.9.2.3 (2015/11/27)
    030
    031//import java.util.List;                                                                                                                // 8.5.2.0 (2023/07/14) Delete
    032
    033/**
    034 * ﾒｰﾙを送信するための簡易ﾀｸﾞです。
    035 *
    036 * Body 部に、ﾒｯｾｰｼﾞを記述します。
    037 *
    038 * @og.formSample
    039 * ●形式:&lt;og:mailSender from="…" to="…" subject="･･･"/&gt;
    040 * ●body:あり(EVAL_BODY_BUFFERED:BODYを評価し、{&#064;XXXX} を解析します)
    041 *
    042 * ●Tag定義:
    043 *   &lt;og:mailSender
    044 *       subject            【TAG】ﾀｲﾄﾙを指定します
    045 *       from               【TAG】送信元(FROM)ｱﾄﾞﾚｽを指定します
    046 *       to                 【TAG】送信先(TO)ｱﾄﾞﾚｽをCSV形式で指定します
    047 *       cc                 【TAG】送信先(CC)ｱﾄﾞﾚｽをCSV形式で指定します
    048 *       bcc                【TAG】送信先(ＢCC)ｱﾄﾞﾚｽをCSV形式で指定します
    049 *       replyTo            【TAG】返信先(replyTo)ｱﾄﾞﾚｽをCSV形式で指定します
    050 *       host               【TAG】ﾒｰﾙｻｰﾊﾞｰを指定します (初期値:COMMON_MAIL_SERVER[=])
    051 *       smtpPort           【TAG】SMTPﾎﾟｰﾄをCSV形式で指定します(初期値:SMTP_PORT)            // 5.8.1.1 (2014/11/14)
    052 *       authType           【TAG】認証方式            初期値:MAIL_SEND_AUTH                     // 5.8.1.1 (2014/11/14)
    053 *       authPort           【TAG】認証ﾎﾟｰﾄ            初期値:MAIL_SEND_AUTH_PORT              // 5.8.1.1 (2014/11/14)
    054 *       authUser           【TAG】認証ﾕｰｻﾞｰ           初期値:MAIL_SEND_AUTH_USER              // 5.8.1.1 (2014/11/14)
    055 *       authPass           【TAG】認証ﾊﾟｽﾜｰﾄﾞ         初期値:MAIL_SEND_AUTH_PASSWORD  // 5.8.1.1 (2014/11/14)
    056 *       useSSL             【TAG】SSL接続[false/true] 初期値:MAIL_SEND_USE_SSL                        // 6.3.8.0 (2015/09/11)
    057 *       charset            【TAG】文字ｴﾝｺｰﾃﾞｨﾝｸﾞを指定します(初期値:MAIL_DEFAULT_CHARSET[=ISO-2022-JP])
    058 *       fileURL            【TAG】添付ﾌｧｲﾙのｾｰﾌﾞﾃﾞｨﾚｸﾄﾘを指定します(初期値:FILE_URL[=filetemp/])
    059 *       filename           【TAG】添付ﾌｧｲﾙ名をCSV形式で指定します
    060 *  <del>useLDAP            【TAG】ﾒｰﾙｱﾄﾞﾚｽをLDAPを利用して取得するかどうか[true/false]を指定します(初期値:false)</del>
    061 *  <del>ldapKey            【TAG】ｱﾄﾞﾚｽを検索するｷｰを指定します(初期値:LDAP_MAILSEND_KEY[=uid] C社員番号)</del>
    062 *  <del>ldapVals           【TAG】LDAP検索時の属性名を指定します(初期値:LDAP_MAILSEND_VALS[=cn,mail])</del>
    063 *       useDB              【TAG】ﾒｰﾙｱﾄﾞﾚｽをDB(GE35)を利用して取得するかどうか[true/false]を指定します(初期値:false)
    064 *       useHistory         【TAG】GE32,34に送信履歴を保存するかどうか[true/false]を指定します(初期値:USE_MAILSENDER_HISTORY)
    065 *       debug              【TAG】ﾃﾞﾊﾞｯｸﾞ情報を出力するかどうか[true/false]を指定します(初期値:false)
    066 *   &gt;   ... Body ...
    067 *   &lt;/og:mailSender&gt;
    068 *
    069 * ●使用例
    070 *     &lt;og:mailSender from=&quot;C00000&quot; to=&quot;C99999&quot; subject=&quot;{&#064;SUBJECT}&quot; &gt;
    071 *          ﾒｰﾙ内容
    072 *     &lt;/og:mailSender &gt;
    073 *        charset   = ｷｬﾗｸﾀｾｯﾄ  (例:Windows-31J , ISO-2022-JP)
    074 *        from      = From       送信元
    075 *        to        = To         送信先(複数登録可能)
    076 *        cc        = Cc         送信先(複数登録可能)
    077 *        bcc       = Bcc        送信先(複数登録可能)
    078 *        replyTo   = ReplyTo    返信先先(複数登録可能)
    079 *        host      = SMTPｻｰﾊﾞｰ名
    080 *        smtpPort  = SMTPﾎﾟｰﾄ            初期値:SMTP_PORT                                         // 5.8.1.1 (2014/11/14)
    081 *        authType  = 認証方式            初期値:MAIL_SEND_AUTH                                        // 5.8.1.1 (2014/11/14)
    082 *        authPort  = 認証ﾎﾟｰﾄ            初期値:MAIL_SEND_AUTH_PORT                 // 5.8.1.1 (2014/11/14)
    083 *        authUser  = 認証ﾕｰｻﾞｰ           初期値:MAIL_SEND_AUTH_USER                 // 5.8.1.1 (2014/11/14)
    084 *        authPass  = 認証ﾊﾟｽﾜｰﾄﾞ         初期値:MAIL_SEND_AUTH_PASSWORD             // 5.8.1.1 (2014/11/14)
    085 *        useSSL    = SSL接続[false/true] 初期値:MAIL_SEND_USE_SSL                           // 6.3.8.0 (2015/09/11)
    086 *        subject   = ﾀｲﾄﾙ
    087 *        fileURL   = 添付ﾌｧｲﾙのｾｰﾌﾞﾃﾞｨﾚｸﾄﾘ
    088 *        filename  = 添付ﾌｧｲﾙ名(ﾛｰｶﾙにｾｰﾌﾞされたﾌｧｲﾙ名)(複数登録可能)
    089 *        debug     = true/false;
    090 *
    091 * 複数登録可能な個所は、CSV形式で、複数登録できます。
    092 * ｱﾄﾞﾚｽ(from,to,cc,bcc,replyTo)は、『"名称" &lt;ﾒｰﾙｱﾄﾞﾚｽ&gt;』形式が
    093 * 指定できます。&lt; と &gt; で囲まれた範囲がﾒｰﾙｱﾄﾞﾚｽになります。
    094 * 名称には、漢字が使用できます。
    095 *
    096 * host は、ｼｽﾃﾑﾊﾟﾗﾒｰﾀ の COMMON_MAIL_SERVER 属性が初期値で設定されます。
    097 * charset は、ｼｽﾃﾑﾊﾟﾗﾒｰﾀ の MAIL_DEFAULT_CHARSET 属性が初期値で設定されます。
    098 *
    099 * @og.rev 8.5.2.0 (2023/07/14) 一部の機能廃止による修正(問合・ﾄﾗﾌﾞﾙ 0200010980)
    100 * @og.group その他出力
    101 *
    102 * @version     4.0
    103 * @author      Kazuhiko Hasegawa
    104 * @since       JDK5.0,
    105 */
    106public class MailSenderTag extends CommonTagSupport {
    107        /** このﾌﾟﾛｸﾞﾗﾑのVERSION文字列を設定します。 {@value} */
    108        private static final String VERSION = "8.5.2.0 (2023/07/14)" ;
    109        private static final long serialVersionUID = 852020230714L ;
    110
    111        private transient MailTX mail ;
    112        private String          host    = HybsSystem.sys( "COMMON_MAIL_SERVER" );
    113        private String          charset = HybsSystem.sys( "MAIL_DEFAULT_CHARSET" );                     // 3.5.6.6 (2004/08/23)
    114        private String          from    ;
    115        private String[]        to              ;
    116        private String[]        cc              ;
    117        private String[]        bcc             ;
    118        private String[]        replyTo ;
    119        private String          subject ;
    120        private String[]        filename;
    121        private String          fileURL = HybsSystem.sys( "FILE_URL" );
    122
    123        private String          smtpPort= HybsSystem.sys( "SMTP_PORT" );                                        // 5.8.1.1 (2014/11/14)
    124        private String          authType= HybsSystem.sys( "MAIL_SEND_AUTH" );                           // 5.8.1.1 (2014/11/14)
    125        private String          authPort= HybsSystem.sys( "MAIL_SEND_AUTH_PORT" );                      // 5.8.1.1 (2014/11/14)
    126        private String          authUser= HybsSystem.sys( "MAIL_SEND_AUTH_USER" );                      // 5.8.1.1 (2014/11/14)
    127        private String          authPass= HybsSystem.sys( "MAIL_SEND_AUTH_PASSWORD" );          // 5.8.1.1 (2014/11/14)
    128        private boolean         useSSL  = HybsSystem.sysBool( "MAIL_SEND_USE_SSL" );            // 6.3.8.0 (2015/09/11)
    129        private boolean         useTLS  = HybsSystem.sysBool( "MAIL_SEND_USE_STARTTLS" );       // 5.9.29.2 (2018/02/16) STARTTLS対応(ｷｰﾜｰﾄﾞをVer5 にあわせます)
    130
    131//      private boolean         useLDAP ;                                                                                                       // 3.7.1.0 (2005/04/15) 8.5.2.0 (2023/07/14) Delete
    132//      // uid C社員番号、employeeNumber 社員番号
    133//      private String          ldapKey = HybsSystem.sys( "LDAP_MAILSEND_KEY" );                        // 5.6.7.0 (2013/07/27) 8.5.2.0 (2023/07/14) Delete
    134//      private String          ldapVals= HybsSystem.sys( "LDAP_MAILSEND_VALS" );                       // 5.6.7.0 (2013/07/27) 8.5.2.0 (2023/07/14) Delete
    135
    136        private boolean         useDB   ;                               // 5.6.9.3 (2013/10/25) GE35からﾒｰﾙｱﾄﾞﾚｽを取得
    137        private final String DBID       = HybsSystem.sys( "RESOURCE_DBID" );
    138
    139        /** ﾛｸﾞを残す設定 */
    140        private boolean         useHistory      = HybsSystem.sysBool( "USE_MAILSENDER_HISTORY" );       // 5.9.2.3 (2015/11/27)
    141        private String          message;
    142
    143        /**
    144         * ﾃﾞﾌｫﾙﾄｺﾝｽﾄﾗｸﾀｰ
    145         *
    146         * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
    147         */
    148        public MailSenderTag() { super(); }             // これも、自動的に呼ばれるが、空のﾒｿｯﾄﾞを作成すると警告されるので、明示的にしておきます。
    149
    150        /**
    151         * Taglibの開始ﾀｸﾞが見つかったときに処理する doStartTag() を ｵｰﾊﾞｰﾗｲﾄﾞします。
    152         *
    153         * @og.rev 6.3.8.0 (2015/09/11) SSL接続するかどうかを指定するﾊﾟﾗﾒｰﾀを追加します。
    154         * @og.rev 5.9.29.2 (2018/02/16) STARTTLS対応(ｷｰﾜｰﾄﾞをVer5 にあわせます)
    155         *
    156         * @return      後続処理の指示( EVAL_BODY_BUFFERED )
    157         */
    158        @Override
    159        public int doStartTag() {
    160//              mail = new MailTX( host,charset,smtpPort,authType,authPort,authUser,authPass,useSSL );                  // 6.3.8.0 (2015/09/11)
    161                mail = new MailTX( host,charset,smtpPort,authType,authPort,authUser,authPass,useTLS,useSSL );   // 5.9.29.2 (2014/11/14)
    162                return EVAL_BODY_BUFFERED ;     // Body を評価する。( extends BodyTagSupport 時)
    163        }
    164
    165        /**
    166         * Taglibのﾀｸﾞ本体を処理する doAfterBody() を ｵｰﾊﾞｰﾗｲﾄﾞします。
    167         *
    168         * @og.rev 3.1.1.0 (2003/03/28) ﾎﾞﾃﾞｨの内容を取得する処理を、CommonTagSupport で行う。
    169         * @og.rev 5.9.2.3 (2015/11/27) messageをｲﾝｽﾀﾝｽ変数に変更。
    170         *
    171         * @return      後続処理の指示(SKIP_BODY)
    172         */
    173        @Override
    174        public int doAfterBody() {
    175                message = getBodyString();                              // 5.9.2.3
    176
    177                mail.setMessage( message );
    178
    179                return SKIP_BODY ;
    180        }
    181
    182        /**
    183         * Taglibの終了ﾀｸﾞが見つかったときに処理する doEndTag() を ｵｰﾊﾞｰﾗｲﾄﾞします。
    184         *
    185         * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
    186         * @og.rev 3.7.1.0 (2005/04/15) LDAP検索 新規追加
    187         * @og.rev 5.6.9.3 (2013/10/25) 送信後に履歴を残す(history追加)。mailSender2同様、ここがｴﾗｰでもﾒｰﾙ送信は完了しているので注意。
    188         * @og.rev 5.9.3.0 (2015/12/04) useHistory対応
    189         * @og.rev 8.5.2.0 (2023/07/14) 一部の機能廃止による修正(問合・ﾄﾗﾌﾞﾙ 0200010980)
    190         *
    191         * @return      後続処理の指示
    192         */
    193        @Override
    194        public int doEndTag() {
    195                debugPrint();           // 4.0.0 (2005/02/28)
    196
    197//              // 3.7.1.0 (2005/04/15) LDAP検索 新規追加 8.5.2.0 (2023/07/14) Delete
    198//              if( useLDAP ) {
    199//                      final String[] vals = StringUtil.csv2Array( ldapVals );
    200//
    201//                      final LDAPSearch serch = new LDAPSearch();
    202//                      serch.setAttributes( vals );
    203//                      serch.init();
    204//
    205//                      from    = setLDAPAddress( serch,from    );
    206//                      to              = setLDAPAddress( serch,to              );
    207//                      cc              = setLDAPAddress( serch,cc              );
    208//                      bcc             = setLDAPAddress( serch,bcc             );
    209//                      replyTo = setLDAPAddress( serch,replyTo );
    210//              }
    211//              else if( useDB ){ // 5.6.9.3 (2013/10/25) GE35からﾒｰﾙｱﾄﾞﾚｽを取得
    212                        final String[] from_array = {from};
    213                        from    = getAddressArray( from_array )[0];
    214                        to              = getAddressArray( to           );
    215                        cc              = getAddressArray( cc           );
    216                        bcc             = getAddressArray( bcc          );
    217                        replyTo = getAddressArray( replyTo      );
    218//              }
    219
    220                mail.setFrom( from );
    221                mail.setTo( to );
    222                mail.setCc( cc );
    223                mail.setBcc( bcc );
    224                mail.setReplyTo( replyTo );
    225                mail.setSubject( subject );
    226                mail.setDebug( isDebug() );
    227
    228                String[] temp = null;
    229                if( filename != null && filename.length > 0 ) {
    230                        temp = new String[filename.length];
    231                        final String directory = HybsSystem.url2dir( fileURL );
    232                        for( int i=0; i<temp.length; i++ ) {
    233                                temp[i] = StringUtil.urlAppend( directory, filename[i] );
    234                        }
    235                        mail.setFilename( temp );
    236                }
    237
    238                mail.sendmail() ;
    239
    240                // 5.9.2.3 (2015/11/27) 送信後に履歴を残す(history追加)。mailSender2同様、ここがｴﾗｰでもﾒｰﾙ送信は完了しているので注意。
    241                if( useHistory ){
    242                        final MailModuleUtil mmu = new MailModuleUtil();
    243                        mmu.setInitParams( sys("SYSTEM_ID"), from, to, cc, bcc, message, subject, getUserInfo("ID"), getGUIInfoAttri("KEY") ,temp ); // 5.9.3.0
    244                        mmu.commitMailDB();
    245                }
    246
    247                return EVAL_PAGE ;
    248        }
    249
    250        /**
    251         * ﾀｸﾞﾘﾌﾞｵﾌﾞｼﾞｪｸﾄをﾘﾘｰｽします。
    252         * ｷｬｯｼｭされて再利用されるので、ﾌｨｰﾙﾄﾞの初期設定を行います。
    253         *
    254         * @og.rev 2.0.0.4 (2002/09/27) ｶｽﾀﾑﾀｸﾞの release() ﾒｿｯﾄﾞを、追加
    255         * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応。release2() を doEndTag()で呼ぶ。
    256         * @og.rev 3.7.1.0 (2005/04/15) LDAP検索 useLDAP,ldapKey,ldapVals 属性追加
    257         * @og.rev 5.6.7.0 (2013/07/27) ldapKey,ldapValsの取得をﾘｿｰｽに変更
    258         * @og.rev 5.6.9.3 (2013/10/25) useDB追加
    259         * @og.rev 5.8.1.1 (2014/11/14) ﾒｰﾙ送信時認証追加。smtpPort,authPort,authType,authUser,authPass
    260         * @og.rev 6.3.8.0 (2015/09/11) SSL接続するかどうかを指定するﾊﾟﾗﾒｰﾀを追加します。
    261         * @og.rev 5.6.9.3 (2013/10/25) 送信後に履歴を残す(history追加)。
    262         * @og.rev 5.9.29.2 (2018/02/16) STARTTLS対応(ｷｰﾜｰﾄﾞをVer5 にあわせます)
    263         * @og.rev 8.5.2.0 (2023/07/14) 一部の機能廃止による修正(問合・ﾄﾗﾌﾞﾙ 0200010980)
    264         */
    265        @Override
    266        protected void release2() {
    267                super.release2();
    268                mail            = null;
    269                host            = HybsSystem.sys( "COMMON_MAIL_SERVER" );
    270                charset         = HybsSystem.sys( "MAIL_DEFAULT_CHARSET" );                     // 3.5.6.6 (2004/08/23)
    271                from            = null;
    272                to                      = null;
    273                cc                      = null;
    274                bcc                     = null;
    275                replyTo         = null;
    276                subject         = null;
    277                fileURL         = HybsSystem.sys( "FILE_URL" );
    278                filename        = null;
    279//              useLDAP         = false;                                                                                        // 3.7.1.0 (2005/04/15) 8.5.2.0 (2023/07/14) Delete
    280//              ldapKey         = HybsSystem.sys( "LDAP_MAILSEND_KEY" );                        // 5.6.7.0 (2013/07/27) 8.5.2.0 (2023/07/14) Delete
    281//              ldapVals        = HybsSystem.sys( "LDAP_MAILSEND_VALS" );                       // 5.6.7.0 (2013/07/27) 8.5.2.0 (2023/07/14) Delete
    282                useDB           = false;                                                                                        // 5.6.9.3 (2013/10/25) GE35からﾒｰﾙｱﾄﾞﾚｽを取得
    283                smtpPort        = HybsSystem.sys( "SMTP_PORT" );                                        // 5.8.1.1 (2014/11/14)
    284                authType        = HybsSystem.sys( "MAIL_SEND_AUTH" );                           // 5.8.1.1 (2014/11/14)
    285                authPort        = HybsSystem.sys( "MAIL_SEND_AUTH_PORT" );                      // 5.8.1.1 (2014/11/14)
    286                authUser        = HybsSystem.sys( "MAIL_SEND_AUTH_USER" );                      // 5.8.1.1 (2014/11/14)
    287                authPass        = HybsSystem.sys( "MAIL_SEND_AUTH_PASSWORD" );          // 5.8.1.1 (2014/11/14)
    288                useHistory      = HybsSystem.sysBool( "USE_MAILSENDER_HISTORY" );       // 5.9.2.3 (2015/11/27)
    289                useTLS          = HybsSystem.sysBool( "MAIL_SEND_USE_STARTTLS" );       // 5.9.29.2 (2018/02/16)
    290                useSSL          = HybsSystem.sysBool( "MAIL_SEND_USE_SSL" );            // 6.3.8.0 (2015/09/11)
    291                message         = null;                                                                                         // 5.9.2.3 (2015/11/27)
    292        }
    293
    294//      /**
    295//       * LDAP を利用したﾒｰﾙｱﾄﾞﾚｽを設定し直します。
    296//       *
    297//       * LDAPより、ldapKeyをｷｰに、ldapVals を設定値として、読み込みます。
    298//       * 初期値は、ldapKeyは、uid(ﾕﾆｰｸID) ldapValsは、cn,mail(名前、ﾒｰﾙｱﾄﾞﾚｽ)となっています。
    299//       * from,to,cc,bcc,replyTo の設定値を、target にｾｯﾄして、検索します。
    300//       * 通常、このﾒｿｯﾄﾞは、useLDAP=true の場合に呼び出すように設定します。
    301//       * target が null か、ｾﾞﾛ文字列か ﾒｰﾙｱﾄﾞﾚｽ(ここでは、&#064; 文字を含むかどうかで判定)の場合、
    302//       * そのまま target を返します。
    303//       *
    304//       * @og.rev 3.7.1.0 (2005/04/15) LDAP検索 新規追加
    305//       * @og.rev 8.5.2.0 (2023/07/14) 一部の機能廃止による修正(問合・ﾄﾗﾌﾞﾙ 0200010980)
    306//       *
    307//       * @param       serch   LDAPSearchｵﾌﾞｼﾞｪｸﾄ
    308//       * @param       target  ldapKeyｷｰに対する設定値
    309//       *
    310//       * @return      ﾒｰﾙｱﾄﾞﾚｽ
    311//       * @see #setLDAPAddress( LDAPSearch serch, String[] targets )
    312//       */
    313//      private String setLDAPAddress( final LDAPSearch serch, final String target ) {
    314//              final String rtnAdrs ;
    315//
    316//              if( target != null && target.indexOf( '@' ) < 0 ) {
    317//                      final List<String[]> list = serch.search( ldapKey + "=" + target );
    318//                      if( list.size() == 1 ) {
    319//                              final String[] vals = list.get(0);
    320//                              if( ldapVals.indexOf(',') < 0 ) {       // 検索値が2つの場合でない
    321//                                      rtnAdrs = vals[0] ;                             // ﾒｰﾙｱﾄﾞﾚｽのみ
    322//                              }
    323//                              else {
    324//                                      rtnAdrs = vals[0] + "<" + vals[1] + ">" ;       // "名前<aaaa@bbbb>" 形式
    325//                              }
    326//                      }
    327//                      else {
    328//                              final String errMsg = "LDAP検索の結果、メールアドレスが見つかりませんでした。"
    329//                                                      + "設定値=[" + target + "] , 検索キー=[" + ldapKey + "] , 検索属性=["
    330//                                                      + ldapVals + "]" ;
    331//                              throw new HybsSystemException( errMsg );
    332//                      }
    333//              }
    334//              else {
    335//                      rtnAdrs = target;
    336//              }
    337//
    338//              return rtnAdrs ;
    339//      }
    340
    341//      /**
    342//       * LDAP を利用した複数のﾒｰﾙｱﾄﾞﾚｽを取得します。
    343//       *
    344//       * LDAPより、ldapKeyをｷｰに、ldapVals を設定値として、読み込みます。
    345//       * 初期値は、ldapKeyは、uid(ﾕﾆｰｸID) ldapValsは、cn,mail(名前、ﾒｰﾙｱﾄﾞﾚｽ)となっています。
    346//       * from,to,cc,bcc,replyTo の設定値を、target にｾｯﾄして、検索します。
    347//       * 通常、このﾒｿｯﾄﾞは、useLDAP=true の場合に呼び出すように設定します。
    348//       * target がﾒｰﾙｱﾄﾞﾚｽの場合、(ここでは、&#064; 文字を含むかどうかで判定)そのまま返します。
    349//       *
    350//       * @og.rev 3.7.1.0 (2005/04/26) LDAP検索 新規追加
    351//       * @og.rev 8.5.2.0 (2023/07/14) 一部の機能廃止による修正(問合・ﾄﾗﾌﾞﾙ 0200010980)
    352//       *
    353//       * @param       serch   LDAPSearchｵﾌﾞｼﾞｪｸﾄ
    354//       * @param       targets ldapKeyｷｰに対する設定値の配列
    355//       *
    356//       * @return      複数のﾒｰﾙｱﾄﾞﾚｽ配列
    357//       * @og.rtnNotNull
    358//       * @see #setLDAPAddress( LDAPSearch serch, String target )
    359//       */
    360//      private String[] setLDAPAddress( final LDAPSearch serch, final String[] targets ) {
    361//              // 6.1.1.0 (2015/01/17) 可変長引数でもnullは来る。
    362//              if( targets == null || targets.length == 0 ) { return targets; }
    363//
    364//              String[] rtn = new String[targets.length];
    365//
    366//              for( int i=0; i<targets.length; i++ ) {
    367//                      rtn[i] = setLDAPAddress( serch,targets[i] );
    368//              }
    369//              return rtn ;
    370//      }
    371
    372        /**
    373         * 【TAG】送信元(FROM)アドレスを指定します。
    374         *
    375         * @og.tag 送信元(FROM)アドレスを指定します。
    376         *
    377         * @param       fromAdrs        送信元(FROM)アドレス
    378         */
    379        public void setFrom( final String fromAdrs ) {
    380                from = nval( getRequestParameter( fromAdrs ), from );
    381        }
    382
    383        /**
    384         * 【TAG】送信先(TO)ｱﾄﾞﾚｽをCSV形式で指定します。
    385         *
    386         * @og.tag
    387         * 複数ｱﾄﾞﾚｽをCSV形式でｾｯﾄできます。
    388         *
    389         * @og.rev 3.5.6.2 (2004/07/05) 先に配列に分解してからﾘｸｴｽﾄ変数の値を取得
    390         * @og.rev 3.5.6.4 (2004/07/16) 先にﾘｸｴｽﾄ変数の値を取得してから配列に分解
    391         *
    392         * @param       toAdrs  送信先(TO)ｱﾄﾞﾚｽ(CSV形式)
    393         */
    394        public void setTo( final String toAdrs ) {
    395                to = StringUtil.csv2ArrayOnly( getRequestParameter( toAdrs ) );
    396        }
    397
    398        /**
    399         * 【TAG】送信先(CC)ｱﾄﾞﾚｽをCSV形式で指定します。
    400         *
    401         * @og.tag
    402         * 複数ｱﾄﾞﾚｽをCSV形式でｾｯﾄできます。
    403         *
    404         * @og.rev 3.5.6.2 (2004/07/05) 先に配列に分解してからﾘｸｴｽﾄ変数の値を取得
    405         * @og.rev 3.5.6.4 (2004/07/16) 先にﾘｸｴｽﾄ変数の値を取得してから配列に分解
    406         *
    407         * @param       ccAdrs  送信先(CC)ｱﾄﾞﾚｽ(CSV形式)
    408         */
    409        public void setCc( final String ccAdrs ) {
    410                cc = StringUtil.csv2ArrayOnly( getRequestParameter( ccAdrs ) );
    411        }
    412
    413        /**
    414         * 【TAG】送信先(BCC)ｱﾄﾞﾚｽをCSV形式で指定します。
    415         *
    416         * @og.tag
    417         * 複数ｱﾄﾞﾚｽをCSV形式でｾｯﾄできます。
    418         *
    419         * @og.rev 3.5.6.2 (2004/07/05) 先に配列に分解してからﾘｸｴｽﾄ変数の値を取得
    420         * @og.rev 3.5.6.4 (2004/07/16) 先にﾘｸｴｽﾄ変数の値を取得してから配列に分解
    421         *
    422         * @param       bccAdrs 送信先(BCC)ｱﾄﾞﾚｽ(CSV形式)
    423         */
    424        public void setBcc( final String bccAdrs ) {
    425                bcc = StringUtil.csv2ArrayOnly( getRequestParameter( bccAdrs ) );
    426        }
    427
    428        /**
    429         * 【TAG】返信先(replyTo)ｱﾄﾞﾚｽをCSV形式で指定します。
    430         *
    431         * @og.tag
    432         * 複数ｱﾄﾞﾚｽをCSV形式でｾｯﾄできます。
    433         *
    434         * @og.rev 3.5.6.6 (2004/08/23) 新規追加
    435         *
    436         * @param       replyToAdrs     返信先(replyTo)ｱﾄﾞﾚｽ(CSV形式)
    437         */
    438        public void setReplyTo( final String replyToAdrs ) {
    439                replyTo = StringUtil.csv2ArrayOnly( getRequestParameter( replyToAdrs ) );
    440        }
    441
    442        /**
    443         * 【TAG】ﾒｰﾙｻｰﾊﾞｰを指定します
    444         *        (初期値:COMMON_MAIL_SERVER[={@og.value SystemData#COMMON_MAIL_SERVER}])。
    445         *
    446         * @og.tag ﾒｰﾙｻｰﾊﾞｰを指定します。
    447         * (初期値:ｼｽﾃﾑ定数のCOMMON_MAIL_SERVER[={@og.value SystemData#COMMON_MAIL_SERVER}])。
    448         *
    449         * @og.rev 3.5.6.6 (2004/08/23) 初期値を考慮するように変更。
    450         *
    451         * @param       hst     ﾒｰﾙｻｰﾊﾞｰ
    452         * @see         org.opengion.hayabusa.common.SystemData#COMMON_MAIL_SERVER
    453         */
    454        public void setHost( final String hst ) {
    455                host = nval( getRequestParameter( hst ),host );
    456        }
    457
    458        /**
    459         * 【TAG】ﾀｲﾄﾙを指定します。
    460         *
    461         * @og.tag ﾀｲﾄﾙを指定します。
    462         *
    463         * @param       subjct  ﾀｲﾄﾙ
    464         */
    465        public void setSubject( final String subjct ) {
    466                this.subject = getRequestParameter( subjct );
    467        }
    468
    469        /**
    470         * 【TAG】添付ﾌｧｲﾙ名をCSV形式で指定します。
    471         *
    472         * @og.tag
    473         * 複数ﾌｧｲﾙをｾｯﾄできます。
    474         * 設定方法は、ｶﾝﾏで区切って並べ複数指定できます。
    475         *
    476         * @og.rev 3.5.6.6 (2004/08/23) 複数ﾌｧｲﾙ指定方法を、重複ﾘｸｴｽﾄからCSV形式に変更
    477         *
    478         * @param       fname   添付ﾌｧｲﾙ名(CSV形式)
    479         */
    480        public void setFilename( final String fname ) {
    481                filename = StringUtil.csv2ArrayOnly( getRequestParameter( fname ) );
    482        }
    483
    484        /**
    485         * 【TAG】文字ｴﾝｺｰﾃﾞｨﾝｸﾞを指定します
    486         *        (初期値:MAIL_DEFAULT_CHARSET[={@og.value SystemData#MAIL_DEFAULT_CHARSET}])。
    487         *
    488         * @og.tag
    489         * 文字ｴﾝｺｰﾃﾞｨﾝｸﾞは、ﾒｰﾙ本文に対するｴﾝｺｰﾃﾞｨﾝｸﾞ指定です。
    490         * これは、Windows-31J 、MS932、Shift_JIS のどれかが指定された場合、
    491         * 『指定の文字ｺｰﾄﾞ + 8bit 送信』します。
    492         * それ以外の指定は、『ISO-2022-JP に独自変換 + 7bit 送信』になります。
    493         * (初期値:ｼｽﾃﾑ定数のMAIL_DEFAULT_CHARSET[={@og.value SystemData#MAIL_DEFAULT_CHARSET}])。
    494         *
    495         * @param       chset   文字ｴﾝｺｰﾃﾞｨﾝｸﾞ
    496         * @see         org.opengion.hayabusa.common.SystemData#MAIL_DEFAULT_CHARSET
    497         */
    498        public void setCharset( final String chset ) {
    499                charset = nval( getRequestParameter( chset ),charset );
    500        }
    501
    502        /**
    503         * 【TAG】添付ﾌｧｲﾙのｾｰﾌﾞﾃﾞｨﾚｸﾄﾘを指定します
    504         *        (初期値:FILE_URL[={@og.value SystemData#FILE_URL}])。
    505         *
    506         * @og.tag
    507         * この属性で指定されるﾃﾞｨﾚｸﾄﾘに、添付ﾌｧｲﾙが存在すると仮定します。
    508         * 指定方法は、通常の fileURL 属性と同様に、先頭が、'/' (UNIX) または、2文字目が、
    509         * ":" (Windows)の場合は、指定のURLそのままのﾃﾞｨﾚｸﾄﾘに、そうでない場合は、
    510         * fileURL = "{&#064;USER.ID}" と指定すると、FILE_URL 属性で指定のﾌｫﾙﾀﾞの下に、
    511         * さらに、各個人ID別のﾌｫﾙﾀﾞを作成して、そこを使用します。
    512         * (初期値:ｼｽﾃﾑ定数のFILE_URL[={@og.value SystemData#FILE_URL}])。
    513         *
    514         * @og.rev 4.0.0.0 (2005/01/31) StringUtil.urlAppend ﾒｿｯﾄﾞの利用
    515         * @og.rev 4.0.0.0 (2007/11/20) 指定されたﾃﾞｨﾚｸﾄﾘ名の最後が"\"or"/"で終わっていない場合に、"/"を付加する。
    516         * @og.rev 6.4.2.1 (2016/02/05) URLの最後に、"/" を追加する処理を廃止。
    517         *
    518         * @param       url     添付ﾌｧｲﾙのｾｰﾌﾞﾃﾞｨﾚｸﾄﾘ
    519         * @see         org.opengion.hayabusa.common.SystemData#FILE_URL
    520         */
    521        public void setFileURL( final String url ) {
    522                final String furl = nval( getRequestParameter( url ),null );
    523                if( furl != null ) {
    524                        fileURL = StringUtil.urlAppend( fileURL,furl );
    525                }
    526        }
    527
    528//      /**
    529//       * 【TAG】メールアドレスをLDAPを利用して取得するかどうか[true/false]を指定します(初期値:false)。
    530//       *
    531//       * @og.tag
    532//       * LDAP のﾒｰﾙｱﾄﾞﾚｽを取得する場合は、true をｾｯﾄします。false の場合は、
    533//       * from,to,cc,bcc,replyTo の設定値がそのまま使用されます。
    534//       * 上記ｱﾄﾞﾚｽに、&#064; を含む場合は、LDAP を検索せず、ﾒｰﾙｱﾄﾞﾚｽとして
    535//       * そのまま使用します。LDAP の検索結果が存在しない場合は、不正なｱﾄﾞﾚｽとして、
    536//       * ｴﾗｰとします。
    537//       * 初期値は、false です。
    538//       *
    539//       * @og.rev 3.7.1.0 (2005/04/15) LDAP検索 新規追加
    540//       * @og.rev 8.5.2.0 (2023/07/14) 一部の機能廃止による修正(問合・ﾄﾗﾌﾞﾙ 0200010980)
    541//       *
    542//       * @param       useLDAP ﾒｰﾙｱﾄﾞﾚｽのLDAP利用 [true:利用する/false:利用しない]
    543//       */
    544//      public void setUseLDAP( final String useLDAP ) {
    545//              this.useLDAP = nval( getRequestParameter( useLDAP ),this.useLDAP );
    546//      }
    547
    548//      /**
    549//       * 【TAG】ｱﾄﾞﾚｽを検索するｷｰを指定します(初期値:uid C社員番号)。
    550//       *
    551//       * @og.tag
    552//       * LDAP のﾒｰﾙｱﾄﾞﾚｽを取得する場合の、検索するｷｰを指定します。
    553//       * from,to,cc,bcc,replyTo の設定値を、このｷｰにｾｯﾄして、検索します。
    554//       * uid C社員番号 、employeeNumber 社員番号 などが考えられます。
    555//       * 初期値は、uid(C社員番号)です。
    556//       * このｷｰで複数の検索結果が得られた場合は、ｴﾗｰとします。
    557//       *
    558//       * @og.rev 3.7.1.0 (2005/04/15) LDAP検索 新規追加
    559//       * @og.rev 8.5.2.0 (2023/07/14) 一部の機能廃止による修正(問合・ﾄﾗﾌﾞﾙ 0200010980)
    560//       *
    561//       * @param       ldapKey ｱﾄﾞﾚｽを検索するｷｰ
    562//       */
    563//      public void setLdapKey( final String ldapKey ) {
    564//              this.ldapKey = nval( getRequestParameter( ldapKey ),this.ldapKey );
    565//      }
    566
    567//      /**
    568//       * 【TAG】LDAP検索時の属性名を指定します(初期値:cn,mail)。
    569//       *
    570//       * @og.tag
    571//       * LDAPを検索する場合、"担当者名"&lt;ﾒｰﾙｱﾄﾞﾚｽ&gt;形式のﾒｰﾙｱﾄﾞﾚｽを作成する
    572//       * 場合、検索する属性値を指定します。
    573//       * ひとつならｱﾄﾞﾚｽ。2つなら名前とｱﾄﾞﾚｽの順で指定されたと認識します。
    574//       *
    575//       * @og.rev 3.7.1.0 (2005/04/15) LDAP検索 新規追加
    576//       * @og.rev 8.5.2.0 (2023/07/14) 一部の機能廃止による修正(問合・ﾄﾗﾌﾞﾙ 0200010980)
    577//       *
    578//       * @param       ldapVals        LDAP検索時の属性名
    579//       */
    580//      public void setLdapVals( final String ldapVals ) {
    581//              this.ldapVals = nval( getRequestParameter( ldapVals ),this.ldapVals );
    582//      }
    583
    584        /**
    585         * 【TAG】ﾒｰﾙｱﾄﾞﾚｽをGE35を利用して取得するかどうか[true/false]を指定します(初期値:false)。
    586         *
    587         * @og.tag
    588         * GE35からﾒｰﾙｱﾄﾞﾚｽを取得する場合は、true をｾｯﾄします。false の場合は、
    589         * from,to,cc,bcc,replyTo の設定値がそのまま使用されます。
    590         * 上記ｱﾄﾞﾚｽに、&#064; を含む場合は、DB を検索せず、ﾒｰﾙｱﾄﾞﾚｽとして
    591         * そのまま使用します。DB の検索結果が存在しない場合は、不正なｱﾄﾞﾚｽとして、
    592         * ｴﾗｰとします。
    593//       * useLDAPと同時に設定されている場合は、LDAP設定が優先されます。
    594         * 初期値は、false です。
    595         *
    596         * @og.rev 5.6.9.3 (2013/10/25) 新規追加
    597         *
    598         * @param       flag    ﾒｰﾙｱﾄﾞﾚｽのGE35利用 [true:利用する/false:利用しない]
    599         */
    600        public void setUseDB( final String flag ) {
    601                useDB = nval( getRequestParameter( flag ),useDB );
    602        }
    603
    604        /**
    605         * 【TAG】ﾒｰﾙ送信ﾎﾟｰﾄ番号をｾｯﾄします
    606         *        (初期値:ｼｽﾃﾑ定数のSMTP_PORT[={@og.value SystemData#SMTP_PORT}])。
    607         *
    608         * @og.tag
    609         * 初期値は、ｼｽﾃﾑ定数のSMTP_PORT を使用します。
    610         *
    611         * (初期値:ｼｽﾃﾑ定数のSMTP_PORT[={@og.value SystemData#SMTP_PORT}])。
    612         *
    613         * @og.rev 5.8.1.1 (2014/11/14) ﾒｰﾙ送信時認証｢POP_BEFORE_SMTP｣追加
    614         *
    615         * @param       port    SMTPﾎﾟｰﾄ
    616         */
    617        public void setSmtpPort( final String port ) {
    618                smtpPort = nval( getRequestParameter(port), smtpPort );
    619        }
    620
    621        /**
    622         * 【TAG】ﾒｰﾙ送信時認証方式をｾｯﾄします
    623         *        (初期値:ｼｽﾃﾑ定数のMAIL_SEND_AUTH[={@og.value SystemData#MAIL_SEND_AUTH}])。
    624         *
    625         * @og.tag
    626         * 認証を行う場合は｢POP_BEFORE_SMTP｣または、｢SMTP_AUTH｣が指定できます。
    627         * 認証時には認証ﾕｰｻﾞと認証ﾊﾟｽﾜｰﾄﾞを設定する必要があります。
    628         * 初期値は、ｼｽﾃﾑ定数のMAIL_SEND_AUTH を使用します。
    629         *
    630         * (初期値:ｼｽﾃﾑ定数のMAIL_SEND_AUTH[={@og.value SystemData#MAIL_SEND_AUTH}])。
    631         *
    632         * @og.rev 5.8.1.1 (2014/11/14) ﾒｰﾙ送信時認証｢POP_BEFORE_SMTP｣追加
    633         * @og.rev 6.2.4.1 (2015/05/22) SMTP_AUTH 対応。｢SMTP_AUTH｣追加(ｺﾒﾝﾄのみ修正)
    634         *
    635         * @param       type    認証方式
    636         */
    637        public void setAuthType( final String type ) {
    638                authType = nval( getRequestParameter(type), authType );
    639        }
    640
    641        /**
    642         * 【TAG】ﾒｰﾙ送信時認証ﾎﾟｰﾄをｾｯﾄします
    643         *        (初期値:ｼｽﾃﾑ定数のMAIL_SEND_AUTH_PORT[={@og.value SystemData#MAIL_SEND_AUTH_PORT}])。
    644         *
    645         * @og.tag
    646         * ｢POP_BEFORE_SMTP｣認証を行う場合に、POPｻｰﾊﾞｰに接続するﾎﾟｰﾄ番号を指定します。
    647         * 指定しない場合は、POP3ﾃﾞﾌｫﾙﾄﾎﾟｰﾄを使用します。
    648         * 初期値は、ｼｽﾃﾑ定数のMAIL_SEND_AUTH_PORT を使用します。
    649         *
    650         * (初期値:ｼｽﾃﾑ定数のMAIL_SEND_AUTH_PORT[={@og.value SystemData#MAIL_SEND_AUTH_PORT}])。
    651         *
    652         * @og.rev 5.8.1.1 (2014/11/14) ﾒｰﾙ送信時認証｢POP_BEFORE_SMTP｣追加
    653         *
    654         * @param       port    認証ﾎﾟｰﾄ
    655         */
    656        public void setAuthPort( final String port ) {
    657                authPort = nval( getRequestParameter(port), authPort );
    658        }
    659
    660        /**
    661         * 【TAG】ﾒｰﾙ送信認証ﾕｰｻﾞをｾｯﾄします
    662         *        (初期値:ｼｽﾃﾑ定数のMAIL_SEND_AUTH_USER[={@og.value SystemData#MAIL_SEND_AUTH_USER}])。
    663         *
    664         * @og.tag
    665         * 初期値は、ｼｽﾃﾑ定数のMAIL_SEND_AUTH_USER を使用します。
    666         *
    667         * (初期値:ｼｽﾃﾑ定数のMAIL_SEND_AUTH_USER[={@og.value SystemData#MAIL_SEND_AUTH_USER}])。
    668         *
    669         * @og.rev 5.8.1.1 (2014/11/14) ﾒｰﾙ送信時認証｢POP_BEFORE_SMTP｣追加
    670         *
    671         * @param       user    認証ﾕｰｻﾞ
    672         */
    673        public void setAuthUser( final String user ) {
    674                authUser = nval( getRequestParameter(user), authUser );
    675        }
    676
    677        /**
    678         * 【TAG】ﾒｰﾙ送信認証ﾊﾟｽﾜｰﾄﾞをｾｯﾄします
    679         *        (初期値:ｼｽﾃﾑ定数のMAIL_SEND_AUTH_PASSWORD[={@og.value SystemData#MAIL_SEND_AUTH_PASSWORD}])。
    680         *
    681         * @og.tag
    682         * 初期値は、ｼｽﾃﾑ定数のMAIL_SEND_AUTH_PASSWORD を使用します。
    683         *
    684         * (初期値:ｼｽﾃﾑ定数のMAIL_SEND_AUTH_PASSWORD[={@og.value SystemData#MAIL_SEND_AUTH_PASSWORD}])。
    685         *
    686         * @og.rev 5.8.1.1 (2014/11/14) ﾒｰﾙ送信時認証｢POP_BEFORE_SMTP｣追加
    687         *
    688         * @param       pass    認証ﾊﾟｽﾜｰﾄﾞ
    689         */
    690        public void setAuthPass( final String pass ) {
    691                authPass = nval( getRequestParameter(pass), authPass );
    692        }
    693
    694        /**
    695         * 【TAG】ﾒｰﾙ送信時のSTARTTLS利用の設定。
    696         *
    697         * @og.tag
    698         * 初期値は、ｼｽﾃﾑ定数のMAIL_SEND_USE_STARTTLSを使用します。
    699         *
    700         * (初期値:ｼｽﾃﾑ定数のMAIL_SEND_AUTH_USER[={@og.value org.opengion.hayabusa.common.SystemData#MAIL_SEND_USE_STARTTLS}])。
    701         *
    702         * @og.rev 5.9.29.2 (2018/02/16) STARTTLS対応(ｷｰﾜｰﾄﾞをVer5 にあわせます)
    703         *
    704         * @param       flag    TLS利用有無
    705         */
    706        public void setUseTLS( final String flag ) {
    707                useTLS =nval( getRequestParameter( flag ),useTLS);
    708        }
    709
    710        /**
    711         * 【TAG】SSL接続するかどうかをｾｯﾄします
    712         *        (初期値:ｼｽﾃﾑ定数のMAIL_SEND_USE_SSL[={@og.value SystemData#MAIL_SEND_USE_SSL}])。
    713         *
    714         * @og.tag
    715         * SSL接続する場合は、true を設定します。
    716         * (初期値:ｼｽﾃﾑ定数のMAIL_SEND_USE_SSL[={@og.value SystemData#MAIL_SEND_USE_SSL}])。
    717         *
    718         * @og.rev 6.3.8.0 (2015/09/11) SSL接続するかどうか
    719         *
    720         * @param       isSSL   SSL接続するかどうか [true:する/false:しない]
    721         */
    722        public void setUseSSL( final String isSSL ) {
    723                useSSL = nval( getRequestParameter(isSSL), useSSL );
    724        }
    725
    726        /**
    727         * 【TAG】履歴に残すかどうかをｾｯﾄします
    728         *        (初期値:ｼｽﾃﾑ定数のUSE_MAILSENDER_HISTORY[={@og.value SystemData#USE_MAILSENDER_HISTORY}])。
    729         *
    730         * @og.tag
    731         * 初期値は、ｼｽﾃﾑ定数のUSE_MAILSENDER_HISTORY を使用します。
    732         * trueを設定した場合、ｼｽﾃﾑID、送信元ｱﾄﾞﾚｽ、送信先ｱﾄﾞﾚｽ、ﾀｲﾄﾙ、本文について
    733         * GE32,34に履歴として保存されます。
    734         *
    735         * (初期値:ｼｽﾃﾑ定数のUSE_MAILSENDER_HISTORY[={@og.value SystemData#USE_MAILSENDER_HISTORY}])。
    736         *
    737         * @og.rev 5.9.2.3 (2015/11/27) 追加
    738         *
    739         * @param       flag    履歴に残すかどうか [true:残す/false:残さない]
    740         */
    741        public void setUseHistory( final String flag ) {
    742                useHistory = nval( getRequestParameter( flag ), useHistory );
    743        }
    744
    745        /**
    746         * 引数のｱﾄﾞﾚｽ配列を社員ﾏｽﾀ（GE35)で変換して返します。
    747         * ｸﾞﾙｰﾌﾟIDは利用しません。
    748         *
    749         * @og.rev 5.6.9.3 (2013/10/25) 新規追加
    750         *
    751         * @param       src     引数配列(可変長引数)
    752         * @return      変換後ｱﾄﾞﾚｽ配列
    753         * @og.rtnNotNull
    754         */
    755        public String[] getAddressArray( final String... src ){
    756                if( src == null || src.length == 0 ) { return src; }            // 6.1.1.0 (2015/01/17) 可変長引数でもnullは来る。
    757
    758                String[] rtn= src.clone();
    759
    760                for( int i=0; i<src.length; i++ ){
    761                        String addr = src[i];                                                   // 宛先ID
    762                        final String[] userAddr = getUserAddr( addr );
    763                        if( userAddr != null && userAddr.length > 0 ){
    764                                // 6.4.1.1 (2016/01/16) PMD refactoring. Avoid if (x != y) ..; else ..;
    765                                addr = userAddr[MailPattern.GE35_NAME] == null
    766                                                        ? userAddr[MailPattern.GE35_MAIL]
    767                                                        : userAddr[MailPattern.GE35_NAME] + "<" + userAddr[MailPattern.GE35_MAIL] + ">";
    768
    769                                rtn[i] = addr;
    770                        }
    771                }
    772
    773                return rtn;
    774        }
    775
    776        /**
    777         * 社員ﾏｽﾀより名前、ﾒｰﾙｱﾄﾞﾚｽを取得します。
    778         * 戻り値 rtn[0]:ﾕｰｻﾞｰ名、rtn[1]:ﾕｰｻﾞｰﾒｰﾙｱﾄﾞﾚｽ
    779         *
    780         * @og.rev 5.6.9.3 (2013/10/25) mailSenderでもGE35を扱う。
    781         * @og.rev 6.4.1.1 (2016/01/16) selGE35 → SEL_GE35 refactoring
    782         *
    783         * @param       userId  ﾕｰｻﾞｰID
    784         * @return      配列文字列(rtn[0]:ﾕｰｻﾞｰ名、rtn[1]:ﾕｰｻﾞｰﾒｰﾙｱﾄﾞﾚｽ)
    785         */
    786        private String[] getUserAddr( final String userId ){
    787                String[] rtn = null;
    788
    789                if( userId.contains( "@" ) ) {
    790                        rtn = new String[2];
    791                        rtn[0] = "";
    792                        rtn[1] = userId;
    793                }
    794                else {
    795                        final String[] ge35SelArgs = { userId };
    796                        final String[][] ge35Datas = DBUtil.dbExecute( MailPattern.SEL_GE35,ge35SelArgs,getApplicationInfo(), DBID );   // 6.4.1.1 (2016/01/16) selGE35 → SEL_GE35 refactoring
    797                        if( ge35Datas.length > 0) {
    798                                rtn = ge35Datas[0];
    799                        }
    800                        else {
    801                                final String errMsg = "ユーザー情報取得できません。ユーザーID:" + userId ;
    802                                throw new HybsSystemException( errMsg );
    803                        }
    804                }
    805                return rtn;
    806        }
    807
    808        /**
    809         * このｵﾌﾞｼﾞｪｸﾄの文字列表現を返します。
    810         * 基本的にﾃﾞﾊﾞｯｸﾞ目的に使用します。
    811         *
    812         * @og.rev 5.6.9.3 (2013/10/25) useDBの対応
    813         *
    814         * @return      このｸﾗｽの文字列表現
    815         * @og.rtnNotNull
    816         */
    817        @Override
    818        public String toString() {
    819                return ToString.title( this.getClass().getName() )
    820                                .println( "VERSION"             ,VERSION        )
    821                                .println( "host"                ,host           )
    822                                .println( "charset"             ,charset        )
    823                                .println( "from"                ,from           )
    824                                .println( "to"                  ,to                     )
    825                                .println( "cc"                  ,cc                     )
    826                                .println( "bcc"                 ,bcc            )
    827                                .println( "replyTo"             ,replyTo        )
    828                                .println( "subject"             ,subject        )
    829                                .println( "filename"    ,filename       )
    830                                .println( "fileURL"             ,fileURL        )
    831//                              .println( "useLDAP"             ,useLDAP        )                                                       // 8.5.2.0 (2023/07/14) Delete
    832//                              .println( "ldapKey"             ,ldapKey        )                                                       // 8.5.2.0 (2023/07/14) Delete
    833//                              .println( "ldapVals"    ,ldapVals       )                                                       // 8.5.2.0 (2023/07/14) Delete
    834                                .println( "useDB"               ,useDB          )                                                       // 5.6.9.3 (2013/10/25)
    835                                .println( "useHistory"  ,useHistory     )                                                       // 5.9.2.3 (2015/11/27)
    836                                .println( "Other..."    ,getAttributes().getAttribute() )
    837                                .fixForm().toString() ;
    838        }
    839}