본문 바로가기

개발공부/웹개발

[Spring] smtp 사용 mail보내기 구현

* 나는 자체 smtp서버 이용함!

보니까 naver나 daum, google에서 지원해주는 서버도 있음~ 코드는 거의 동일하니 설정해서 쓰면될듯!


1. pom.xml에서 dependency 추가

 <!-- 메일발송 -->
		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.4.7</version>
		</dependency>

2. root-context.xml에서 mail 서버 설정 추가

<!-- smtp 설정 --> 
	<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
	<property name="host" value="서버주소" /> 
	<property name="port" value="25" />
	<property name="username" value="아이디" />
	<property name="password" value="비밀번호" />
	<property name="defaultEncoding" value="utf-8" />
	<property name="javaMailProperties">
		<props>
			<prop key="mail.debug">true</prop>
			<prop key="mail.smtp.starttls.enable">true</prop>
			<prop key="mail.smtps.ssl.checkserveridentity">true</prop>
			<prop key="mail.smtp.auth">true</prop>
			<prop key="mail.smtps.ssl.trust">*</prop>
			<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
		</props>
	</property>
</bean>

3. controller에서 메일 구현서비스 

	@Autowired
	private JavaMailSender mailSender;

	@RequestMapping(value = "/sendmail.do", method = RequestMethod.POST)
	public String sendmail(@RequestParam("from")String from, @RequestParam("title")String title, @RequestParam("content")String content) throws Exception {
		logger.info("sendmail 들어온다! ");
		
		String setfrom = ""; //보내는 사람
		String settitle = title; // 제목
		String setcontent = content; // 내용
		
		String tomail = ""; // 받을 주소
		

		try {
			MimeMessage message = mailSender.createMimeMessage();
			MimeMessageHelper messageHelper = new MimeMessageHelper(message,
					true, "UTF-8");

			messageHelper.setFrom(setfrom); // 보내는사람 (필수)
			messageHelper.setTo(tomail); // 받는사람 이메일
			messageHelper.setSubject(title); // 메일제목은
			messageHelper.setText(content); // 메일 내용

			mailSender.send(message);
		} catch (Exception e) {
			System.out.println(e);
		}
		
		return "redirect:/main.do";
	}