메일 보내기

허상무·2021년 6월 21일
0

보내는 부분 jsp

<section class="contact" id="contact">
			<div>
				<h1>CONTACT US</h1>
				<h2>궁금하신 사항이 있으시면 문의하기를 이용해주세요<br>담당자가 자세하게 안내해 드리겠습니다</h2>
				<ul>
					<li><input type="text" id="title" name="title" placeholder="제목"></li>
					<li><input type="text"id="sender_address" name="sender_address"  placeholder="이메일"></li>
					<li>
						<textarea rows="10" cols="10" id="content" name="content" placeholder="문의 내용을 입력해주세요"></textarea>
					</li>
				</ul>
				<input type="checkbox" id="agree" value="-1"><label for="agree">이메일 수집을 동의합니다</label>
				<span>해당 문의에 대한 회신 목적으로 에메일을 수집하며,<br>문의 민원 해결 후 파기합니다</span>
				<button id="email_send">이메일 전송</button>
			</div>
		</section>

컨트롤러로 보내는 AJAX

$("input:checkbox").on('click', function(){
		if($(this).prop('checked')){
			document.getElementById("agree").value = "1";
            // 이메일 수신동의체크 여부
		}else{
			document.getElementById("agree").value = "-1";
		}
	});
	
	$('#email_send').on('click', function(){
		const agree = $('#agree').val();
		if(agree != 1){
			alert('이메일 수집에 동의해야 메일 발신이 가능합니다.');
		}else{
			var regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
	
			const title = $('#title').val();
			const sender_address = $('#sender_address').val();
			const content = $('#content').val();
			if(title == ""){
				alert('제목을 입력해주세요.');
				return;
			}
			if(sender_address=="" || sender_address.match(regExp)==null || sender_address.length<14){
				alert('이메일을 양식에 맞춰 입력해 주세요');
				return;
			}
			if(content.length<10){
				alert('문의내용은  10자 이상 입력해주세요.');
				return;
			}
				$.ajax({
					type:'POST',
					url:'/mobile/sendemail.do',
					data : {
						"title" : title,
						"sender_address" : sender_address,
						"content" : content
					},
					success: function(data){
						if(data=="success"){
							location.replace("/mobile/mainPage.do");
							alert("메일이 전송되었습니다.");
						}else{
							alert("메일이 전송이 실패하였습니다.");
						}
						
					},error: function(e){
						alert(e);
					}
				});
			}
	});

컨트롤러

@RequestMapping(value = "/main/sendemail.do")
	@ResponseBody
	public String getSendEmail(ScEmailLogVO vo, HttpServletRequest request, ModelMap model) throws Exception {
		if(MyMail.gmailMailSend(vo)>0) {
			service.insertMailLog(vo);
		}else {
			System.out.println();
			return "fail";
		}
		System.out.println("mailservice");
		return "success";
		
	}

비지니스 로직

package com.app.sechan.homePage.Mail;

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;

import com.app.sechan.cmmn.com.dto.ScEmailLogVO;


public class MyMail {
		public static int gmailMailSend(ScEmailLogVO vo) { 
			System.out.println(vo);
		    String user = "gjtkdan777@gmail.com"; 
		    String password = "azaa8613..";
		    String host = "smtp.gmail.com";
		    String sender = vo.getSender_address();
		    String receiver = "tkdan7777@sechaninc.com";
		    String title = vo.getTitle();
		    String content = vo.getContent();
		    // SMTP 서버 정보를 설정한다. (ssl적용에따라 설정옵션이 달라진다. 아래는 ssl적용 안한버전이다.)
		   
		    Properties prop = new Properties();
		    prop.put("mail.smtp.host", host);
		    prop.put("mail.smtp.port", 465);
		    prop.put("mail.smtp.auth", "true");
		    prop.put("mail.smtp.ssl.enable", "true");
		    prop.put("mail.smtp.ssl.trust", host);

	                                                                             
	        //인증	    
		    Session session = Session.getDefaultInstance(prop, new javax.mail.Authenticator() {
	            protected PasswordAuthentication getPasswordAuthentication() {
	                return new PasswordAuthentication(user, password);
	            }
	        });
		    session.setDebug(true);
		    
		    try { 
		        MimeMessage message = new MimeMessage(session); 
	            
		        //받는사람 메일
		        message.setFrom(new InternetAddress(sender)); 
		        message.addRecipient(Message.RecipientType.TO, new InternetAddress(receiver)); 
		        	
		        // 메일 제목 
		        message.setSubject(title);
		        // 메일 내용 
		        message.setText("보내는 사람 : "+sender+"\n\n 문의내용 \n\n "+content); 
		        // send the message 
		        Transport.send(message); 
		    } catch (MessagingException e) {
		        e.printStackTrace(); 
		    }
		    return 1;
		}

}
profile
극초보개발새발자

0개의 댓글