jsp에서 메일을 전송하려 하는데 에러발생
<%@ page contentType = "text/html; charset=utf-8" %>
<%@ page import="java.util.*,java.io.*,javax.mail.*,javax.mail.internet.*,javax.activation.*" %>
<%
class MyAuthentication extends Authenticator {
PasswordAuthentication passwordAuthentication;
MyAuthentication(String userName, String password) {
passwordAuthentication = new PasswordAuthentication(userName, password);
}
public PasswordAuthentication getPasswordAuthentication() {
return passwordAuthentication;
}
}
%>
<%
String subject = "aaaTest";
String content = "bbbbbbb";
String to = "aaa@nate.com";
String from = "bbb@smtpserver.co.kr"; // 임의로 smtpserver라고 했습니다.
String mailServerName = "mail.smtpserver.co.kr";
int mailServerPort =25;
Properties props = new Properties();
props.put("mail.smtp.host", mailServerName);
props.put("mail.smtp.port", String.valueOf(mailServerPort));
props.put("mail.smtp.auth","true");
Authenticator auth = new MyAuthentication("id","pw");
Session sess= Session.getInstance(props, null);
Message msg = new MimeMessage(sess);
InternetAddress address = new InternetAddress(to);
InternetAddress fromAddr = new InternetAddress(from);
msg.setFrom(fromAddr);
msg.setRecipient(Message.RecipientType.TO, address);
msg.setSubject(subject);
msg.setSentDate(new java.util.Date());
msg.setContent(content,"text/html;charset=euc-kr");
Transport.send(msg);
%>
<script language="javascript">
alert("success");
</script>까지가 소스이구요
에러부분은
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /sample/Ab.jsp at line 45
42: msg.setSubject(subject);
43: msg.setSentDate(new java.util.Date());
44: msg.setContent(content,"text/html;charset=euc-kr");
45: Transport.send(msg);
46:
47:
48: %>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
javax.servlet.ServletException: javax.mail.AuthenticationFailedException: failed to connect, no password specified?
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:912)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
org.apache.jsp.sample.Ab_jsp._jspService(Ab_jsp.java:129)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:33
smtp 서버를 이용해 메일을 보내다 보니 같은 smtp 서버내에서는 메일전송이 잘 되는데
nate, naver, daum 과 같은 사이트는 smtp 인증같은걸 해야해서 전송이 안되더라구요
그래서 mail.smtp.auth를 이용하여 해결해보려고 했는데 계속해서 에러가 나네요...
해결방법좀 부탁드립니다.


제가 했던 소스 첨부합니다.
제가 메일발송시 인증정보를 사용한 코드 일부를 보여드립니다.
if ( smtpUser != null && smtpUser.length() > 1 ) { props.put("mail.smtp.auth", "true"); Authenticator auth = new SMTPAuthenticator(smtpUser, smtpPassword); msgSession = Session.getDefaultInstance(props, auth); } else { msgSession = Session.getDefaultInstance(props); }즉, auth 인스턴스는 준비했는데, 사용하지 않은 것 같네요.
저는 Session.getDefaultInstance 메소드에 props, auth를 넘겨서 세션을 만들었습니다.
댓글 달기