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 */
016 package org.opengion.hayabusa.taglib;
017
018 import org.opengion.hayabusa.common.HybsSystem;
019 import org.opengion.hayabusa.common.HybsSystemException;
020 import org.opengion.hayabusa.resource.LDAPSearch;
021 import org.opengion.fukurou.db.DBUtil;
022 import org.opengion.fukurou.mail.MailTX;
023 import org.opengion.fukurou.util.StringUtil;
024 // import org.opengion.hayabusa.mail.AbstractMailManager;
025 import org.opengion.hayabusa.mail.MailPattern;
026
027 import static org.opengion.fukurou.util.StringUtil.nval ;
028
029 import java.util.List;
030 import java.io.ObjectOutputStream;
031 import java.io.ObjectInputStream;
032 import java.io.IOException;
033
034 /**
035 * メールをé?信するための簡易タグですã?
036 *
037 * Body 部に、メãƒ?‚»ージを記述しますã?
038 *
039 * @og.formSample
040 * ●形式ï¼?lt;og:mailSender from="…" to="…" subject="?¥?¥?¥"/>
041 * ●body?šあã‚?EVAL_BODY_BUFFERED:BODYを評価しã?{@XXXX} を解析しまã�?
042 *
043 * ●Tag定義??
044 * <og:mailSender
045 * subject 【TAG】タイトルを指定しまã�?
046 * from 【TAG】é?信å…??¦?²?¯?)アドレスを指定しまã�?
047 * to 【TAG】é?信å…??´?¯)アドレスをCSV形式でæŒ?®šしまã�?
048 * cc 【TAG】é?信å…??£?£)アドレスをCSV形式でæŒ?®šしまã�?
049 * bcc 【TAG】é?信å…??¢?£?£)アドレスをCSV形式でæŒ?®šしまã�?
050 * replyTo 【TAG】返信å…?replyTo)アドレスをCSV形式でæŒ?®šしまã�?
051 * host 【TAG】メールサーバã?を指定しまã�?(初期値:COMMON_MAIL_SERVER[=])
052 * smtpPort 【TAG】SMTPポã?トをCSV形式でæŒ?®šしまã�?初期値:SMTP_PORT) // 5.8.1.1 (2014/11/14)
053 * authType 【TAG】認証方å¼? 初期値:MAIL_SEND_AUTH // 5.8.1.1 (2014/11/14)
054 * authPort 【TAG】認証ポã?ãƒ? 初期値:MAIL_SEND_AUTH_PORT // 5.8.1.1 (2014/11/14)
055 * authUser 【TAG】認証ユーザー 初期値:MAIL_SEND_AUTH_USER // 5.8.1.1 (2014/11/14)
056 * authPass 【TAG】認証パスワーãƒ? 初期値:MAIL_SEND_AUTH_PASSWORD // 5.8.1.1 (2014/11/14)
057 * charset 【TAG】文字エンコーãƒ?‚£ングを指定しまã�?(初期値:MAIL_DEFAULT_CHARSET[=ISO-2022-JP])
058 * fileURL 【TAG】添付ファイルのセーブディレクトリを指定しまã�?(初期値:FILE_URL[=filetemp/])
059 * filename 【TAG】添付ファイル名をCSV形式でæŒ?®šしまã�?
060 * useLDAP 【TAG】メールアドレスをLDAPを利用して取得するかどã�?�‹[true/false]を指定しまã�?初期値:false)
061 * ldapKey 【TAG】アドレスを検索するキーを指定しまã�?初期値:LDAP_MAILSEND_KEY[=uid] C社員番号)
062 * ldapVals 【TAG】LDAP検索時ã?属æ?名をæŒ?®šしまã�?初期値:LDAP_MAILSEND_VALS[=cn,mail])
063 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
064 * > ... Body ...
065 * </og:mailSender>
066 *
067 * ●使用ä¾?
068 * <og:mailSender from="C00000" to="C99999" subject="{@SUBJECT}" >
069 * メールå†?®¹
070 * </og:mailSender >
071 *
072 * charset = キャラクタセãƒ?ƒˆ (例:Windows-31J , ISO-2022-JP)
073 * from = From 送信å…?
074 * to = To 送信å…?è¤?•°登録可能)
075 * cc = Cc 送信å…?è¤?•°登録可能)
076 * bcc = Bcc 送信å…?è¤?•°登録可能)
077 * replyTo = ReplyTo 返信先å?(è¤?•°登録可能)
078 * useLDAP = false/true メールアドレスをLDAPを利用して取得するかどã�?�‹
079 * ldapKey = "uid" アドレスを検索するキー(初期値:シスãƒ?ƒ リソース C社員番号)
080 * ldapVals = "cn,mail" LDAP検索時ã?属æ?名ã?ひとつならアドレス。2つなら名前とアドレス
081 * host = SMTPサーバã?å�?
082 * smtpPort = SMTPポã?ãƒ? 初期値:SMTP_PORT // 5.8.1.1 (2014/11/14)
083 * authType = 認証方å¼? 初期値:MAIL_SEND_AUTH // 5.8.1.1 (2014/11/14)
084 * authPort = 認証ポã?ãƒ? 初期値:MAIL_SEND_AUTH_PORT // 5.8.1.1 (2014/11/14)
085 * authUser = 認証ユーザー 初期値:MAIL_SEND_AUTH_USER // 5.8.1.1 (2014/11/14)
086 * authPass = 認証パスワーãƒ? 初期値:MAIL_SEND_AUTH_PASSWORD // 5.8.1.1 (2014/11/14)
087 * subject = タイトル
088 * fileURL = 添付ファイルのセーブディレクトリ
089 * filename = 添付ファイルå�?ローカルにセーブされたファイルå�?(è¤?•°登録可能)
090 * debug = true/false;
091 *
092 * è¤?•°登録可能な個所は、カンマ区åˆ?‚Šで、è¤?•°登録できますã?
093 * アドレス(from,to,cc,bcc,replyTo)は、ã?"名称" <メールアドレス>』形式が
094 * æŒ?®šできますã?< と > で囲まれたç¯?›²がメールアドレスになりますã?
095 * 名称には、漢字が使用できますã?
096 *
097 * host は、シスãƒ?ƒ パラメータ の COMMON_MAIL_SERVER 属æ?がå?期å?で設定されますã?
098 * charset は、シスãƒ?ƒ パラメータ の MAIL_DEFAULT_CHARSET 属æ?がå?期å?で設定されますã?
099 *
100 * @og.group そã?他å?åŠ?
101 *
102 * @version 4.0
103 * @author Kazuhiko Hasegawa
104 * @since JDK5.0,
105 */
106 public class MailSenderTag extends CommonTagSupport {
107 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
108 private static final String VERSION = "5.8.1.1 (2014/11/14)" ;
109
110 private static final long serialVersionUID = 581120141114L ;
111
112 private transient MailTX mail = null;
113 private String host = HybsSystem.sys( "COMMON_MAIL_SERVER" );
114 private String charset = HybsSystem.sys( "MAIL_DEFAULT_CHARSET" ); // 3.5.6.6 (2004/08/23)
115 private String from = null;
116 private String[] to = null;
117 private String[] cc = null;
118 private String[] bcc = null;
119 private String[] replyTo = null;
120 private String subject = null;
121 private String[] filename = null;
122 private String fileURL = HybsSystem.sys( "FILE_URL" );
123
124 private String smtpPort = HybsSystem.sys( "SMTP_PORT" ); // 5.8.1.1 (2014/11/14)
125 private String authType = HybsSystem.sys( "MAIL_SEND_AUTH" ); // 5.8.1.1 (2014/11/14)
126 private String authPort = HybsSystem.sys( "MAIL_SEND_AUTH_PORT" ); // 5.8.1.1 (2014/11/14)
127 private String authUser = HybsSystem.sys( "MAIL_SEND_AUTH_USER" ); // 5.8.1.1 (2014/11/14)
128 private String authPass = HybsSystem.sys( "MAIL_SEND_AUTH_PASSWORD" ); // 5.8.1.1 (2014/11/14)
129
130 private boolean useLDAP = false; // 3.7.1.0 (2005/04/15)
131 // uid C社員番号 、employeeNumber 社員番号
132 // private String ldapKey = "uid"; // 3.7.1.0 (2005/04/26)
133 // private String ldapVals= "cn,mail"; // 3.7.1.0 (2005/04/15)
134 private String ldapKey = HybsSystem.sys( "LDAP_MAILSEND_KEY" ); // 5.6.7.0 (2013/07/27)
135 private String ldapVals= HybsSystem.sys( "LDAP_MAILSEND_VALS" ); // 5.6.7.0 (2013/07/27)
136
137 private boolean useDB = false; // 5.6.9.3 (2013/10/25) GE35からメールアドレスを取å¾?
138 private final String DBID = HybsSystem.sys( "RESOURCE_DBID" );
139
140 /**
141 * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
142 *
143 * @return 後続å?ç�??æŒ?¤º( EVAL_BODY_BUFFERED )
144 */
145 @Override
146 public int doStartTag() {
147 // mail = new MailTX( host,charset );
148 mail = new MailTX( host,charset,smtpPort,authType,authPort,authUser,authPass ); // 5.8.1.1 (2014/11/14)
149 return( EVAL_BODY_BUFFERED ); // Body を評価するã€? extends BodyTagSupport æ™?
150 }
151
152 /**
153 * Taglibのタグ本体を処ç�?�™ã‚?doAfterBody() ã‚?オーバã?ライドしますã?
154 *
155 * @og.rev 3.1.1.0 (2003/03/28) ボディのå†?®¹を取得するå?ç�?‚’、CommonTagSupport で行うã€?
156 *
157 * @return 後続å?ç�??æŒ?¤º(SKIP_BODY)
158 */
159 @Override
160 public int doAfterBody() {
161 String message = getBodyString();
162
163 mail.setMessage( message );
164
165 return(SKIP_BODY);
166 }
167
168 /**
169 * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
170 *
171 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
172 * @og.rev 3.7.1.0 (2005/04/15) LDAP検索 新規追åŠ?
173 * @og.rev 5.6.9.3 (2013/10/25) useDB対å¿?
174 *
175 * @return 後続å?ç�??æŒ?¤º
176 */
177 @Override
178 public int doEndTag() {
179 debugPrint(); // 4.0.0 (2005/02/28)
180
181 // 3.7.1.0 (2005/04/15) LDAP検索 新規追åŠ?
182 if( useLDAP ) {
183 String[] vals = StringUtil.csv2Array( ldapVals );
184
185 LDAPSearch serch = new LDAPSearch();
186 serch.setAttributes( vals );
187 serch.init();
188
189 from = setLDAPAddress( serch,from );
190 to = setLDAPAddress( serch,to );
191 cc = setLDAPAddress( serch,cc );
192 bcc = setLDAPAddress( serch,bcc );
193 replyTo = setLDAPAddress( serch,replyTo );
194 }
195 else if( useDB ){ // 5.6.9.3 (2013/10/25) GE35からメールアドレスを取å¾?
196 String[] from_array = {from};
197 from = getAddressArray( from_array )[0];
198 to = getAddressArray( to );
199 cc = getAddressArray( cc );
200 bcc = getAddressArray( bcc );
201 replyTo = getAddressArray( replyTo );
202 }
203
204 // mail.setHost( host );
205 mail.setFrom( from );
206 mail.setTo( to );
207 mail.setCc( cc );
208 mail.setBcc( bcc );
209 mail.setReplyTo( replyTo );
210 mail.setSubject( subject );
211 // mail.setCharset( charset );
212 mail.setDebug( isDebug() );
213
214 if( filename != null && filename.length > 0 ) {
215 String[] temp = new String[filename.length];
216 String directory = HybsSystem.url2dir( fileURL );
217 for( int i=0; i<temp.length; i++ ) {
218 temp[i] = StringUtil.urlAppend( directory, filename[i] );
219 }
220 mail.setFilename( temp );
221 }
222
223 mail.sendmail() ;
224
225 return(EVAL_PAGE);
226 }
227
228 /**
229 * タグリブオブジェクトをリリースしますã?
230 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
231 *
232 * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿グの release() メソãƒ?ƒ‰をã?追åŠ?
233 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
234 * @og.rev 3.7.1.0 (2005/04/15) LDAP検索 useLDAP,ldapKey,ldapVals 属æ?追åŠ?
235 * @og.rev 5.6.7.0 (2013/07/27) ldapKey,ldapValsの取得をリソースに変更
236 * @og.rev 5.6.9.3 (2013/10/25) useDB追åŠ?
237 * @og.rev 5.8.1.1 (2014/11/14) メール送信時認証追åŠ??smtpPort,authPort,authType,authUser,authPass
238 *
239 */
240 @Override
241 protected void release2() {
242 super.release2();
243 mail = null;
244 host = HybsSystem.sys( "COMMON_MAIL_SERVER" );
245 charset = HybsSystem.sys( "MAIL_DEFAULT_CHARSET" ); // 3.5.6.6 (2004/08/23)
246 from = null;
247 to = null;
248 cc = null;
249 bcc = null;
250 replyTo = null;
251 subject = null;
252 fileURL = HybsSystem.sys( "FILE_URL" );
253 filename = null;
254 useLDAP = false; // 3.7.1.0 (2005/04/15)
255 // ldapKey = "uid"; // 3.7.1.0 (2005/04/26)
256 // ldapVals = "cn,mail"; // 3.7.1.0 (2005/04/15)
257 ldapKey = HybsSystem.sys( "LDAP_MAILSEND_KEY" ); // 5.6.7.0 (2013/07/27)
258 ldapVals= HybsSystem.sys( "LDAP_MAILSEND_VALS" ); // 5.6.7.0 (2013/07/27)
259 useDB = false; // 5.6.9.3 (2013/10/25) GE35からメールアドレスを取å¾?
260 smtpPort = HybsSystem.sys( "SMTP_PORT" ); // 5.8.1.1 (2014/11/14)
261 authType = HybsSystem.sys( "MAIL_SEND_AUTH" ); // 5.8.1.1 (2014/11/14)
262 authPort = HybsSystem.sys( "MAIL_SEND_AUTH_PORT" ); // 5.8.1.1 (2014/11/14)
263 authUser = HybsSystem.sys( "MAIL_SEND_AUTH_USER" ); // 5.8.1.1 (2014/11/14)
264 authPass = HybsSystem.sys( "MAIL_SEND_AUTH_PASSWORD" ); // 5.8.1.1 (2014/11/14)
265 }
266
267 /**
268 * LDAP を利用したメールアドレスを設定し直しますã?
269 *
270 * LDAPより、ldapKeyをキーに、ldapVals を設定å?として、読み込みますã?
271 * 初期値は、ldapKeyは、uid(ユニã?クID) ldapValsは、cn,mail(名前、メールアドレス)となってã�?�¾すã?
272 * from,to,cc,bcc,replyTo の設定å?をã?target にセãƒ?ƒˆして、検索しますã?
273 * 通常、このメソãƒ?ƒ‰は、useLDAP=true の場合に呼び出すよã�?�«設定しますã?
274 * target ã�?null かã?ゼロæ–?—å?ã�?メールアドレス(ここではã€?#064; æ–?—を含ã‚?�‹どã�?�‹で判å®?の場合ã?
275 * そã?まま target を返しますã?
276 *
277 * @og.rev 3.7.1.0 (2005/04/15) LDAP検索 新規追åŠ?
278 *
279 * @param serch LDAPSearchオブジェクãƒ?
280 * @param target ldapKeyキーに対する設定å?
281 *
282 * @return メールアドレス
283 * @see #setLDAPAddress( LDAPSearch serch, String[] targets )
284 */
285 private String setLDAPAddress( final LDAPSearch serch, final String target ) {
286 final String rtnAdrs ;
287
288 // if( target == null || target.length() == 0 || target.indexOf("@") > 0 ) { return target; }
289 if( target != null && target.indexOf( '@' ) < 0 ) {
290 List<String[]> list = serch.search( ldapKey + "=" + target );
291 if( list.size() == 1 ) {
292 String[] vals = list.get(0);
293 if( ldapVals.indexOf(',') < 0 ) { // 検索値が2つの場合でなã�?
294 rtnAdrs = vals[0] ; // メールアドレスのみ
295 }
296 else {
297 rtnAdrs = vals[0] + "<" + vals[1] + ">" ; // "名前<aaaa@bbbb>" 形å¼?
298 }
299 }
300 else {
301 String errMsg = "LDAP検索の結果、メールアドレスが見つかりませんでしたã€?
302 + "設定å?=[" + target + "] , 検索キー=[" + ldapKey + "] , 検索属æ?=["
303 + ldapVals + "]" ;
304 throw new HybsSystemException( errMsg );
305 }
306 }
307 else {
308 rtnAdrs = target;
309 }
310
311 return rtnAdrs ;
312 }
313
314 /**
315 * LDAP を利用したè¤?•°のメールアドレスを取得しますã?
316 *
317 * LDAPより、ldapKeyをキーに、ldapVals を設定å?として、読み込みますã?
318 * 初期値は、ldapKeyは、uid(ユニã?クID) ldapValsは、cn,mail(名前、メールアドレス)となってã�?�¾すã?
319 * from,to,cc,bcc,replyTo の設定å?をã?target にセãƒ?ƒˆして、検索しますã?
320 * 通常、このメソãƒ?ƒ‰は、useLDAP=true の場合に呼び出すよã�?�«設定しますã?
321 * target がメールアドレスの場合ã?(ここではã€?#064; æ–?—を含ã‚?�‹どã�?�‹で判å®?そã?まま返しますã?
322 *
323 * @og.rev 3.7.1.0 (2005/04/26) LDAP検索 新規追åŠ?
324 *
325 * @param serch LDAPSearchオブジェクãƒ?
326 * @param targets ldapKeyキーに対する設定å?の配å?
327 *
328 * @return è¤?•°のメールアドレス(配å?)
329 * @see #setLDAPAddress( LDAPSearch serch, String target )
330 */
331 private String[] setLDAPAddress( final LDAPSearch serch, final String[] targets ) {
332 if( targets == null || targets.length == 0 ) { return targets; }
333
334 String[] rtn = new String[targets.length];
335
336 for( int i=0; i<targets.length; i++ ) {
337 rtn[i] = setLDAPAddress( serch,targets[i] );
338 }
339 return rtn ;
340 }
341
342 /**
343 * 【TAG】é?信å…??¦?²?¯?)アドレスを指定しますã?
344 *
345 * @og.tag 送信å…??¦?²?¯?)アドレスを指定しますã?
346 *
347 * @param fromAdrs 送信å…??¦?²?¯?)アドレス
348 */
349 public void setFrom( final String fromAdrs ) {
350 from = nval( getRequestParameter( fromAdrs ), from );
351 }
352
353 /**
354 * 【TAG】é?信å…??´?¯)アドレスをCSV形式でæŒ?®šしますã?
355 *
356 * @og.tag
357 * è¤?•°アドレスをカンマ区åˆ?‚Šでセãƒ?ƒˆできますã?
358 *
359 * @og.rev 3.5.6.2 (2004/07/05) 先に配å?にåˆ?§£してからリクエスト変数の値を取å¾?
360 * @og.rev 3.5.6.4 (2004/07/16) 先にリクエスト変数の値を取得してから配å?にåˆ?§£
361 *
362 * @param toAdrs 送信å…??´?¯)アドレス(CSV形å¼?
363 */
364 public void setTo( final String toAdrs ) {
365 to = StringUtil.csv2ArrayOnly( getRequestParameter( toAdrs ) );
366 }
367
368 /**
369 * 【TAG】é?信å…??£?£)アドレスをCSV形式でæŒ?®šしますã?
370 *
371 * @og.tag
372 * è¤?•°アドレスをカンマ区åˆ?‚Šでセãƒ?ƒˆできますã?
373 *
374 * @og.rev 3.5.6.2 (2004/07/05) 先に配å?にåˆ?§£してからリクエスト変数の値を取å¾?
375 * @og.rev 3.5.6.4 (2004/07/16) 先にリクエスト変数の値を取得してから配å?にåˆ?§£
376 *
377 * @param ccAdrs 送信å…??£?£)アドレス(CSV形å¼?
378 */
379 public void setCc( final String ccAdrs ) {
380 cc = StringUtil.csv2ArrayOnly( getRequestParameter( ccAdrs ) );
381 }
382
383 /**
384 * 【TAG】é?信å…??¢?£?£)アドレスをCSV形式でæŒ?®šしますã?
385 *
386 * @og.tag
387 * è¤?•°アドレスをカンマ区åˆ?‚Šでセãƒ?ƒˆできますã?
388 *
389 * @og.rev 3.5.6.2 (2004/07/05) 先に配å?にåˆ?§£してからリクエスト変数の値を取å¾?
390 * @og.rev 3.5.6.4 (2004/07/16) 先にリクエスト変数の値を取得してから配å?にåˆ?§£
391 *
392 * @param bccAdrs 送信å…??¢?£?£)アドレス(CSV形å¼?
393 */
394 public void setBcc( final String bccAdrs ) {
395 bcc = StringUtil.csv2ArrayOnly( getRequestParameter( bccAdrs ) );
396 }
397
398 /**
399 * 【TAG】返信å…?replyTo)アドレスをCSV形式でæŒ?®šしますã?
400 *
401 * @og.tag
402 * è¤?•°アドレスをカンマ区åˆ?‚Šでセãƒ?ƒˆできますã?
403 *
404 * @og.rev 3.5.6.6 (2004/08/23) 新規追åŠ?
405 *
406 * @param replyToAdrs 返信å…?replyTo)アドレス(CSV形å¼?
407 */
408 public void setReplyTo( final String replyToAdrs ) {
409 replyTo = StringUtil.csv2ArrayOnly( getRequestParameter( replyToAdrs ) );
410 }
411
412 /**
413 * 【TAG】メールサーバã?を指定しまã�?
414 * (初期値:COMMON_MAIL_SERVER[={@og.value org.opengion.hayabusa.common.SystemData#COMMON_MAIL_SERVER}])ã€?
415 *
416 * @og.tag メールサーバã?を指定しますã?
417 * (初期値:シスãƒ?ƒ 定数のCOMMON_MAIL_SERVER[={@og.value org.opengion.hayabusa.common.SystemData#COMMON_MAIL_SERVER}])ã€?
418 *
419 * @og.rev 3.5.6.6 (2004/08/23) 初期値をè?慮するように変更ã€?
420 *
421 * @param hst メールサーバã?
422 * @see org.opengion.hayabusa.common.SystemData#COMMON_MAIL_SERVER
423 */
424 public void setHost( final String hst ) {
425 host = nval( getRequestParameter( hst ),host );
426 }
427
428 /**
429 * 【TAG】タイトルを指定しますã?
430 *
431 * @og.tag タイトルを指定しますã?
432 *
433 * @param subjct タイトル
434 */
435 public void setSubject( final String subjct ) {
436 this.subject = getRequestParameter( subjct );
437 }
438
439 /**
440 * 【TAG】添付ファイル名をCSV形式でæŒ?®šしますã?
441 *
442 * @og.tag
443 * è¤?•°ファイルをセãƒ?ƒˆできますã?
444 * 設定方法ã?、カンマで区åˆ?�£て並べè¤?•°æŒ?®šできますã?
445 *
446 * @og.rev 3.5.6.6 (2004/08/23) è¤?•°ファイルæŒ?®š方法をã€?‡�è¤?ƒªクエストからカンマ区åˆ?‚Šに変更
447 *
448 * @param fname 添付ファイルå�?CSV形å¼?
449 */
450 public void setFilename( final String fname ) {
451 filename = StringUtil.csv2ArrayOnly( getRequestParameter( fname ) );
452 }
453
454 /**
455 * 【TAG】文字エンコーãƒ?‚£ングを指定しまã�?
456 * (初期値:MAIL_DEFAULT_CHARSET[={@og.value org.opengion.hayabusa.common.SystemData#MAIL_DEFAULT_CHARSET}])ã€?
457 *
458 * @og.tag
459 * æ–?—エンコーãƒ?‚£ングは、メール本æ–?�«対するエンコーãƒ?‚£ングæŒ?®šですã?
460 * これは、Windows-31J 、MS932、Shift_JIS のどれかが指定された場合ã?
461 * 『指定ã?æ–?—コーãƒ?+ 8bit 送信』しますã?
462 * それ以外ã?æŒ?®šã?、ã?ISO-2022-JP に独自変換 + 7bit 送信』になりますã?
463 * (初期値:シスãƒ?ƒ 定数のMAIL_DEFAULT_CHARSET[={@og.value org.opengion.hayabusa.common.SystemData#MAIL_DEFAULT_CHARSET}])ã€?
464 *
465 * @param chset æ–?—エンコーãƒ?‚£ング
466 * @see org.opengion.hayabusa.common.SystemData#MAIL_DEFAULT_CHARSET
467 */
468 public void setCharset( final String chset ) {
469 charset = nval( getRequestParameter( chset ),charset );
470 }
471
472 /**
473 * 【TAG】添付ファイルのセーブディレクトリを指定しまã�?
474 * (初期値:FILE_URL[={@og.value org.opengion.hayabusa.common.SystemData#FILE_URL}])ã€?
475 *
476 * @og.tag
477 * こã?属æ?でæŒ?®šされるãƒ?‚£レクトリに、添付ファイルが存在すると仮定しますã?
478 * æŒ?®š方法ã?ã€??常の fileURL 属æ?と同様に、å?頭がã?'/' (UNIX) またã?ã€?¼’文字目がã?
479 * ":" (Windows)の場合ã?、指定ã?URLそã?ままのãƒ?‚£レクトリに、そã�?�§なã�??合ã?ã€?
480 * fileURL = "{@USER.ID}" とæŒ?®šすると、FILE_URL 属æ?でæŒ?®šã?フォルãƒ??下にã€?
481 * さらに、各個人ID別のフォルãƒ?‚’作æ?して、そこを使用しますã?
482 * (初期値:シスãƒ?ƒ 定数のFILE_URL[={@og.value org.opengion.hayabusa.common.SystemData#FILE_URL}])ã€?
483 *
484 * @og.rev 4.0.0.0 (2005/01/31) StringUtil.urlAppend メソãƒ?ƒ‰の利用
485 * @og.rev 4.0.0.0 (2007/11/20) æŒ?®šされたãƒ?‚£レクトリ名ã?æœ?¾Œが"\"or"/"で終わってã�?�ªã�??合にã€?/"を付加するã€?
486 *
487 * @param url 添付ファイルのセーブディレクトリ
488 * @see org.opengion.hayabusa.common.SystemData#FILE_URL
489 */
490 public void setFileURL( final String url ) {
491 String furl = nval( getRequestParameter( url ),null );
492 if( furl != null ) {
493 char ch = furl.charAt( furl.length()-1 );
494 if( ch != '/' && ch != '\\' ) { furl = furl + "/"; }
495 fileURL = StringUtil.urlAppend( fileURL,furl );
496 }
497 }
498
499 /**
500 * 【TAG】メールアドレスをLDAPを利用して取得するかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
501 *
502 * @og.tag
503 * LDAP のメールアドレスを取得するå?合ã?、true をセãƒ?ƒˆしますã?false の場合ã?ã€?
504 * from,to,cc,bcc,replyTo の設定å?がそのまま使用されますã?
505 * 上記アドレスにã€?#064; を含ã‚??合ã?、LDAP を検索せず、メールアドレスとして
506 * そã?まま使用しますã?LDAP の検索結果が存在しなã�??合ã?、不正なアドレスとしてã€?
507 * エラーとしますã?
508 * 初期値は、false ですã?
509 *
510 * @og.rev 3.7.1.0 (2005/04/15) LDAP検索 新規追åŠ?
511 *
512 * @param useLDAP メールアドレスをLDAPを利用して取得するかどã�?�‹ [true:取得すã‚?false:取得しない]
513 */
514 public void setUseLDAP( final String useLDAP ) {
515 this.useLDAP = nval( getRequestParameter( useLDAP ),this.useLDAP );
516 }
517
518 /**
519 * 【TAG】アドレスを検索するキーを指定しまã�?初期値:uid C社員番号)ã€?
520 *
521 * @og.tag
522 * LDAP のメールアドレスを取得するå?合ã?、検索するキーを指定しますã?
523 * from,to,cc,bcc,replyTo の設定å?をã?こã?キーにセãƒ?ƒˆして、検索しますã?
524 * uid C社員番号 、employeeNumber 社員番号 などがè?えられますã?
525 * 初期値は、uid(C社員番号)ですã?
526 * こã?キーでè¤?•°の検索結果が得られた場合ã?、エラーとしますã?
527 *
528 * @og.rev 3.7.1.0 (2005/04/15) LDAP検索 新規追åŠ?
529 *
530 * @param ldapKey アドレスを検索するキー
531 */
532 public void setLdapKey( final String ldapKey ) {
533 this.ldapKey = nval( getRequestParameter( ldapKey ),this.ldapKey );
534 }
535
536 /**
537 * 【TAG】LDAP検索時ã?属æ?名をæŒ?®šしまã�?初期値:cn,mail)ã€?
538 *
539 * @og.tag
540 * LDAPを検索する場合ã?"æ‹?½“è?å�?<メールアドレス>形式ã?メールアドレスを作æ?する
541 * 場合ã?検索する属æ?値を指定しますã?
542 * ひとつならアドレス。2つなら名前とアドレスのé ?�§æŒ?®šされたと認識しますã?
543 *
544 * @og.rev 3.7.1.0 (2005/04/15) LDAP検索 新規追åŠ?
545 *
546 * @param ldapVals LDAP検索時ã?属æ?å�?
547 */
548 public void setLdapVals( final String ldapVals ) {
549 this.ldapVals = nval( getRequestParameter( ldapVals ),this.ldapVals );
550 }
551
552 /**
553 * 【TAG】メールアドレスをGE35を利用して取得するかどã�?�‹[true/false]を指定しまã�?初期値:false)ã€?
554 *
555 * @og.tag
556 * GE35からメールアドレスを取得するå?合ã?、true をセãƒ?ƒˆしますã?false の場合ã?ã€?
557 * from,to,cc,bcc,replyTo の設定å?がそのまま使用されますã?
558 * 上記アドレスにã€?#064; を含ã‚??合ã?、DB を検索せず、メールアドレスとして
559 * そã?まま使用しますã?DB の検索結果が存在しなã�??合ã?、不正なアドレスとしてã€?
560 * エラーとしますã?
561 * useLDAPと同時に設定されてã�?‚‹場合ã?、LDAP設定が優先されますã?
562 * 初期値は、false ですã?
563 *
564 * @og.rev 5.6.9.3 (2013/10/25) 新規追åŠ?
565 *
566 * @param flg メールアドレスをGE35を利用して取得するかどã�?�‹ [true:取得すã‚?false:取得しない]
567 */
568 public void setUseDB( final String flg ) {
569 useDB = nval( getRequestParameter( flg ),useDB );
570 }
571
572 /**
573 * 【TAG】メール送信ポã?ト番号をセãƒ?ƒˆしますã?
574 *
575 * @og.tag
576 * 初期値は、シスãƒ?ƒ 定数のSMTP_PORT を使用しますã?
577 *
578 * (初期値:シスãƒ?ƒ 定数のSMTP_PORT[={@og.value org.opengion.hayabusa.common.SystemData#SMTP_PORT}])ã€?
579 *
580 * @og.rev 5.8.1.1 (2014/11/14) メール送信時認証「POP_BEFORE_SMTP」追åŠ?
581 *
582 * @param port SMTPポã?ãƒ?
583 */
584 public void setSmtpPort( final String port ) {
585 smtpPort = nval( getRequestParameter(port), smtpPort );
586 }
587
588 /**
589 * 【TAG】メール送信時認証方式をセãƒ?ƒˆしますã?
590 *
591 * @og.tag
592 * 認証を行う場合ã?「POP_BEFORE_SMTP」とæŒ?®šして下さã�??
593 * 認証時には認証ユーザと認証パスワードを設定するå¿?¦�がありますã?
594 * 初期値は、シスãƒ?ƒ 定数のMAIL_SEND_AUTH を使用しますã?
595 *
596 * (初期値:シスãƒ?ƒ 定数のMAIL_SEND_AUTH_TYPE[={@og.value org.opengion.hayabusa.common.SystemData#MAIL_SEND_AUTH}])ã€?
597 *
598 * @og.rev 5.8.1.1 (2014/11/14) メール送信時認証「POP_BEFORE_SMTP」追åŠ?
599 *
600 * @param type 認証方å¼?
601 */
602 public void setAuthType( final String type ) {
603 authType = nval( getRequestParameter(type), authType );
604 }
605
606 /**
607 * 【TAG】メール送信時認証ポã?トをセãƒ?ƒˆしますã?
608 *
609 * @og.tag
610 * 「POP_BEFORE_SMTP」認証を行う場合に、POPサーバã?に接続するã?ート番号を指定しますã?
611 * æŒ?®šしなã�??合ã?、POP3ãƒ?ƒ•ォルトã?ートを使用しますã?
612 * 初期値は、シスãƒ?ƒ 定数のMAIL_SEND_AUTH_PORT を使用しますã?
613 *
614 * (初期値:シスãƒ?ƒ 定数のMAIL_SEND_AUTH_PORT[={@og.value org.opengion.hayabusa.common.SystemData#MAIL_SEND_AUTH_PORT}])ã€?
615 *
616 * @og.rev 5.8.1.1 (2014/11/14) メール送信時認証「POP_BEFORE_SMTP」追åŠ?
617 *
618 * @param port 認証ポã?ãƒ?
619 */
620 public void setAuthPort( final String port ) {
621 authPort = nval( getRequestParameter(port), authPort );
622 }
623
624 /**
625 * 【TAG】メール送信認証ユーザをセãƒ?ƒˆしますã?
626 *
627 * @og.tag
628 * 初期値は、シスãƒ?ƒ 定数のMAIL_SEND_AUTH_USER を使用しますã?
629 *
630 * (初期値:シスãƒ?ƒ 定数のMAIL_SEND_AUTH_USER[={@og.value org.opengion.hayabusa.common.SystemData#MAIL_SEND_AUTH_USER}])ã€?
631 *
632 * @og.rev 5.8.1.1 (2014/11/14) メール送信時認証「POP_BEFORE_SMTP」追åŠ?
633 *
634 * @param user 認証ユーザ
635 */
636 public void setAuthUser( final String user ) {
637 authUser = nval( getRequestParameter(user), authUser );
638 }
639
640 /**
641 * 【TAG】メール送信認証パスワードをセãƒ?ƒˆしますã?
642 *
643 * @og.tag
644 * 初期値は、シスãƒ?ƒ 定数のMAIL_SEND_AUTH_PASSWORD を使用しますã?
645 *
646 * (初期値:シスãƒ?ƒ 定数のMAIL_SEND_AUTH_PASSWORD[={@og.value org.opengion.hayabusa.common.SystemData#MAIL_SEND_AUTH_PASSWORD}])ã€?
647 *
648 * @og.rev 5.8.1.1 (2014/11/14) メール送信時認証「POP_BEFORE_SMTP」追åŠ?
649 *
650 * @param pass 認証パスワーãƒ?
651 */
652 public void setAuthPass( final String pass ) {
653 authPass = nval( getRequestParameter(pass), authPass );
654 }
655
656 /**
657 * シリアライズ用のカスタãƒ?‚·リアライズ書き込みメソãƒ?ƒ‰
658 *
659 * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
660 * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
661 *
662 * @param strm ObjectOutputStreamオブジェクãƒ?
663 * @throws IOException 入出力エラーが発生したå?å�?
664 */
665 private void writeObject( final ObjectOutputStream strm ) throws IOException {
666 strm.defaultWriteObject();
667 }
668
669 /**
670 * シリアライズ用のカスタãƒ?‚·リアライズ読み込みメソãƒ?ƒ‰
671 *
672 * ここでは、transient 宣è¨?�•れたå†?ƒ¨変数のå†??初期化がå¿?¦�なフィールドã?み設定しますã?
673 *
674 * @og.rev 4.0.0.0 (2006/09/31) 新規追åŠ?
675 * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
676 *
677 * @param strm ObjectInputStreamオブジェクãƒ?
678 * @see #release2()
679 * @throws IOException シリアライズに関する入出力エラーが発生したå?å�?
680 * @throws ClassNotFoundException クラスを見つけることができなかったå?å�?
681 */
682 private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
683 strm.defaultReadObject();
684 }
685
686 /**
687 * 引数のアドレス配å?を社員マスタ??E35)で変換して返しますã?
688 * グループIDは利用しませんã€?
689 *
690 * @og.rev 5.6.9.3 (2013/10/25) 新規追åŠ?
691 *
692 * @param src 引数配å?
693 *
694 * @return 変換後アドレス配å?
695 */
696 public String[] getAddressArray( final String[] src ){
697 if( src == null || src.length == 0 ) { return src; }
698
699 String[] rtn= src.clone();
700
701 for( int i=0; i < src.length; i++ ){
702 String addr = src[i]; // 宛å?ID
703 String[] userAddr = getUserAddr( addr );
704 if ( userAddr != null && userAddr.length > 0 ){
705 if( userAddr[MailPattern.GE35_NAME] != null ){ // 宛å?å�?
706 addr = userAddr[MailPattern.GE35_NAME] + "<" + userAddr[MailPattern.GE35_MAIL] + ">";
707 }
708 else{
709 addr = userAddr[MailPattern.GE35_MAIL];
710 }
711
712 rtn[i] = addr;
713
714 }
715 }
716
717 return rtn;
718 }
719
720
721 /**
722 * 社員マスタより名前、メールアドレスを取得しますã?
723 * 戻りå? rtn[0]:ユーザー名ã? rtn[1]:ユーザーメールアドレス
724 *
725 * @og.rev 5.6.9.3 (2013/10/25) mailSenderでã‚?E35を扱ã�??
726 *
727 * @param userId ユーザーID
728 *
729 * @return 配å?æ–?—å?(rtn[0]:ユーザー名ã? rtn[1]:ユーザーメールアドレス)
730 */
731 private String[] getUserAddr( final String userId ){
732 String[] rtn = null;
733
734 if ( userId.contains( "@" ) ) {
735 rtn = new String[2];
736 rtn[0] = "";
737 rtn[1] = userId;
738 }
739 else {
740 String[] ge35SelArgs = { userId };
741 String[][] ge35Datas = DBUtil.dbExecute( MailPattern.selGE35,ge35SelArgs,getApplicationInfo(), DBID );
742 if ( ge35Datas.length > 0) {
743 rtn = ge35Datas[0];
744 }
745 else {
746 String errMsg = "ユーザーæƒ??取得できません。ユーザーID?? + userId ;
747 throw new HybsSystemException( errMsg );
748 }
749 }
750 return rtn;
751 }
752
753 /**
754 * こã?オブジェクトã?æ–?—å?表現を返しますã?
755 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
756 *
757 * @og.rev 5.6.9.3 (2013/10/25) useDBの対å¿?
758 *
759 * @return こã?クラスのæ–?—å?表現
760 */
761 @Override
762 public String toString() {
763 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
764 .println( "VERSION" ,VERSION )
765 .println( "host" ,host )
766 .println( "charset" ,charset )
767 .println( "from" ,from )
768 .println( "to" ,to )
769 .println( "cc" ,cc )
770 .println( "bcc" ,bcc )
771 .println( "replyTo" ,replyTo )
772 .println( "subject" ,subject )
773 .println( "filename" ,filename )
774 .println( "fileURL" ,fileURL )
775 .println( "useLDAP" ,useLDAP )
776 .println( "ldapKey" ,ldapKey )
777 .println( "ldapVals" ,ldapVals )
778 .println( "useDB" ,useDB ) // 5.6.9.3 (2013/10/25)
779 .println( "Other..." ,getAttributes().getAttribute() )
780 .fixForm().toString() ;
781 }
782 }