2015-09-09 3 views
1

Я пытаюсь отправить почту на Java, и я искал ее, я нашел часть кода, и я попытался запустить его, но он дает мне это исключение: Я использую интеграцию Spring Hibernate В Project. В этой работе у меня есть xml-файл для извлечения bean, jsp-страницы, содержащей кнопку, контроллер и класс java.Исключение произошло при отправке почты весной

Exception in MAILMAIL.JAVA:org.springframework.mail.MailSendException; nested exceptions (0) are: 
10:11:28,979 ERROR [STDERR] org.springframework.mail.MailSendException; nested exceptions (0) are: 
10:11:28,979 ERROR [STDERR]  at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.j ava:419) 
10:11:28,979 ERROR [STDERR]  at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.jav a:308) 
10:11:28,979 ERROR [STDERR]  at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.jav a:297) 
10:11:28,979 ERROR [STDERR]  at com.sample.other.MailMail.sendMail(MailMail.java:24) 
10:11:28,979 ERROR [STDERR]  at com.sample.web.MailController.handleRequestInternal(MailController.java:61) 
10:11:28,979 ERROR [STDERR]  at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractCon troller.java:153) 
10:11:28,979 ERROR [STDERR]  at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(Simple ControllerHandlerAdapter.java:48) 
10:11:28,979 ERROR [STDERR]  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.j ava:861) 
10:11:28,979 ERROR [STDERR]  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.ja va:795) 
10:11:28,979 ERROR [STDERR]  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet .java:476) 
10:11:28,979 ERROR [STDERR]  at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:44 1) 
10:11:28,980 ERROR [STDERR]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
10:11:28,980 ERROR [STDERR]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
10:11:28,980 ERROR [STDERR]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt erChain.java:290) 
10:11:28,980 ERROR [STDERR]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain. java:206) 
10:11:28,980 ERROR [STDERR]  at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:9 6) 
10:11:28,980 ERROR [STDERR]  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt erChain.java:235) 
10:11:28,980 ERROR [STDERR]  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain. java:206) 
10:11:28,980 ERROR [STDERR]  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:2 35) 
10:11:28,980 ERROR [STDERR]  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:1 91) 
10:11:28,980 ERROR [STDERR]  at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociatio nValve.java:190) 
10:11:28,980 ERROR [STDERR]  at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) 
10:11:28,980 ERROR [STDERR]  at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(Security ContextEstablishmentValve.java:126) 
10:11:28,980 ERROR [STDERR]  at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityC ontextEstablishmentValve.java:70) 
10:11:28,980 ERROR [STDERR]  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
10:11:28,980 ERROR [STDERR]  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
10:11:28,980 ERROR [STDERR]  at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionVa lve.java:158) 
10:11:28,980 ERROR [STDERR]  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109 ) 
10:11:28,980 ERROR [STDERR]  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) 
10:11:28,980 ERROR [STDERR]  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) 
10:11:28,980 ERROR [STDERR]  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Pr otocol.java:601) 
10:11:28,980 ERROR [STDERR]  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
10:11:28,980 ERROR [STDERR]  at java.lang.Thread.run(Thread.java:745) 
10:11:28,980 ERROR [STDERR] Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587; 
    nested exception is: 
java.net.SocketException: Permission denied: connect 
10:11:28,980 ERROR [STDERR]  at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282) 
10:11:28,981 ERROR [STDERR]  at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370) 
10:11:28,981 ERROR [STDERR]  at javax.mail.Service.connect(Service.java:275) 
10:11:28,981 ERROR [STDERR]  at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.j ava:389) 
10:11:28,981 ERROR [STDERR]  ... 32 more 
10:11:28,981 ERROR [STDERR] Caused by: java.net.SocketException: Permission denied: connect 
10:11:28,981 ERROR [STDERR]  at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
10:11:28,981 ERROR [STDERR]  at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79 ) 
10:11:28,981 ERROR [STDERR]  at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) 
10:11:28,981 ERROR [STDERR]  at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:2 00) 
10:11:28,981 ERROR [STDERR]  at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) 
10:11:28,981 ERROR [STDERR]  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
10:11:28,981 ERROR [STDERR]  at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
10:11:28,981 ERROR [STDERR]  at java.net.Socket.connect(Socket.java:579) 
10:11:28,981 ERROR [STDERR]  at java.net.Socket.connect(Socket.java:528) 
10:11:28,981 ERROR [STDERR]  at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:232) 
10:11:28,981 ERROR [STDERR]  at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189) 
10:11:28,981 ERROR [STDERR]  at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1250) 
10:11:28,981 ERROR [STDERR]  ... 35 more 

index.jsp:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
<h1>Mail A Link</h1> 
<form name="mailsend" method="post" action="mailsend.do" id="employeeCreation"> 
<input type="submit" name="mailbutton" value="SEND LINK" id="mailbutton"> 
</form> 
</body> 
</html> 

XML:

<bean id="viewResolver"  class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="requestContextAttribute" value="rc"/> 
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
    <property name="prefix" value="/WEB-INF/jsp/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 
<bean id="MailController" class="com.sample.web.MailController"> 
    <property name="successView"><value>Home</value></property> 
    <property name="failedView"><value>../../index</value></property> 
    <property name="updateView"><value>Home</value></property>  
</bean>  
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
     <props> 
       <prop key="mailsend.do">MailController</prop> 
       <!-- <prop key="Login.do">UserController</prop> --> 
     </props> 
     </property>  
</bean> 
<bean id="mailSender"  
class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
<property name="host" value="smtp.gmail.com" /> 
<property name="username" value="[email protected]" /> 
<property name="password" value="sender'spassword" /> 
<property name="javaMailProperties"> 
    <props> 
      <prop key="mail.smtp.auth">true</prop> 
      <prop key="mail.smtp.socketFactory.port">587</prop> 
      <prop key="mail.smtp.socketFactory.class">javax.net.ssl. 
          SSLSocketFactory</prop> 
      <prop key="mail.smtp.port">587</prop> 
    </props> 
</property> 
</bean> 
<bean id="mailMail" class="com.sample.other.MailMail"> 
<property name="mailSender" ref="mailSender" /> 
</bean> 

MailController.java:

public ModelAndView handleRequestInternal(HttpServletRequest request,HttpServletResponse response) throws Exception 
{ 
    try{   
    Resource r=new ClassPathResource("example-servlet.xml");   
    BeanFactory b=new XmlBeanFactory(r); 
    MailMail m=(MailMail)b.getBean("mailMail"); 
    String sender="[email protected]";//write here sender gmail id 
    String receiver="[email protected]";//write here receiver id 
    m.sendMail(sender,receiver,"hi","welcome");    
    System.out.println("success"); 
    } 
catch(Exception e){ 
    System.out.println("An Exception Occured:"+e); 
    e.printStackTrace();  
} 
} 

MailMail.java:

public void sendMail(String from, String to, String subject, String msg) { 
    try{ 
    SimpleMailMessage message = new SimpleMailMessage(); 
    message.setFrom(from); 
    message.setTo(to); 
    message.setSubject(subject); 
    message.setText(msg); 
    mailSender.send(message); 
    }catch(Exception e){ 
     System.out.println("Exception in MAILMAIL.JAVA:"+e); 
     e.printStackTrace(); 
    } 
} 

Пожалуйста, помогите мне решить issue.I попыталась так много кодов из google.Finally получила такое же исключение:

10:11:28,980 ERROR [STDERR] Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587; 
nested exception is: 
java.net.SocketException: Permission denied: connect 
10:11:28,980 ERROR [STDERR]  at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282) 
10:11:28,981 ERROR [STDERR]  at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370) 
10:11:28,981 ERROR [STDERR]  at javax.mail.Service.connect(Service.java:275) 
10:11:28,981 ERROR [STDERR]  at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.j ava:389) 
10:11:28,981 ERROR [STDERR]  ... 32 more 

Как решить эту проблему Если у вас есть какой-либо другой способ, чтобы отправить сообщение к действительной почте с весной, Тогда, пожалуйста, предоставьте код. Thank you

+0

не может у изменить порт не 587 до 25? – soorapadman

+0

Можете ли вы попробовать следовать этому [учебнику MKYong] (http://www.mkyong.com/spring/spring-sending-e-mail-via-gmail-smtp-server-with-mailsender/) _exactly_? Ваша конфигурация выглядит несколько иначе, чем та, которая используется в учебнике. –

+0

, если вы работаете на порту 587, требуется tls, поэтому я предполагаю, что вы должны добавить свой конфиг true BadK

ответ

1

Вы не можете использовать GMail без аутентификации. Вам необходимо использовать порт 465 не 587.

Пожалуйста, посмотрите http://email.about.com/od/accessinggmail/f/Gmail_SMTP_Settings.htm

настройки сервера Коллективы Gmail SMTP для отправки почты через Gmail из любой почтовой программы являются:

Gmail SMTP server address: smtp.gmail.com 
Gmail SMTP user name: Your full Gmail address (e.g. [email protected]) 
Gmail SMTP password: Your Gmail password 
    With Gmail 2-step authentication enabled, use an application-specific Gmail password. 
Gmail SMTP port (TLS): 587 
    Gmail SMTP port (SSL): 465 
Gmail SMTP TLS/SSL required: yes 

EDIT: -

import java.util.Properties; 

import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.AddressException; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

public class JavaEmail { 

    Properties emailProperties; 
    Session mailSession; 
    MimeMessage emailMessage; 

    public static void main(String args[]) throws AddressException, 
      MessagingException { 

     JavaEmail javaEmail = new JavaEmail(); 

     javaEmail.setMailServerProperties(); 
     javaEmail.createEmailMessage(); 
     javaEmail.sendEmail(); 
    } 

    public void setMailServerProperties() { 

     String emailPort = "587";//gmail's smtp port 

     emailProperties = System.getProperties(); 
     emailProperties.put("mail.smtp.port", emailPort); 
     emailProperties.put("mail.smtp.auth", "true"); 
     emailProperties.put("mail.smtp.starttls.enable", "true"); 

    } 

    public void createEmailMessage() throws AddressException, 
      MessagingException { 
     String[] toEmails = { "[email protected]" }; 
     String emailSubject = "Java Email"; 
     String emailBody = "This is an email sent by JavaMail api."; 

     mailSession = Session.getDefaultInstance(emailProperties, null); 
     emailMessage = new MimeMessage(mailSession); 

     for (int i = 0; i < toEmails.length; i++) { 
      emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmails[i])); 
     } 

     emailMessage.setSubject(emailSubject); 
     emailMessage.setContent(emailBody, "text/html");//for a html email 
     //emailMessage.setText(emailBody);// for a text email 

    } 

    public void sendEmail() throws AddressException, MessagingException { 

     String emailHost = "smtp.gmail.com"; 
     String fromUser = "your emailid here";//just the id alone without @gmail.com 
     String fromUserEmailPassword = "your email password here"; 

     Transport transport = mailSession.getTransport("smtp"); 

     transport.connect(emailHost, fromUser, fromUserEmailPassword); 
     transport.sendMessage(emailMessage, emailMessage.getAllRecipients()); 
     transport.close(); 
     System.out.println("Email sent successfully."); 
    } 

} 
+0

Я меняю порт на 465. Возникла та же проблема –

+0

@ ГайатриРаджан вы добавили порт два места и изменили оба места? –

+0

У вас есть двухсторонняя аутентификация? –

0

Спасибо так много для вдумчивого подарка. Я получил почту успешно ... Была проблема подключения порта № 465 в м y network.That было решено сегодня.

Я просто пытаюсь с приложением Java с JavaMail-1.4.5.jar

import javax.mail.*; 
import javax.mail.internet.*; 
import java.util.*; 

public class MailSender 
{ 
final String senderEmailID = "[email protected]"; 
final String senderPassword = "typesenderpassword"; 
final String emailSMTPserver = "smtp.gmail.com"; 
final String emailServerPort = "465"; 
String receiverEmailID = null; 
static String emailSubject = "Test Mail"; 
static String emailBody = ":)"; 
public MailSender(String receiverEmailID, String emailSubject, String emailBody) 
{ 
this.receiverEmailID=receiverEmailID; 
this.emailSubject=emailSubject; 
this.emailBody=emailBody; 
Properties props = new Properties(); 
props.put("mail.smtp.user",senderEmailID); 
props.put("mail.smtp.host", emailSMTPserver); 
props.put("mail.smtp.port", emailServerPort); 
props.put("mail.smtp.starttls.enable", "true"); 
props.put("mail.smtp.auth", "true"); 
props.put("mail.smtp.socketFactory.port", emailServerPort); 
props.put("mail.smtp.socketFactory.class", 
"javax.net.ssl.SSLSocketFactory"); 
props.put("mail.smtp.socketFactory.fallback", "false"); 
SecurityManager security = System.getSecurityManager(); 
try 
{ 
Authenticator auth = new SMTPAuthenticator(); 
Session session = Session.getInstance(props, auth); 
MimeMessage msg = new MimeMessage(session); 
msg.setText(emailBody); 
msg.setSubject(emailSubject); 
msg.setFrom(new InternetAddress(senderEmailID)); 
msg.addRecipient(Message.RecipientType.TO, 
new InternetAddress(receiverEmailID)); 
Transport.send(msg); 
System.out.println("Message send Successfully:)"); 
} 
catch (Exception mex) 
{ 
mex.printStackTrace(); 
} 
} 
public class SMTPAuthenticator extends javax.mail.Authenticator 
{ 
public PasswordAuthentication getPasswordAuthentication() 
{ 
return new PasswordAuthentication(senderEmailID, senderPassword); 
} 
} 
public static void main(String[] args) 
{  
MailSender mailSender=new 
MailSender("[email protected]",emailSubject,emailBody); 
} 
} 
+0

Этот код успешно работает ... Попробуйте это. Теперь я пробую этот код весна. –