본문 바로가기

꿈(개발)

spring 2.5에서 Javamail을 사용 gmail 발송 법

spring 2.5를 쓰는 분들이 없겠지만, 지금은 훨씬 더 나은 api를 제공하고 있다고 한다.

하지만, 요런 사람들(나같은)에게 유용할 것 같아 남겨 본다.


따박따박 친절한 설명대신 내가 짠 코드로 설명 드리겠다.

@Controller

public class MemberAction extends ActionController {

...

@Autowired

private JavaMailSender jMailSender;


public boolean mailSend(String newPassword, String name, String account, String emailAddr){

try {

MimeMessage msg = jMailSender.createMimeMessage();

Address addr = new javax.mail.internet.InternetAddress(발송할메일주소@도메인", "보내는 이름");

msg.setFrom(addr);

msg.setSubject("메일 제목", "utf-8");

String text = "";

text += "html로 메일 양식 작성";

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

msg.setRecipient(RecipientType.TO, new InternetAddress(emailAddr));// 받는 분

jMailSender.send(msg);

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

...

}

spring-config.xml에서는 아래와 같이 추가한다.

<bean id="mailSender" class ="org.springframework.mail.javamail.JavaMailSenderImpl" >

        <property name="host" value="smtp.gmail.com" />

<property name="port" value="587" />

<property name="username" value="보내려는 gmail 아이디명" />

<property name="password" value="위 아이디의 비번" />

<property name="javaMailProperties">

<props>

<prop key="mail.smtp.starttls.enable">true</prop>

</props>

</property>

</bean>

위 와 같이 하면 바로 발송 된다.

한 가지 팁을 드리면, 위와 같이 만들고 웹에서 해당 메소드를 호출하면 메일 발송 되는 동안 멍하니 가만 있는다.

이런 경우 메일 발송 성공 여부를 return하여(위 소스 처럼)jquery로 ajax 처리하면 쉽게 loading 화면을 만들 수 있다.


기억 보다 기록!