336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



package mdm.comm.util;


import java.util.List;

import java.util.Properties;

import javax.mail.Address;

import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

public class mailSend {

public static void send(List<String> toMail, String fromMail, String message, String title,String gmail, String id, String pwd)throws Exception{

Properties p = new Properties();

p.put("mail.smtp.user", "google계정@gmail.com"); 

p.put("mail.smtp.host", "smtp.gmail.com");

p.put("mail.smtp.port", "465");

p.put("mail.smtp.starttls.enable","true");

p.put( "mail.smtp.auth", "true");

p.put("mail.smtp.debug", "true");

p.put("mail.smtp.socketFactory.port", "465"); 

p.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 

p.put("mail.smtp.socketFactory.fallback", "false");    

Authenticator auth = new SMTPAuthenticator(id,pwd);

Session session = Session.getInstance(p, auth);

session.setDebug(true); // 메일을 전송할 때 상세한 상황을 콘솔에 출력한다.

MimeMessage msg = new MimeMessage(session);

msg.setSubject(title,"UTF-8");

Address fromAddr = new InternetAddress(fromMail); // 보내는 사람의 메일주소

msg.setFrom(fromAddr);

 InternetAddress[] addressTo = new InternetAddress[toMail.size()];

 for (int i = 0; i < toMail.size(); i++) {

  addressTo[i] = new InternetAddress(toMail.get(i));

 }

 msg.setRecipients(Message.RecipientType.TO, addressTo);


msg.setContent(message, "text/html;charset=utf-8");

 

Transport.send(msg);

}

private static class SMTPAuthenticator extends javax.mail.Authenticator {

String id;

String pwd;

SMTPAuthenticator(String id , String pwd){

this.id = id;

this.pwd = pwd;

}

public PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication("구글아이디", "pwd"); //구글아이디는 구글계정에서 @이후를 제외한 값이다. (예: abcd@gmail.com --> abcd)

}

}


* 다음과 같은 에러가 발생할 경우 gmail 계정을 2단계 인증으로 등록하고, 위 소스의 pwd란에 gmail용 비밀번호가 아닌 ACCESS 용 비밀번호를 등록해야 한다.

535-5.7.8 Username and Password not accepted. Learn more at

535 5.7.8 http://support.google.com/mail/bin/answer.py?answer=xxxx xxxxxx

javax.mail.AuthenticationFailedException


* gmail 2단계 인증하여 비밀번호 등록하는 법

1. https://myaccount.google.com/

2. https://accounts.google.com/b/0/SmsAuthConfig?hl=ko 
> 설정 시작

3. 재로그인

4. https://accounts.google.com/b/0/SmsAuthSettings?Setup=1
> 전화번호 입력 후 코드 전송

> 인증코드 입력

5. https://security.google.com/settings/security/apppasswords?pli=1
> 기기선택과 앱(MAIL) 선택 후 생성

6. 생성된 비밀번호를 위 소스의 pwd란에 입력한다.


'JAVA' 카테고리의 다른 글

SVN plugin으로 설치하기  (0) 2015.05.29
Eclipse SVN Market이용해서 설치하기  (0) 2015.05.29
Eclipse Git Plugin 설치하기  (0) 2015.05.29
Eclipse properties editor설치하기  (0) 2015.05.29
Eclipse plugin 삭제  (0) 2015.05.28
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



CREATE OR REPLACE PROCEDURE ADJDK.ADD_BOARD(IN_VAR IN VARCHAR2)
IS
BEGIN
    --BEGIN
        UPDATE BOARDTABLE
        SET B_TITLE = B_TITLE || IN_VAR
        WHERE B_NUM = 1;
    COMMIT;
END ADD_BOARD;
/

EXEC ADD_BOARD('1');



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.





CREATE OR REPLACE PROCEDURE ADJDK.TEST10(V_SU IN NUMBER) --선언문(매개변수)
IS
    IN_SU NUMBER(3) NOT NULL := 1;
    NOT_ONE_ERROR EXCEPTION; --에러를 정의합니다.
BEGIN
    DBMS_OUTPUT.PUT_LINE(IN_SU);
    FOR cnt IN (SELECT * FROM BOARDTABLE ORDER BY B_DATE ASC) LOOP    --FOR문을 조건은 쿼리입니다.
        DBMS_OUTPUT.PUT_LINE('현재 값은'||cnt.B_NUM||'입니다.');
    END LOOP;
   
    --cnt는 변수 IN 시작값..끝나는 값입니다.(밑에 매개변수대로 하면 1부터 3까지합니다.)
    FOR cnt IN 1..V_SU LOOP                                           --FOR문을 도는 조건은 NUMBER형 변수입니다.
        DBMS_OUTPUT.PUT_LINE('현재값은 '||cnt||'입니다.(LOOP)');
    END LOOP;
   
    EXCEPTION  --에러 시작
        WHEN NOT_ONE_ERROR THEN --해당 에러라면 밑에 구문처리합니다.
            DBMS_OUTPUT.PUT_LINE('입력한 숫자는 1이 아닙니다.');
        WHEN OTHERS THEN  --다른 에러라면 밑에 구문을 처리합니다.
            DBMS_OUTPUT.PUT_LINE('예외발생');
   
END TEST10; --프로시저 마침
/

EXEC TEST10(3); --실행구문

+ Recent posts