2016-03-20 3 views
0

Also brauche ich etwas Klärung. Ich versuche, E-Mail mit Google SMTP-Server zu senden, mit meinem Google Apps Acount, (die freie Sache, nicht die Relais). Ich verwende einen Wildfly-10-Container (und JSF), also habe ich kein Javamail-Glas in meinem Projekt (ist das korrekt?). Also in meinem stateless EJB, habe ich eine Ressource Injektion:Wildfly javamail und mailsession injection Fehler beim Senden von HELO-Befehl an SMTP-Server

@Resource(name = "mail") 
private javax.mail.Session mailSession; 

und in meinem standalone.xml:

<subsystem xmlns="urn:jboss:domain:mail:2.0"> 
     <mail-session name="mail" jndi-name="java:/mail"/> 
</subsystem> 

Also ich gehe ich davon aus, um den Port, den Benutzernamen nicht zu definieren, und Kennwort in der Standalone, wenn ich nur hinzufügen, die propeties wie folgt aus:

Properties props = System.getProperties(); 
    String host = "smtp.gmail.com"; 
    props.put("mail.smtp.starttls.enable", "true"); 
    props.put("mail.smtp.host", host); 
    props.put("mail.smtp.user", "[email protected]"); 
    props.put("mail.smtp.password", "XXXX"); 
    props.put("mail.smtp.port", "465"); 
    props.put("mail.smtp.ssl.enable", "true"); 
    props.put("mail.smtp.auth", "true"); 

    mailSession = Session.getDefaultInstance(props, 
      new javax.mail.Authenticator(){ 
       protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(
         "[email protected]", "XXXX");// Specify the Username and the PassWord 
       } 
     }); 

Ist das richtig, oder es muss auch in der standalone.xml definiert werden?

So bekomme ich den Fehler: javax.mail.MessagingException: Fehler beim Senden von HELO-Befehl an SMTP-Server

Jede Hilfe, wie dieses Arbeits geschätzt zu bekommen! Hier

ist der vollständige Code:

import java.util.ArrayList; 
import java.util.List; 
import java.util.Properties; 
import javax.annotation.PostConstruct; 
import javax.annotation.Resource; 
import javax.ejb.Stateless; 
import javax.faces.component.UIInput; 
import javax.mail.Address; 
import javax.mail.BodyPart; 
import javax.mail.Message; 
import javax.mail.Multipart; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeBodyPart; 
import javax.mail.internet.MimeMessage; 
import javax.mail.internet.MimeMultipart; 
import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 

//import view.Info; 
@Stateless 
public class EmailEJB implements EmailBeanInterface { 


@Resource(name = "mail") 
private javax.mail.Session mailSession; 

@PersistenceContext(unitName = "EmailEJB") 
EntityManager em; 

String amountToDisplay = null; 
List<Info> emailList; 



public void setAmountToDisplay(String amountToDisplay) { 
    this.amountToDisplay = amountToDisplay; 
} 

@PostConstruct 
public void defaultList() { 
    String sqlPrepareStmt = "SELECT e FROM Info e WHERE id <=" + amountToDisplay; 
    emailList = (List<Info>) em.createQuery(sqlPrepareStmt, Info.class).getResultList(); 
} 

public List<Info> getEmailList() { 
    return emailList; 
} 

public void send(ArrayList<String> managedList) { 

    Properties props = System.getProperties(); 
    String host = "smtp.gmail.com"; 
    props.put("mail.smtp.starttls.enable", "false"); 
    props.put("mail.smtp.host", host); 
    props.put("mail.smtp.user", "[email protected]"); 
    props.put("mail.smtp.password", "XXXX"); 
    props.put("mail.smtp.port", "465"); 
    props.put("mail.smtp.ssl.enable", "true"); 
    props.put("mail.smtp.auth", "true"); 
    //Session mailSession = Session.getDefaultInstance(props); 
    // mailSession= Session.getDefaultInstance(props); 
    mailSession = Session.getDefaultInstance(props, 
      new javax.mail.Authenticator(){ 
       protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(
         "XXXX", "XXXX");// Specify the Username and the PassWord 
       } 
     }); 
    try { 
     MimeMessage m = new MimeMessage(mailSession); 
     Address from = new InternetAddress("[email protected]"); 
     Address[] to; 
     to = new Address[managedList.size()]; 
     for (int i = 0; i < managedList.size(); i++) { 
      String emailString = managedList.get(i); 
      if(emailString.isEmpty() == true){ 
       System.out.println("emailString is empty"); 
      } 
      else{ 
      to[i] = new InternetAddress(java.net.IDN.toASCII(emailString)); 
      } 
     } 

     m.setRecipients(Message.RecipientType.TO, to); 
     m.setSubject("Wildfly 10 - Checkbox test"); 
     m.setSentDate(new java.util.Date()); 
     BodyPart messageBodyPart = new MimeBodyPart(); 

     // Fill the message 
     messageBodyPart.setText("testing application managed javamail props"); 

     // Create a multipart message 
     Multipart multipart = new MimeMultipart(); 

     // Set text message part 
     multipart.addBodyPart(messageBodyPart); 
     m.setContent(multipart); 
     Transport transport = mailSession.getTransport("smtp"); 
     transport.connect(host, "[email protected]", "XXXX"); 
     transport.send(m); 
     transport.close(); 
     System.out.println("Mail sent!"); 


    } catch (javax.mail.MessagingException e) { 
      e.printStackTrace(); 
    } 
} 

} 

Dies ist auch Teil des Stack-Trace, könnte es ein Problem mit geronimo sein? Kann ich stattdessen die Sonne benutzen, wenn ja, wie mache ich das?

23: 23: 23.215 ERROR [Stderr] (default task-5) bei org.apache.geronimo.javamail.transport.smtp.SMTPTransport.sendHelo (SMTPTransport.java:1914)

23:23: 23.215 Fehler [stderr] (default task-5) bei org.apache.geronimo.javamail.transport.smtp.SMTPTransport.sendHandshake (SMTPTransport.java:1829)

23: 23: 23.216 ERROR [stderr] (default Aufgabe -5) bei org.apache.geronimo.javamail.transport.smtp.SMTPTransport.protocolConnect (SMTPTransport.java:393)

Antwort

Verwandte Themen