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