toISOString 은 UTC시간을 기준으로 반환하기 때문에 한국과 9시간이 차이가 난다.
 
해결방법은
  1. 한국의 offset을 수동으로 추가한 뒤 그 값을 빼주기
  2. moment.js 라이브러리 사용하기
라이브러리는 추가적으로 사용하고 싶지 않으니까 offset을 수동으로 추가하는 방법을 사용한다.
var date = new Date();
var offset = date.getTimezoneOffset() * 60000;
var dateOffset = new Date(date.getTime() - offset);
var base_date = dateOffset.toISOString().substring(0,20).replace(/-/g,'');
 
반응형
 
Select 한 결과를 resultClass 에 매핑할때 오류가 발생한다.
 
1. resultClass="java.util.Map"  으로 사용한경우
    resultClass="java.util.HashMap" 으로 변경해주면 해결됨
    Map은 인터페이스라 객체성성이 안되서 발생
 
2. 임의로 만든 Class 에서 발생한 경우
    생성자가 없어서 발생
 
발생한 Class 예제
@Setter
@Getter
@Builder
public class PersonDto  {
     private int age;
     private String name;
}
 
@NoArgsConstructor
@AllArgsConstructor​
를 추가 하면  해결됨
반응형

1. 윈도우 오른쪽 하단의 네트워크 아이콘(PC모양) 우클릭하여 네트워크 및 인터넷 설정 열기 클릭한다.

 

 

 

 

 

 

2. 설정창에서 이더넷 > 아댑터 옵션 변경 > 이더넷 우클릭 속성 선택 > 속성 에서 Microsoft 네트워크요 파일 및 프린터 공유 체크 해제 > 확인 클릭

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. PC를 재부팅 해서 확인해보면 445 포트가 사라졌다.

 

반드시 재부팅해야 적용됨

 

-끝-

반응형
1. 의존성 추가
<dependency>
    	<groupId>javax.mail</groupId>
    	<artifactId>javax.mail-api</artifactId>
   	<version>1.6.2</version>
</dependency>
<dependency>
	<groupId>com.sun.mail</groupId>
	<artifactId>javax.mail</artifactId>
	<version>1.6.2</version>
</dependency>

 

2. 샘플코드 

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class EmailSender {

    // 구글 이메일
    static final String user_email= "XXXXX@gmail.com";
    // 구글 비번
    static final String user_pw = "XXXXX";
    
    static final String smtp_host = "smtp.gmail.com";
    static final int smtp_port = 465;  // TLS : 587, SSL : 465

    public static void Send() throws Exception {
        Properties props = System.getProperties();
        props.put("mail.smtp.host", smtp_host); 
        props.put("mail.smtp.port", smtp_port); 
        props.put("mail.smtp.auth", "true"); 
        props.put("mail.smtp.ssl.enable", "true"); 
        props.put("mail.smtp.ssl.trust", smtp_host);
        
        Session session = Session.getInstance(props,
                new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(user_email, user_pw);
                    }
                });
        
        try {

            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(user_email));

           // 받는 이메일
            message.setRecipients(
                    Message.RecipientType.TO,
                    InternetAddress.parse("XXXXX@gmail.com, XXXXX@naver.com")    
            );
	
	  // 제목
            message.setSubject("테스트 메일입니다."); 
	  
	   // 내용
            message.setText("이것은 테스트 메일입니다. \n\n 잘 갔나요?");

            // 발송
            Transport.send(message);
            
        } catch (MessagingException e) {
            e.printStackTrace();
            System.out.println(e.getMessage());
        }
    }
}

위 코드를 실행했더니 

Application-specific password required

오류가 발생한다.

구글링 해보니 2차인증 설정시 발생하는 오류라고 함

해결방법은  구글 보안탭에서  앱 비밀번호를 생성해서 사용하면 된다.
 
3. 앱 비밀번호 만들고 사용하기
1) 구글계정으로 이동 (https://myaccount.google.com/)
2) 보안  선택

 

3) 2단계 인증 선택

4) 맨밑에 앱 비밀번호 선택

5) 앱 선택 : 메일, 기기 선택 : windows 컴퓨터, 생성 클릭 하면 16자리 비밀번호가 생성된다.

 

6) 생성된 비밀번호를 user_pw 로 사용하면 메일 잘 발송된다.

 

 

 

 

반응형
jsoup 으로 json, xml 결과 페이지를 호출하면
Unhandled content type. Must be text/*, application/xml, or application/*+xml 
오류가 발생함
 
해결방법은
.ignoreContentType(true)  설정하면 됨
 
Jsoup.connect("/test.json")
  	.ignoreContentType(true)
  	.method(Method.GET)
  	.execute();

혹은 header에 ContentType 을 json이나 xml 로 지정해도 될 듯.

 

끝.

반응형

+ Recent posts