java 프로젝트를 하다가 메일을 발송하는데 메일 주소의 유효성 검사 및 메일 주소의 정보 오류가 있는지 검사하는 로직이 필요한 일이 있다.

 

보통 작업은 메일 발송하면 끝나는데 캠페인의 메일 발송은 대량으로 이루어지고 발송된 메일의 반응을 받아서 통계를 경우가 있다.

이때 메일 발송의 코드는 "20" 이고, 메일 오픈은 "30" 메일 클릭은 "40" 정보오류는 "50" 이라고 하면

 

1) 발송 (코드 : 20)의 경우 메일을 발송할 때 DB에 "20" 코드를 insert 및 update 하면 된다.

 

2) 메일 오픈 (코드 : 30)의 경우 DB에 피드백을 받으려면 메일의 내용에 "<IMG width=0 height=0 src='http://000.000.00.000:8080/scheduler/emailResponse.do?campaignEmailSendId={CAMPAIGN_EMAIL_SEND_ID}&amp;R=30&amp;L={LOGID}&amp;T={TOEMAIL}'>"; 요런 형식으로 img 태그를 사용한다.

요즘 포탈사이트에서는 메일 내용에 태그나 스크립트를 제거하여 iframe을 사용하지 못하여 img를 사용 한다.

 

3) 클릭 (코드 : 40)의 경우 <a href="http://000.000.00.000:8080/admin/campaign/emailResponse.do?campaignEmailSendId={CAMPAIGN_EMAIL_SEND_ID}&amp;R=40&amp;L={LOGID}&amp;T={TOEMAIL}">이미지</a> 요런 형식으로 a 태그를 사용한다.

 

4) 정보오류 (코드 : 40)의 경우 입니다.

- 이메일 주소 유효성 검사

import java.util.regex.Matcher;
import java.util.regex.Pattern;

 

Pattern p = Pattern.compile("^(?:\\w+\\.?)*\\w+@(?:\\w+\\.)+\\w+$"); 
Matcher m = p.matcher(email);
return m.matches();

 

- 이메일 서버 도메인 검사 (사용시 try를 사용해야 한다.)

import java.util.Hashtable;

import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;

try
{
 Hashtable env = new Hashtable();
 env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
 DirContext ictx = new InitialDirContext( env );
 
 String strEmail = abcdefg@naver.com;
 String[] result = strEmail.split("@");
 
 // Attributes attrs = ictx.getAttributes( "dideodn.com", new String[] { "MX" });
 System.out.println("메일 서버====>>>"+result[result.length - 1]);
 logger.info("메일 서버====>>>"+result[result.length - 1]);
   
 Attributes attrs = ictx.getAttributes( result[result.length - 1], new String[] { "MX" });
 
 Attribute attr = attrs.get( "MX" );

 if( attr == null )
 {
  System.out.println("메일 서버가 없습니다.");
 }
 else{
  System.out.println(attr.size() + "의 메일 서버가 있습니다.");
 }
}
catch(Exception e){}

+ Recent posts

 

java 프로젝트를 하다가 메일을 발송하는데 메일 주소의 유효성 검사 및 메일 주소의 정보 오류가 있는지 검사하는 로직이 필요한 일이 있다.

 

보통 작업은 메일 발송하면 끝나는데 캠페인의 메일 발송은 대량으로 이루어지고 발송된 메일의 반응을 받아서 통계를 경우가 있다.

이때 메일 발송의 코드는 "20" 이고, 메일 오픈은 "30" 메일 클릭은 "40" 정보오류는 "50" 이라고 하면

 

1) 발송 (코드 : 20)의 경우 메일을 발송할 때 DB에 "20" 코드를 insert 및 update 하면 된다.

 

2) 메일 오픈 (코드 : 30)의 경우 DB에 피드백을 받으려면 메일의 내용에 "<IMG width=0 height=0 src='http://000.000.00.000:8080/scheduler/emailResponse.do?campaignEmailSendId={CAMPAIGN_EMAIL_SEND_ID}&amp;R=30&amp;L={LOGID}&amp;T={TOEMAIL}'>"; 요런 형식으로 img 태그를 사용한다.

요즘 포탈사이트에서는 메일 내용에 태그나 스크립트를 제거하여 iframe을 사용하지 못하여 img를 사용 한다.

 

3) 클릭 (코드 : 40)의 경우 <a href="http://000.000.00.000:8080/admin/campaign/emailResponse.do?campaignEmailSendId={CAMPAIGN_EMAIL_SEND_ID}&amp;R=40&amp;L={LOGID}&amp;T={TOEMAIL}">이미지</a> 요런 형식으로 a 태그를 사용한다.

 

4) 정보오류 (코드 : 40)의 경우 입니다.

- 이메일 주소 유효성 검사

import java.util.regex.Matcher;
import java.util.regex.Pattern;

 

Pattern p = Pattern.compile("^(?:\\w+\\.?)*\\w+@(?:\\w+\\.)+\\w+$"); 
Matcher m = p.matcher(email);
return m.matches();

 

- 이메일 서버 도메인 검사 (사용시 try를 사용해야 한다.)

import java.util.Hashtable;

import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;

try
{
 Hashtable env = new Hashtable();
 env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
 DirContext ictx = new InitialDirContext( env );
 
 String strEmail = abcdefg@naver.com;
 String[] result = strEmail.split("@");
 
 // Attributes attrs = ictx.getAttributes( "dideodn.com", new String[] { "MX" });
 System.out.println("메일 서버====>>>"+result[result.length - 1]);
 logger.info("메일 서버====>>>"+result[result.length - 1]);
   
 Attributes attrs = ictx.getAttributes( result[result.length - 1], new String[] { "MX" });
 
 Attribute attr = attrs.get( "MX" );

 if( attr == null )
 {
  System.out.println("메일 서버가 없습니다.");
 }
 else{
  System.out.println(attr.size() + "의 메일 서버가 있습니다.");
 }
}
catch(Exception e){}

+ Recent posts