2016-03-20 17 views
0

Bazı açıklamalara ihtiyacım var. Google SMTP sunucusunu kullanarak google apps sayımı (ücretsiz bir şey, röle değil) kullanarak e-posta göndermeye çalışıyorum. Ben vahşi bir 10 konteyner (ve JSF) kullanıyorum, bu yüzden benim projemde bir javamail kavanoz yok (bu doğru mu?). Yani benim vatansız EJB, ben bir kaynak enjeksiyonu yapın:Wildfly javamail ve mailsession injection SMTP sunucusuna HELO komutu gönderilemediğinde hata

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

Yani ben liman, kullanıcı adı tanımlamak gerekmez varsayarak ve am:

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

ve benim standalone.xml içinde

Bağımsızdaki şifre, eğer ben sadece böyle propeties ekleyin:

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 
       } 
     }); 

bu doğru mu, yoksa da standalone.xml tanımlanmalıdır gerekir?

Yani hatayı alıyorum: javax.mail.MessagingException: Başarısızlık SMTP sunucusu

bu çalışma takdir almak konusunda herhangi bir yardım için HELO komutunu göndererek!

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(); 
    } 
} 

} 

Bu geronimo bir sorun olabilir, ayrıca yığın izleme parçasıdır: Burada

tam kod? Güneşi kullanabilir miyim, eğer öyleyse bunu nasıl yaparım?

23: 23: 23.215 HATA [Stderr] (varsayılan görev-5) org.apache.geronimo.javamail.transport.smtp.SMTPTransport.sendHelo (SMTPTransport.java:1914) de

23:23: 23: 23.216 HATA [stderr] (varsayılan görev [stderr] (varsayılan görev-5) org.apache.geronimo.javamail.transport.smtp.SMTPTransport.sendHandshake (SMTPTransport.java:1829) de

23 23.215 HATA -5) org.apache.geronimo.javamail.transport.smtp.SMTPTransport.protocolConnect (SMTPTransport.java:393)

cevap

İlgili konular