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.mail;
017
018 import static org.opengion.fukurou.util.StringUtil.nval;
019
020 import java.util.List;
021 import java.util.ArrayList;
022 import java.util.HashMap;
023 import java.util.Map;
024
025 import javax.mail.Address;
026 import javax.mail.SendFailedException;
027 import javax.mail.internet.InternetAddress;
028
029 import org.opengion.fukurou.db.DBUtil;
030 import org.opengion.fukurou.mail.MailTX;
031 import org.opengion.fukurou.util.ApplicationInfo;
032 import org.opengion.hayabusa.common.HybsSystem;
033
034 /**
035 * ã‚¿ã‚° mailSender2 åŠã?ãƒãƒƒãƒã«ã‚ˆã‚‹é€ä¿¡ã®å…±é€šå?ç?ƒ¨åˆ?‚’実è£?—ã¦ã?¾ã™ã?
036 * é€ä¿¡ã‚¿ã‚° mailSender2 ã‚‚ã—ãã?é€ä¿¡ãƒ??モンã‹ã‚‰ãƒ‘ラメータをå—å–りã¾ã™ã?
037 * パラメータä¸ã®å®šåž‹æ–‡IDåŠã?シスãƒ?ƒ IDã§å®šåž‹æ–??スタよりメールã®å®šåž‹æ–?‚’å–å¾—ã—ã¦ã€?
038 * パラメータ値ã¨ãƒžã?ジã—ã¦ãƒ¡ãƒ¼ãƒ«æ–?‚’åˆæ?ã—ã¾ã™ã?åŒæ™‚ã«ã€å®›å?ã«ã‚»ãƒ?ƒˆã—ãŸç¤¾å“¡IDã€?
039 * グループIDã¨å®šåž‹æ–??å®›å?è¨å®šã«åŸºã¥ãã?社員マスタã¨ã‚°ãƒ«ãƒ¼ãƒ—ã?スタよりメールアドレス
040 * æƒ??ã‚’å–å¾—ã—ã¦é€ä¿¡ã‚’行ã„ã¾ã™ã?
041 * エラーãŒãªã‘れã°é€ä¿¡ã—ãŸå†?®¹ã‚’å±¥æ´ãƒ??ブルã€å®›å?ãƒ??ãƒ–ãƒ«ã«æ›¸ãè¾¼ã¿ã¾ã™ã?
042 * æœ?¾Œã«æœ¬å‡¦ç??呼出å…?«é€ä¿¡çµæžœã€ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚’è¿”ã—ã¾ã™ã?
043 *
044 * @og.group メールモジュール
045 *
046 * @version 4.0
047 * @author Sen.Li
048 * @since JDK1.6
049 */
050 public abstract class AbstractMailManager {
051
052 // 5.2.0.0 (2010/09/01) Ver4互æ›ãƒ¢ãƒ¼ãƒ‰å¯¾å¿?
053 private static final String CONTENTS = HybsSystem.sysBool( "VER4_COMPATIBLE_MODE" ) ? "CONTENT" : "CONTENTS";
054
055 private static final String selYkno = "SELECT GE32S02.NEXTVAL YKNO FROM DUAL";
056 // 5.0.3.0 (2009/11/04) CONTENT �CONTENTS
057 // 5.2.0.0 (2010/09/01) Ver4互æ›ãƒ¢ãƒ¼ãƒ‰å¯¾å¿?
058 // private static final String insGE32 = "INSERT INTO GE32(YKNO,PARA_KEY,PTN_ID,FROM_ADDR,TITLE,CONTENTS,ATTACH1,ATTACH2,ATTACH3,ATTACH4,ATTACH5,DYSET,USRSET,PGUPD,SYSTEM_ID,FGJ)"
059 private static final String insGE32 = "INSERT INTO GE32(YKNO,PARA_KEY,PTN_ID,FROM_ADDR,TITLE,"+CONTENTS+",ATTACH1,ATTACH2,ATTACH3,ATTACH4,ATTACH5,DYSET,USRSET,PGUPD,SYSTEM_ID,FGJ)"
060 + " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,'1')";
061 private static final String insGE34 = "INSERT INTO GE34(YKNO,DST_ID,GROUP_ID,DST_NAME,DST_ADDR,DST_KBN,FGJ,DYSET,USRSET,PGUPD)"
062 + " VALUES(?,?,?,?,?,?,?,?,?,?)";
063 /** フラグ定数 {@value} */
064 protected static final String FGJ_SEND_WAIT = "0";
065 /** フラグ定数 {@value} */
066 protected static final String FGJ_SEND_OVER = "1";
067 /** フラグ定数 {@value} */
068 protected static final String FGJ_ADDR_ERR = "7";
069 /** フラグ定数 {@value} */
070 protected static final String FGJ_ACNT_ERR = "8";
071
072 // å†?ƒ¨ãƒ??ã‚¿ã®ã‚«ãƒ©ãƒ?•ªå·(å±¥æ´ãƒ??ブル)
073 private static final int GE32_YKNO = 0 ;
074 private static final int GE32_PARAKEY = 1 ;
075 private static final int GE32_PTN_ID = 2;
076 private static final int GE32_FROM_ADDR = 3;
077 private static final int GE32_TITLE = 4;
078 private static final int GE32_CONTENTS = 5; // 5.0.3.0 (2009/11/04) CONTENT �CONTENTS
079 private static final int GE32_ATTACH1 = 6;
080 private static final int GE32_ATTACH2 = 7;
081 private static final int GE32_ATTACH3 = 8;
082 private static final int GE32_ATTACH4 = 9;
083 private static final int GE32_ATTACH5 = 10;
084 private static final int GE32_DYSET = 11;
085 private static final int GE32_USRSET = 12;
086 private static final int GE32_PGUPD = 13;
087 private static final int GE32_SYSTEM_ID = 14;
088 // å†?ƒ¨ãƒ??ã‚¿ã®ã‚«ãƒ©ãƒ?•ªå·(å±¥æ´ãƒ??ブル)
089 private static final int GE34_YKNO = 0 ;
090 private static final int GE34_DST_ID = 1 ;
091 private static final int GE34_GROUP_ID = 2 ;
092 private static final int GE34_DST_NAME = 3 ;
093 private static final int GE34_DST_ADDR = 4 ;
094 private static final int GE34_DST_KBN = 5 ;
095 private static final int GE34_FGJ = 6 ;
096 private static final int GE34_DYSET = 7 ;
097 private static final int GE34_USRSET = 8 ;
098 private static final int GE34_PGUPD = 9 ;
099 // private static String host = HybsSystem.sys( "COMMON_MAIL_SERVER" );
100 private static String charset = HybsSystem.sys( "MAIL_DEFAULT_CHARSET" );
101 // private static String smtpPort = HybsSystem.sys( "SMTP_PORT" ); // 5.4.3.2 (2012/01/06)
102 // private static String auth = HybsSystem.sys( "MAIL_SEND_AUTH" ); // 5.4.3.2 (2012/01/06)
103 // private static String authUser = HybsSystem.sys( "MAIL_SEND_AUTH_USER" ); // 5.4.3.2 (2012/01/06)
104 // private static String authPass = HybsSystem.sys( "MAIL_SEND_AUTH_PASSWORD" ); // 5.4.3.2 (2012/01/06)
105 private boolean debugFlag = false;
106 private final List<String> errAddrList = new ArrayList<String>();
107 private static final int MAX_RETRY = 3 ; // メールアドレスエラー発生ã—ãŸå?åˆã?メールå†é?回数
108
109 // 5.6.6.0 (2013/07/05) hostç‰ã?外部æŒ?®šã«å¯¾å¿?
110 private String host = HybsSystem.sys( "COMMON_MAIL_SERVER" ); // 5.6.6.0 (2013/07/05)
111 private String smtpPort = HybsSystem.sys( "SMTP_PORT" ); // 5.6.6.0 (2013/07/05)
112 private String auth = HybsSystem.sys( "MAIL_SEND_AUTH" ); // 5.6.6.0 (2013/07/05)
113 private String authPort = HybsSystem.sys( "MAIL_SEND_AUTH_PORT" ); // 5.8.1.1 (2014/11/14)
114 private String authUser = HybsSystem.sys( "MAIL_SEND_AUTH_USER" ); // 5.6.6.0 (2013/07/05)
115 private String authPass = HybsSystem.sys( "MAIL_SEND_AUTH_PASSWORD" ); // 5.6.6.0 (2013/07/05)
116
117 private String mailTitle, mailContent, fromAddr;
118 private String[] attachFiles;
119 private Map<String, String[]> mailDstMap = null;
120 private Map<String,String> initParamMap = null; // パラメータマッ�
121 private MailTX mail = null;
122
123 protected final String DBID = HybsSystem.sys( "RESOURCE_DBID" ); // 5.5.5.1 (2012/08/07) リソース系DBID 付ã‘忘れ対å¿?
124
125 /** コãƒã‚¯ã‚·ãƒ§ãƒ³ã«ã‚¢ãƒ—リケーションæƒ??を追記ã™ã‚‹ã‹ã©ã?‹æŒ?®?*/
126 private static final boolean USE_DB_APPLICATION_INFO = HybsSystem.sysBool( "USE_DB_APPLICATION_INFO" ) ;
127
128 /** アプリケーション�? */
129 public static final ApplicationInfo appInfo;
130 static {
131 if( USE_DB_APPLICATION_INFO ) {
132 appInfo = new ApplicationInfo();
133 // ユーザーID,IPアドレス,ホストå
134 appInfo.setClientInfo( "MailModuel", HybsSystem.HOST_ADRS, HybsSystem.HOST_NAME );
135 // ç”»é¢ID,æ“ä½?プãƒã‚°ãƒ©ãƒ?D
136 appInfo.setModuleInfo( "MailModuel", "MailManager", "MailManager" );
137 }
138 else {
139 appInfo = null;
140 }
141 }
142
143 /**
144 * 呼出å…?‚ˆã‚Šãƒ‘ラメータマップをå—å–ã£ã¦ã€ãƒ¡ãƒ¼ãƒ«ã‚ªãƒ–ジェクãƒ?mailObj)を作æ?ã—ã¾ã™ã?
145 * メールオブジェクトã?定型文IDåŠã?シスãƒ?ƒ IDã«åŸºã¥ã?¦å®šåž‹æ–??スタã‹ã‚‰ãƒ¡ãƒ¼ãƒ«ã®å®šåž‹æ–?‚’å–å¾—ã—ã¦ã€?
146 * パラメータ値ã¨ãƒžã?ジã—ã¦ãƒ¡ãƒ¼ãƒ«æ–??å??ç›®ã‚’åˆæˆã—ã¾ã™ã?
147 * å®›å?ã«ã¤ã?¦ã¯ã€å®›å?ã«ã‚»ãƒ?ƒˆã—ãŸç¤¾å“¡IDã€ã‚°ãƒ«ãƒ¼ãƒ—IDã¨å®šåž‹æ–??å®›å?è¨å®šã«åŸºã¥ãã?社員マスタã¨ã‚°ãƒ«ãƒ¼ãƒ—ã?スタ
148 * よりメールアドレスをå–å¾—ã—ã¦å®›å?マップを作æ?ã—ã¾ã™ã?
149 * ã¾ã??添付ファイルã®ã‚»ãƒ?ƒˆå‡¦ç?‚‚行ã£ã¦ã?¾ã™ã?
150 *
151 * @og.rev 5.6.6.0 (2013/07/05) hostç‰ã?外部è¨å®šå¯¾å¿?
152 *
153 * @param params パラメータã®ãƒžãƒƒãƒ?
154 */
155 public void create( final Map<String, String> params ) {
156 initParamMap = params;
157 MailPattern mailObj = new MailPattern( params );
158 fromAddr = mailObj.getFromAddr();
159 setAttachFiles( params.get( "ATTACH1" )
160 , params.get( "ATTACH2" )
161 , params.get( "ATTACH3" )
162 , params.get( "ATTACH4" )
163 , params.get( "ATTACH5" ) ); // 添付ファイルã®ã‚»ãƒ?ƒˆ
164 mailDstMap = mailObj.getDstMap();
165 mailTitle = mailObj.getTitle();
166 mailContent = mailObj.getContent();
167 errAddrList.addAll( mailObj.getErrList() );
168
169 // 5.6.6.0 (2013/07/05)
170 host = nval( mailObj.getHost() ,host );
171 smtpPort = nval( mailObj.getSmtpPort() ,smtpPort );
172 auth = nval( mailObj.getAuth() ,auth );
173 authPort = nval( mailObj.getAuthPort() ,authPort ); // 5.8.1.1 (2014/11/14)
174 authUser = nval( mailObj.getAuthUser() ,authUser );
175 authPass = nval( mailObj.getAuthPass() ,authPass );
176 }
177
178 /**
179 * メールé€ä¿¡ã‚’行ã†ãƒ¡ã‚½ãƒ?ƒ‰ã§ã™ã?
180 * createメソãƒ?ƒ‰ã‚ˆã‚Šåˆæ?ã—ãŸå†?®¹ã§é€ä¿¡ã‚’行ã„ã¾ã™ã?アドレスエラー発生時ã«ã€?
181 * ユーザーè¨å®?addrCheck)ã«ã‚ˆã‚Šå†é?/䏿¢ã—ã¾ã™ã?
182 * メールサーãƒã?ã«é€ä¿¡ã—ã¦ã€ä¾‹å¤?SendFailedException"ã‚’ã‚ャãƒ?ƒã§ããŸã‚‰ã?
183 * メールアカウントãŒã‚¨ãƒ©ãƒ¼ã¨ãªã‚‹ã?ã‚’å?ã‹ã‚Šã¾ã™ã?ãã—ã¦ã€ä¾‹å¤–ã?オブジェクトã‹ã‚?
184 * エラーã¨ãªã£ã¦ã?‚‹ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’å–å¾—ã—ã¦å®›å?マップã‹ã‚‰é™¤å¤–ã—ã¦ã€æ®‹ã‚Šã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã«å†é?ã§ãã¾ã™ã?
185 * é€ä¿¡å¾Œå±¥æ´ãƒ??ブル(GE32)ã€å®›å?ãƒ??ブル(GE34)ã«é€ä¿¡çµæžœã‚’書ãè¾¼ã¿ã¾ã™ã?
186 *
187 * og.rev 5.4.3.2 (2012/01/06) é€ä¿¡æ™‚èªè¨¼å¯¾å¿?
188 *
189 */
190 public void send() {
191 List<String> invalidAddrBuf = new ArrayList<String>();
192 // mail = new MailTX( host, charset );
193 mail = new MailTX( host, charset, smtpPort, auth, authPort,authUser, authPass ); // 5.4.3.2 èªè¨¼å¯¾å¿?
194 mail.setFrom( fromAddr ); // é€ä¿¡è€?‚¢ãƒ‰ãƒ¬ã‚¹
195 mail.setFilename( attachFiles ); // 添付ファイルをセãƒ?ƒˆã—ã¾ã™ã?
196 mail.setSubject( mailTitle ); // メールタイトル
197 mail.setMessage( mailContent ); // メール本�
198 mail.setDebug( debugFlag );
199 setMailDst( invalidAddrBuf ); // å®›å?ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
200 // メールé€ä¿¡ã‚’行ã„ã¾ã™ã?
201 int retryCount = MAX_RETRY;
202 while( retryCount > 0 ) {
203 try {
204 mail.sendmail();
205 }
206 catch( RuntimeException rex ) {
207 Throwable cause = rex.getCause();
208 if( cause instanceof SendFailedException ) {
209 Address[] invAddress = ( (SendFailedException) cause ).getInvalidAddresses();
210 if( invAddress != null ) {
211 int invCount = invAddress.length;
212 for( int i = 0; i < invCount; i++ ) {
213 invalidAddrBuf.add( ( (InternetAddress) invAddress[i] ).getAddress() );
214 }
215 }
216 }
217 else {
218 String errMsg = "é€ä¿¡æ™‚ã«ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿã—ã¾ã—ãŸã€? + rex.getMessage();
219 throw new RuntimeException( errMsg,rex );
220 }
221 }
222
223 // if( invalidAddrBuf.size() > 0 ) {
224 // StringBuilder errMsgBuf = new StringBuilder();
225 // for( int i = 0; i < invalidAddrBuf.size(); i++ ) {
226 // errMsgBuf.append( "," ).append( invalidAddrBuf.get( i ) );
227 // }
228 // String userIds = getUserIds( invalidAddrBuf );
229 // String errMsg = "アドレスエラー。ユーザーID?? + userIds + " アドレス?? + errMsgBuf.toString().substring( 1 );
230 // if( "true".equals( initParamMap.get( "ADDR_CHECK" ) ) ){
231 // throw new RuntimeException( errMsg );
232 // }
233 // else {
234 // // メールアカウントãƒã‚§ãƒ?‚¯ã—ãªã??åˆã?無効ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’除ã?¦å†é?ã—ã¾ã™ã?
235 // setMailDst( invalidAddrBuf );
236 // retryCount--;
237 // invalidAddrBuf.clear();
238 // errAddrList.add( errMsg );
239 // }
240 // }
241 // else {
242 // retryCount = -1;
243 // }
244
245 if( invalidAddrBuf.isEmpty() ) {
246 retryCount = -1;
247 }
248 else {
249 StringBuilder errMsgBuf = new StringBuilder();
250 for( int i = 0; i < invalidAddrBuf.size(); i++ ) {
251 errMsgBuf.append( ',' ).append( invalidAddrBuf.get( i ) );
252 }
253 String userIds = getUserIds( invalidAddrBuf );
254 String errMsg = "アドレスエラー。ユーザーID?? + userIds + " アドレス?? + errMsgBuf.toString().substring( 1 );
255 if( "true".equals( initParamMap.get( "ADDR_CHECK" ) ) ){
256 throw new RuntimeException( errMsg );
257 }
258 else {
259 // メールアカウントãƒã‚§ãƒ?‚¯ã—ãªã??åˆã?無効ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’除ã?¦å†é?ã—ã¾ã™ã?
260 setMailDst( invalidAddrBuf );
261 retryCount--;
262 invalidAddrBuf.clear();
263 errAddrList.add( errMsg );
264 }
265 }
266 }
267 commitMailDB(); // é€ä¿¡çµæžœã‚’å±¥æ´ãƒ??ブルã€å®›å?ãƒ??ブルã«ã‚»ãƒ?ƒˆã—ã¾ã™ã?
268 }
269
270 /**
271 * ãƒ?ƒãƒ?‚°æƒ??ã®è¡¨ç¤ºã‚’行ã†ã‹ã©ã?‹[true/false]ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
272 *
273 * @param debug [true:出力ã™ã‚?ãれ以å¤?ã—ãªã„]
274 */
275 public void setDebug( final boolean debug ) {
276 debugFlag = debug;
277 }
278
279 /**
280 * メールé€ä¿¡è€?‚¢ãƒ‰ãƒ¬ã‚¹ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
281 *
282 * @param from é€ä¿¡è€?‚¢ãƒ‰ãƒ¬ã‚¹
283 */
284 public void setFromAddr( final String from ) {
285 fromAddr = from;
286 }
287
288 /**
289 * メールタイトルをセãƒ?ƒˆã—ã¾ã™ã?
290 *
291 * @param title メールタイトル
292 */
293 public void setTitle( final String title ) {
294 mailTitle = title;
295 }
296
297 /**
298 * メール本æ–?‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
299 *
300 * @param content メール本�
301 */
302 public void setContent( final String content ) {
303 mailContent = content;
304 }
305
306 /**
307 * メールé€ä¿¡ãƒ›ã‚¹ãƒˆã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
308 * åˆæœŸå€¤ã¯ã€ã‚·ã‚¹ãƒ?ƒ 定数ã®COMMON_MAIL_SERVER を使用ã—ã¾ã™ã?
309 *
310 * (åˆæœŸå€¤:シスãƒ?ƒ 定数ã®COMMON_MAIL_SERVER[={@og.value org.opengion.hayabusa.common.SystemData#COMMON_MAIL_SERVER}])ã€?
311 *
312 * @og.rev 5.6.6.0 (2013/07/05)
313 *
314 * @param hostName é€ä¿¡ãƒ›ã‚¹ãƒ?
315 */
316 public void setHost( final String hostName ) {
317 host = nval( hostName, host );
318 }
319
320 /**
321 * メールé€ä¿¡ãƒã?ト番å·ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
322 * åˆæœŸå€¤ã¯ã€ã‚·ã‚¹ãƒ?ƒ 定数ã®SMTP_PORT を使用ã—ã¾ã™ã?
323 *
324 * (åˆæœŸå€¤:シスãƒ?ƒ 定数ã®SMTP_PORT[={@og.value org.opengion.hayabusa.common.SystemData#SMTP_PORT}])ã€?
325 *
326 * @og.rev 5.6.6.0 (2013/07/05)
327 *
328 * @param port SMTPãƒã?ãƒ?
329 */
330 public void setPort( final String port ) {
331 smtpPort = nval( port, smtpPort );
332 }
333
334 /**
335 * メールé€ä¿¡æ™‚èªè¨¼æœ‰ç„¡ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
336 * èªè¨¼ã‚’行ã†å ´åˆã?「POP_BEFORE_SMTPã€ã¨æŒ?®šã—ã¦ä¸‹ã•ã??
337 * èªè¨¼æ™‚ã«ã¯èªè¨¼ãƒ¦ãƒ¼ã‚¶ã¨èªè¨¼ãƒ‘スワードをè¨å®šã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã?
338 * åˆæœŸå€¤ã¯ã€ã‚·ã‚¹ãƒ?ƒ 定数ã®MAIL_SEND_AUTH を使用ã—ã¾ã™ã?
339 *
340 * (åˆæœŸå€¤:シスãƒ?ƒ 定数ã®MAIL_SEND_AUTH[={@og.value org.opengion.hayabusa.common.SystemData#MAIL_SEND_AUTH}])ã€?
341 *
342 * @og.rev 5.6.6.0 (2013/07/05)
343 *
344 * @param useAuth èªè¨¼æ–¹å¼?
345 */
346 public void setAuth( final String useAuth ) {
347 auth = nval( useAuth, auth );
348 }
349
350 /**
351 * メールé€ä¿¡èªè¨¼ãƒ¦ãƒ¼ã‚¶ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
352 * åˆæœŸå€¤ã¯ã€ã‚·ã‚¹ãƒ?ƒ 定数ã®MAIL_SEND_AUTH_USER を使用ã—ã¾ã™ã?
353 *
354 * (åˆæœŸå€¤:シスãƒ?ƒ 定数ã®MAIL_SEND_AUTH_USER[={@og.value org.opengion.hayabusa.common.SystemData#MAIL_SEND_AUTH_USER}])ã€?
355 *
356 * @og.rev 5.6.6.0 (2013/07/05)
357 *
358 * @param user èªè¨¼ãƒ¦ãƒ¼ã‚¶
359 */
360 public void setAuthUser( final String user ) {
361 authUser = nval( user, authUser );
362 }
363
364 /**
365 * メールé€ä¿¡èªè¨¼ãƒ‘スワードをセãƒ?ƒˆã—ã¾ã™ã?
366 * åˆæœŸå€¤ã¯ã€ã‚·ã‚¹ãƒ?ƒ 定数ã®MAIL_SEND_AUTH_PASSWORD を使用ã—ã¾ã™ã?
367 *
368 * (åˆæœŸå€¤:シスãƒ?ƒ 定数ã®MAIL_SEND_AUTH_PASSWORD[={@og.value org.opengion.hayabusa.common.SystemData#MAIL_SEND_AUTH_PASSWORD}])ã€?
369 *
370 * @og.rev 5.6.6.0 (2013/07/05)
371 *
372 * @param pass èªè¨¼ãƒ‘スワーãƒ?
373 */
374 public void setAuthPass( final String pass ) {
375 authPass = nval( pass, authPass );
376 }
377
378 /**
379 * メールé€ä¿¡è€?‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¿”ã—ã¾ã™ã?
380 *
381 * @return é€ä¿¡è€?‚¢ãƒ‰ãƒ¬ã‚¹
382 */
383 public String getFromAddr() {
384 return fromAddr;
385 }
386
387 /**
388 * メールタイトルを返ã—ã¾ã™ã?
389 *
390 * @return メールタイトル
391 */
392 public String getTitle() {
393 return mailTitle;
394 }
395
396 /**
397 * メール本æ–?‚’è¿”ã—ã¾ã™ã?
398 *
399 * @return メール本�
400 */
401 public String getContent() {
402 return mailContent;
403 }
404
405 /**
406 * é€ä¿¡çµæžœã‚’å±¥æ´ãƒ??ブル(GE32)ã¨å®›å?ãƒ??ブル(GE34)ã«ç™»éŒ²ã—ã¾ã™ã?
407 * 登録時ã«ã€æ¡æ•°ã‚ªãƒ¼ãƒã?ã«ãªã‚‰ãªã?‚ˆã?«ã€ãƒ†ãƒ¼ãƒ–ãƒ«å®šç¾©ã®æ¡æ•°ã‚’上é™ã¨ã—ã¦ã€?
408 * 登録å‰ã«å??ç›®ã®æ¡æ•°æ•´ç?‚’行ã„ã¾ã™ã?
409 *
410 * @og.rev 5.5.5.1 (2012/08/07) リソース系DBID 付ã‘忘れ対ç?
411 */
412 protected void commitMailDB(){
413 // å±¥æ´ãƒ??ブルã®è¿½åŠ?
414 String[] insGE32Args = new String[15];
415 String ykno = getYkno();
416 insGE32Args[GE32_YKNO] = ykno;
417 insGE32Args[GE32_PARAKEY] = initParamMap.get( "PARAKEY" );
418 insGE32Args[GE32_PTN_ID] = trim( initParamMap.get( "PTN_ID" ), 20 );
419 insGE32Args[GE32_FROM_ADDR] = trim( fromAddr, 100);
420 insGE32Args[GE32_TITLE] = trim( mailTitle, 300);
421 insGE32Args[GE32_CONTENTS] = trim( mailContent,4000); // 5.0.3.0 (2009/11/04) CONTENT �CONTENTS
422 insGE32Args[GE32_ATTACH1] = "";
423 insGE32Args[GE32_ATTACH2] = "";
424 insGE32Args[GE32_ATTACH3] = "";
425 insGE32Args[GE32_ATTACH4] = "";
426 insGE32Args[GE32_ATTACH5] = "";
427 if ( attachFiles != null ) {
428 int attSize = attachFiles.length;
429 for( int i = 0; i < attSize; i++ ) {
430 insGE32Args[6 + i] = trim( attachFiles[i], 256);
431 }
432 }
433 insGE32Args[GE32_DYSET] = HybsSystem.getDate( "yyyyMMddHHmmss" );
434 insGE32Args[GE32_USRSET] = initParamMap.get( "LOGIN_USERID" );
435 insGE32Args[GE32_PGUPD] = initParamMap.get( "PGID" );
436 insGE32Args[GE32_SYSTEM_ID] = initParamMap.get( "SYSTEM_ID" );
437 // DBUtil.dbExecute( insGE32, insGE32Args, appInfo );
438 DBUtil.dbExecute( insGE32, insGE32Args, appInfo, DBID ); // 5.5.5.1 (2012/08/07)
439
440 // å®›å?ãƒ??ブル追åŠ?
441 String[] insGE34Args = new String[10];
442 insGE34Args[GE34_YKNO]= ykno;
443 for( String dstId : mailDstMap.keySet() ) {
444 insGE34Args[GE34_DST_ID] = trim( mailDstMap.get( dstId )[MailPattern.IDX_DST_ID] , 10 );
445 insGE34Args[GE34_GROUP_ID] = trim( mailDstMap.get( dstId )[MailPattern.IDX_GROUP_ID], 20 );
446 insGE34Args[GE34_DST_NAME] = trim( mailDstMap.get( dstId )[MailPattern.IDX_DST_NAME], 20 );
447 insGE34Args[GE34_DST_ADDR] = trim( mailDstMap.get( dstId )[MailPattern.IDX_DST_ADDR], 100 );
448 insGE34Args[GE34_DST_KBN] = mailDstMap.get( dstId )[MailPattern.IDX_DST_KBN];
449 insGE34Args[GE34_FGJ] = mailDstMap.get( dstId )[MailPattern.IDX_FGJ];
450 insGE34Args[GE34_DYSET] = HybsSystem.getDate( "yyyyMMddHHmmss" );
451 insGE34Args[GE34_USRSET] = initParamMap.get( "LOGIN_USERID" );
452 insGE34Args[GE34_PGUPD] = initParamMap.get( "PGID" );
453 // DBUtil.dbExecute( insGE34, insGE34Args, appInfo );
454 DBUtil.dbExecute( insGE34, insGE34Args, appInfo, DBID ); // 5.5.5.1 (2012/08/07)
455 }
456 }
457
458 /**
459 * パラメータマップをセãƒ?ƒˆã—ã¾ã™ã?
460 *
461 * @param params パラメータã®ãƒžãƒƒãƒ?
462 */
463 protected void setInitParams( final Map<String, String> params ) {
464 initParamMap = params;
465 }
466
467 /**
468 * 添付ファイルé…å?ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
469 *
470 * @param attach1 添付ファイルå?
471 * @param attach2 添付ファイルå?
472 * @param attach3 添付ファイルå?
473 * @param attach4 添付ファイルå?
474 * @param attach5 添付ファイルå?
475 */
476 protected void setAttachFiles( final String attach1
477 , final String attach2
478 , final String attach3
479 , final String attach4
480 , final String attach5 ) {
481 List<String> fileList = new ArrayList<String>();
482 if( attach1 != null && attach1.length() != 0 ) { fileList.add( attach1 ); }
483 if( attach2 != null && attach2.length() != 0 ) { fileList.add( attach2 ); }
484 if( attach3 != null && attach3.length() != 0 ) { fileList.add( attach3 ); }
485 if( attach4 != null && attach4.length() != 0 ) { fileList.add( attach4 ); }
486 if( attach5 != null && attach5.length() != 0 ) { fileList.add( attach5 ); }
487 attachFiles = fileList.toArray( new String[fileList.size()] );
488 }
489
490 /**
491 * メール宛å?マップをセãƒ?ƒˆã—ã¾ã™ã?
492 *
493 * @param mailDst メール宛å?マッãƒ?
494 */
495 protected void setMailDstMap( final Map<String, String[]> mailDst ) {
496 mailDstMap = mailDst;
497 }
498
499 /**
500 * メール宛å?マップをセãƒ?ƒˆã—ã¾ã™ã?
501 *
502 * @return メール宛å?マッãƒ?
503 */
504 protected Map<String, String[]> getMailDstMap() {
505 return mailDstMap;
506 }
507
508 /**
509 * æŒ?®šã?é•·ã•以å†??æ–?—å?ã‚’è¿”ã—ã¾ã™ã?
510 *
511 * @param src ã‚ªãƒªã‚¸ãƒŠãƒ«ã®æ–?—å?
512 * @param maxLen æŒ?®šã?é•·ã?
513 *
514 * @return æŒ?®šã?é•·ã•ã«çŸç¸®ã•ã‚ŒãŸæ–‡å—å?
515 */
516 protected String trim( final String src, final int maxLen ) {
517 String rtn = src;
518 if( src != null && src.length() > maxLen ) {
519 rtn = src.substring( 0, maxLen );
520 }
521 return rtn;
522 }
523
524 /**
525 * アドレスãƒã‚§ãƒ?‚¯ã®ã‚¨ãƒ©ãƒ¼ãƒªã‚¹ãƒˆã‚’è¿”ã—ã¾ã™ã?
526 *
527 * @return エラーリス�
528 */
529 protected List<String> getErrList(){
530 return errAddrList;
531 }
532
533 /**
534 * å®›å?マップをå…?«ã€??信オブジェクトã«å®›å?ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã?
535 * ã‚»ãƒ?ƒˆã™ã‚‹éš›ã«ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚¨ãƒ©ãƒ¼ã¨ãªã£ã¦ã?‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’除外ã—ã¾ã™ã?
536 * å®›å?ãŒå˜åœ¨ã—ãªã??åˆã?例外を投ã’ã¾ã™ã?
537 *
538 * @og.rev 4.3.7.5 (2009/07/08) é€ä¿¡å…ˆåç§°ãŒè¨å®šã•れã¦ã?ªã??åˆã?ã€ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚?>ã§å›²ã‚ãªã?
539 *
540 * @param invalidAddr å®›å?ã®ãƒªã‚¹ãƒ?
541 */
542 private void setMailDst( final List<String> invalidAddr ){
543 ArrayList<String> toList = new ArrayList<String>();
544 ArrayList<String> ccList = new ArrayList<String>();
545 ArrayList<String> bccList = new ArrayList<String>();
546
547 Map<Integer, ArrayList<String>> tempMap = new HashMap<Integer, ArrayList<String>>();
548 tempMap.put( Integer.valueOf( MailPattern.KBN_TO ), toList );
549 tempMap.put( Integer.valueOf( MailPattern.KBN_CC ), ccList );
550 tempMap.put( Integer.valueOf( MailPattern.KBN_BCC ), bccList );
551
552 for( String dstId : mailDstMap.keySet() ) {
553 String[] dstInfo = mailDstMap.get( dstId );
554 Integer kbn = Integer.valueOf( dstInfo[MailPattern.IDX_DST_KBN] );
555 if( !invalidAddr.contains( dstInfo[MailPattern.IDX_DST_ADDR] )
556 && !FGJ_ADDR_ERR.equals( dstInfo[MailPattern.IDX_FGJ] )){
557 dstInfo[MailPattern.IDX_FGJ] = FGJ_SEND_OVER;
558
559 // 4.3.7.5 (2009/07/08)
560 String name = dstInfo[MailPattern.IDX_DST_NAME];
561 if( name != null && name.length() > 0 ) {
562 tempMap.get( kbn ).add( dstInfo[MailPattern.IDX_DST_NAME] + "<"+ dstInfo[MailPattern.IDX_DST_ADDR] + ">" );
563 }
564 else {
565 tempMap.get( kbn ).add( dstInfo[MailPattern.IDX_DST_ADDR] );
566 }
567 }
568 else {
569 if( FGJ_SEND_OVER.equals( dstInfo[MailPattern.IDX_FGJ] ) ) {
570 dstInfo[MailPattern.IDX_FGJ] = FGJ_ACNT_ERR;
571 }
572 }
573 }
574
575 mail.clearTo(); // å®›å?(TO)をクリア
576 mail.clearCc(); // å®›å?(CC)をクリア
577 mail.clearBcc(); // å®›å?(BCC)をクリア
578 boolean haveValidAddr = false ;
579 // if( toList.size() > 0 ) { // toã®ã‚»ãƒ?ƒˆ
580 if( ! toList.isEmpty() ) { // toã®ã‚»ãƒ?ƒˆ
581 haveValidAddr = true;
582 String[] to = toList.toArray( new String[toList.size()] );
583 mail.setTo( to );
584 }
585 // if( ccList.size() > 0 ) { // ??½??ã‚»ãƒ?ƒˆ
586 if( ! ccList.isEmpty() ) { // ??½??ã‚»ãƒ?ƒˆ
587 haveValidAddr = true;
588 String[] cc = ccList.toArray( new String[ccList.size()] );
589 mail.setCc( cc );
590 }
591 // if( bccList.size() > 0 ) { // bccã®ã‚»ãƒ?ƒˆ
592 if( ! bccList.isEmpty() ) { // bccã®ã‚»ãƒ?ƒˆ
593 haveValidAddr = true;
594 String[] bcc = bccList.toArray( new String[bccList.size()] );
595 mail.setBcc( bcc );
596 }
597 if( !haveValidAddr ){ // å®›å?全部無効ã®å ´åˆã?例外を投ã’ã¾ã™ã?
598 String errMsg = "å®›å?ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæœ‰åйã§ã¯ã‚りã¾ã›ã‚“ã€?
599 + "TO , CC , BCC ã®ã?¥ã‚Œã«ã‚‚アドレスãŒè¨å®šã•れã¦ã?¾ã›ã‚“ã€?; // 5.1.8.0 (2010/07/01) errMsg ä¿®æ£
600 throw new RuntimeException( errMsg );
601 }
602 }
603
604 /**
605 * è¦æ±?Oを採番ã—ã¾ã™ã?
606 * ã“ã?è¦æ±?Oã§å±¥æ´ãƒ??ブル(GE32)ã¨å®›å?ãƒ??ブル(GE30)ã®é–¢é€£ä»˜ã‘ã‚’æŒãŸã›ã¾ã™ã?
607 *
608 * @og.rev 5.5.5.1 (2012/08/07) リソース系DBID 付ã‘忘れ対ç?
609 *
610 * @return è¦æ±?O
611 */
612 private String getYkno() {
613 // String[][] tmp = DBUtil.dbExecute( selYkno, new String[0], appInfo );
614 String[][] tmp = DBUtil.dbExecute( selYkno, new String[0], appInfo, DBID ); // 5.5.5.1 (2012/08/07)
615 if( tmp == null || tmp.length == 0 ) {
616 String errMsg = "è¦æ±?O採番エラー"
617 + " SQL=" + selYkno ; // 5.1.8.0 (2010/07/01) errMsg ä¿®æ£
618 throw new RuntimeException( errMsg );
619 }
620 return tmp[0][0];
621 }
622
623 /**
624 * メールアドレスã®ãƒªã‚¹ãƒˆã‚ˆã‚Šãƒ¦ãƒ¼ã‚¶ãƒ¼IDã‚’é?引ãã—ã¾ã™ã?
625 *
626 * @param addressList メールアドレスã®ãƒªã‚¹ãƒ?
627 *
628 * @return ユーザーID
629 */
630 private String getUserIds( final List<String> addressList ){
631 StringBuilder idBuf = new StringBuilder();
632 Map<String,String> addressMap = new HashMap<String, String>();
633 for( String userId : mailDstMap.keySet() ) {
634 String[] dstInfo = mailDstMap.get( userId );
635 addressMap.put( dstInfo[MailPattern.IDX_DST_ADDR], userId );
636 }
637 for(int i=0; i < addressList.size(); i++){
638 idBuf.append( ',' ).append( addressMap.get( addressList.get( i ) ) );
639 }
640 String rtn = "";
641 if ( idBuf.length() > 0 ) {
642 rtn = idBuf.toString().substring( 1 );
643 }
644 return rtn;
645 }
646 }