メールを送信
送信部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 = "[email protected]";
String password = "azaa8613..";
String host = "smtp.gmail.com";
String sender = vo.getSender_address();
String receiver = "[email protected]";
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;
}
}
Reference
この問題について(メールを送信), 我々は、より多くの情報をここで見つけました https://velog.io/@gjtkdan7777/메일-보내기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol