JavaMail 로 Gmail 보내기

Java/오류해결 2016. 5. 3. 13:31 Posted by 퓨어레드

메일 보내기

@Override

public void send (String toAddr, String subject, String content)
{
   final BaseSetting baseSetting = settingSv.getBaseSetting ();

   // javamail lib 이 필요합니다.
   class MyAuthentication extends Authenticator
   {
      PasswordAuthentication pa;

      public MyAuthentication ()
      {
         pa = new PasswordAuthentication (baseSetting.getCommonEmail (), baseSetting.getCommonEmailPasswd ());  //ex) ID:cafe24@cafe24.com PASSWD:1234
      }

      public PasswordAuthentication getPasswordAuthentication ()
      {
         return pa;
      }
   }

   String host = baseSetting.getSmtpAddr ();              //smtp mail server
   String from = baseSetting.getCommonEmail ();                  //sender email address
   String to = toAddr;                        //receiver email address

   if (StrLib.isEmptyStr (baseSetting.getSmtpAddr ()) || StrLib.isEmptyStr (baseSetting.getCommonEmail ()) || StrLib.isEmptyStr (baseSetting.getCommonEmailPasswd ()))
      return;;

   Properties props = new Properties ();
   props.put ("mail.smtp.host", host);
   props.put ("mail.smtp.auth", "true");
   props.put ("mail.smtp.port", String.valueOf (baseSetting.getSmtpPort ()));

   if (baseSetting.getSmtpPort () == 997 || baseSetting.getSmtpPort () == 465 || baseSetting.getSmtpPort () == 587)
   {
      props.put ("mail.smtp.socketFactory.port", String.valueOf (baseSetting.getSmtpPort ()));
      props.put ("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
      props.put ("mail.smtp.socketFactory.fallback", "false");
      props.put ("mail.smtp.starttls.enable","true");

      props.put ("mail.smtp.user",baseSetting.getCommonEmail ());
   }

   Authenticator auth = new MyAuthentication ();
   Session sess = Session.getInstance (props, auth);

   try
   {
      Message msg = new MimeMessage (sess);
      msg.setFrom (new InternetAddress (from));
      InternetAddress[] address = {new InternetAddress (to)};
      msg.setRecipients (Message.RecipientType.TO, address);
      msg.setSubject (subject);
      msg.setSentDate (new Date ());

      // Multipart 객체 생성
      MimeMultipart multipart = new MimeMultipart ();

      MimeBodyPart part = new MimeBodyPart ();

      // 부가적인 해더 추가
      /**********************************************************/
      msg.setHeader ("MIME-Version" , "1.0" );
      /**********************************************************/

      // 메세지 Part 추가 S
      /**********************************************************/
      part.setContent (content, "text/html;charset=UTF-8");
      part.removeHeader ("Content-Transfer-Encoding");

      // Encoding 타입 추가..
      /**********************************************************/
      part.addHeader ("Content-Transfer-Encoding", "base64");
      /**********************************************************/

      multipart.addBodyPart (part);
      /**********************************************************/
      // 메세지 Part 추가 E

      msg.setContent (multipart);

      Transport.send (msg);
   }
   catch (MessagingException mex)
   {
      mex.printStackTrace ();
   }
}

'Java > 오류해결' 카테고리의 다른 글

JavaMail 사용시 501 Syntax error 해결방법  (0) 2012.05.02

WatchService 코드 정리

Java/NIO 2013. 1. 5. 12:18 Posted by 퓨어레드
package kr.purred.nioWatch.main;

import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchEvent.Kind;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
import java.util.concurrent.TimeUnit;

public class Program
{

	/**
	 * @param args
	 */
	public static void main (String[] args)
	{
		WatchService watchService = null;
		Path path = null;
		
		try
		{
			path = Paths.get ("P:/Dev/Java/Sample/NIO/nioWatch/src/kr/purred/nioWatch/main");
			
			watchService = FileSystems.getDefault ().newWatchService ();
			
			path.register (watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_MODIFY, StandardWatchEventKinds.ENTRY_DELETE);
			
			while (!Thread.interrupted ())
			{
				// 와치 키를 가져오고 큐에서 키를 제거
				WatchKey key = watchService.poll ((long) 1, TimeUnit.SECONDS);
				
				if (key != null)
				{
					for (WatchEvent<?> watchEvent : key.pollEvents ())
					{
						// 미처리 이벤트 수
						System.out.println ("WatchEvent Count : " + watchEvent.count ());
						
						// 이벤트 종류를 가져온다.
						Kind<?> kind = watchEvent.kind ();
						
						// OVERFLOW 이벤트를 처리한다.
						if (kind == StandardWatchEventKinds.OVERFLOW)
							continue;
						
						System.out.println (kind);
						
						WatchEvent<Path> pathWatchEvent = (WatchEvent<Path>) watchEvent;
						
						Path fileName = pathWatchEvent.context ();
						
						System.out.println (fileName.getFileName ());
					}

					System.out.println ("키 Reset");
					
					boolean vaildKey = key.reset ();
					
					if (!vaildKey)
						break;
				}
				else
				{
					System.out.println ("감시중 ...");
				}
			}
			
			watchService.close ();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		catch (InterruptedException e)
		{
			e.printStackTrace();
		}
	}

}

XML 암호화 관련 링크

Java/기본 2013. 1. 3. 13:04 Posted by 퓨어레드

1. XML 암호화 문법(W3C)

 

http://www.w3.org/TR/xmlenc-core/

 

2. XML 암호화 관련 링크(소스 및 라이브러리 링크 포함)

 

http://blog.naver.com/hyun43/40016544125

 

3. 정보보안기술의 특징과 종류

 

http://k.daum.net/qna/openknowledge/view.html?qid=3gry5&category_id=DBK004&q=cipher

 

4. J2SE5 에서 XML 전자서명 API 사용하기

 

http://blog.naver.com/celestialorb?Redirect=Log&logNo=40011532325

 

5.  Java 암호화 아키텍쳐 API 의 사양 및 레퍼런스  : JCE(Java cryptography extension) API

 

http://blog.naver.com/havocgood?Redirect=Log&logNo=40039713086

 


 

'Java > 기본' 카테고리의 다른 글

String 형 Date 형으로 파싱하기.  (0) 2012.10.30
Java.. 레이블된 break, continue  (0) 2012.04.18
현재 사용하는 OS 이름 가져오기  (0) 2012.04.18
ByteStream  (0) 2012.04.18
Method 동적 호출  (0) 2012.04.18

ANT SSH 제어 예제

Java 2012. 11. 30. 22:00 Posted by 퓨어레드

fmt:formatDate 쓰기

Java/JSP 2012. 11. 2. 23:27 Posted by 퓨어레드
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<fmt:formatDate value="${dateFmt}" pattern="yyyy-MM-dd" var="invDtFmt" />

'Java > JSP' 카테고리의 다른 글

JSTL 에서 List Size 구하기..  (0) 2012.05.03
EL 중 list 데이터 존재 여부 확인  (0) 2012.05.02
No-Cache 설정  (0) 2012.05.02
EL  (0) 2012.04.18
JSTL (JSP Standard Tag Library) 1차 정리  (0) 2012.04.18

String 형 Date 형으로 파싱하기.

Java/기본 2012. 10. 30. 10:22 Posted by 퓨어레드
DateFormat df = new SimpleDateFormat ("yyyy-mm-dd");

Date date = df.parse ("2012-10-30");

'Java > 기본' 카테고리의 다른 글

XML 암호화 관련 링크  (0) 2013.01.03
Java.. 레이블된 break, continue  (0) 2012.04.18
현재 사용하는 OS 이름 가져오기  (0) 2012.04.18
ByteStream  (0) 2012.04.18
Method 동적 호출  (0) 2012.04.18

여러개인 경우 column="{column1, column2, ..}" 와 같이 나열하거나

parameter에 이름을 지정하고 싶을 경우는 column="{key1=column1, key2=column2, ...}"의 형태로 써주면 된다

'Java > iBatis' 카테고리의 다른 글

iBatis Cache 모델  (0) 2012.04.18
iBatis RowHandler  (0) 2012.04.18
iBatis ResultMap 상속  (0) 2012.04.18

JSTL 에서 List Size 구하기..

Java/JSP 2012. 5. 3. 15:21 Posted by 퓨어레드

1. 태그 라이브러리 선언

 

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 

2. 리스트 함수 사용

 

${fn:length(userFuncs)}

 

사이즈가 구해진다!

'Java > JSP' 카테고리의 다른 글

fmt:formatDate 쓰기  (0) 2012.11.02
EL 중 list 데이터 존재 여부 확인  (0) 2012.05.02
No-Cache 설정  (0) 2012.05.02
EL  (0) 2012.04.18
JSTL (JSP Standard Tag Library) 1차 정리  (0) 2012.04.18

EL 중 list 데이터 존재 여부 확인

Java/JSP 2012. 5. 2. 15:01 Posted by 퓨어레드

<c:if test = "${empty listData}">

</c:if>

 

empty 연산자~

 

'Java > JSP' 카테고리의 다른 글

fmt:formatDate 쓰기  (0) 2012.11.02
JSTL 에서 List Size 구하기..  (0) 2012.05.03
No-Cache 설정  (0) 2012.05.02
EL  (0) 2012.04.18
JSTL (JSP Standard Tag Library) 1차 정리  (0) 2012.04.18

No-Cache 설정

Java/JSP 2012. 5. 2. 15:00 Posted by 퓨어레드

JSP에서 No-Cache 설정하는 방법

웹개발 하다보면 캐쉬된 페이지때문에 가끔 웹브라우저가 재시동하거나, 웹서버를 재시동하는 경우가 있었을 것이다. 그런 경우 캐쉬에서 불러오는 것이 아니라 항상 최신의 페이지를 보여주도록 하는 방법입니다. 데이터가 넘어가는 경우에만 '만료된 페이지입니다' 라는 메시지를 보여주게 되져

다음은 각각의 케이스별 No-Cache 설정방법입니다.


HTML인 경우
<META http-equiv="Expires" content="-1">
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Cache-Control" content="No-Cache">

ASP인 경우
<%
Response.Expires = 0
Response.AddHeader "Pragma","no-cache"
Response.AddHeader "Cache-Control","no-cache,must-revalidate"
%>

JSP인 경우
<%
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires",0);
if (request.getProtocol().equals("HTTP/1.1"))
response.setHeader("Cache-Control", "no-cache");
%>

PHP인 경우
<?
header("Pragma: no-cache");
header("Cache-Control: no-cache,must-revalidate");
?>



헌데 Struts Framework 사용시에는 아래와 같은 설정을 꼭 해주셔야 위의 내용이 적용이 된다고 하네요.(스트럿츠를 안써서리 잘 모르겠지만...)


processNoCache()는 struts-config.xml설정파일의 <controller>설정에서 nocache attribute가 true로 설정되어 있을 경우 호출된다.

만약 true라면 response객체의 header에 Pragma, Cache-Control, Expires가 추가되게 된다. 스트러츠 Framework에서는 struts-config.xml설정파일에 단지 true로 설정해주면 Cache가 적용되지 않는다.

즉 <controller nocache="true" />라는 설정을 struts-config.xml에 추가하면 끝.


 

'Java > JSP' 카테고리의 다른 글

fmt:formatDate 쓰기  (0) 2012.11.02
JSTL 에서 List Size 구하기..  (0) 2012.05.03
EL 중 list 데이터 존재 여부 확인  (0) 2012.05.02
EL  (0) 2012.04.18
JSTL (JSP Standard Tag Library) 1차 정리  (0) 2012.04.18