나는 분명히 이메일을 보내도록 자바 메일 서블릿을 만들었습니다. 그것은 프로덕션 서버에서 완벽하게 작동하지만 내가 시도하고 내 자신의 홈 서버에서 다음과 같은 오류 메시지가 나타납니다자바 메일이 원격으로 작동하지 않습니다.
javax.mail.SendFailedException : 잘못된 주소;
javax.servlet.ServletException : javax.mail.SendFailedException : 잘못된 주소. 상자의 예외는 다음과 같습니다 com.sun.mail.smtp.SMTPAddressFailedException : 554 5.7.1 < * @ googlemail.com> : 릴레이 액세스 I가 로컬 호스트에서 호스트 변수를 변경
evo.net.Mail.service(Mail.java:60)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52
거부 서블릿에있는 서버의 IP는 차이를 만들어 내지 못했습니다.
내 코드 :
package evo.net;
import java.util.*;
import javax.mail.*;
import javax.mail.Session;
import javax.mail.internet.*;
import javax.activation.*;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Mail")
public class Mail extends HttpServlet {
private static final long serialVersionUID = 1L;
public Mail() {
super();
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
String to = "********";
String from = "*******@codeprojects.co.uk";
String host = "codeprojects.co.uk";
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("root", "*****");
}
});
try {
Transport trans = session.getTransport("smtp");
trans.connect("root", "******");
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("The subject");
message.setText("Hello World");
trans.sendMessage(message, message.getAllRecipients());;
out.println("Test");
} catch(MessagingException mex) {
throw new ServletException(mex);
}
}
}
잘 모르겠지만 스팸 일 수 있으므로 도메인이나 Gmail이 필요하다고 생각합니다. 요청을 거부합니다. 내 생각 엔 프로덕션 서버의 호스트 이름이 google이고 홈 서버가 아닌 것으로 알려져 있습니다. – Selim
방금 코드를 게시했습니다. 프로덕션 서버는 내 메일 서버가 설치된 상태에서 나에게 속한 서버입니다. – user3473776