2014-10-08 65 views
0

我需要使用Java API在Apache James郵件服務器中添加新用戶,但是在整個互聯網中沒有任何關於如何使用它的示例。 只有這個http://james.apache.org/server/2.3.1/adding_users.html 用Java郵件API可以發送郵件到Apache James郵箱讀取郵件,但僅此。用java api在apache james中創建用戶帳戶

String user = "user"; // Newly created user on JAMES 
String password = "user"; // user password 

String fromAddress = "[email protected]"; // [email protected] 
String toAddress = "[email protected]"; 


// Create a mail session 
Properties properties = new Properties(); 
properties.put("mail.smtp.host", "localhost"); 
properties.put("mail.smtp.port", "25"); 
properties.put("mail.smtp.username", user); 
properties.put("mail.smtp.password", password); 
Session session = Session.getDefaultInstance(properties, null); 

try 
{ 
    Message message = new MimeMessage(session); 
    message.setFrom(new InternetAddress(fromAddress)); 
    message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toAddress)); 

    message.setSubject("Email from our JAMES Server"); 
    message.setText("Hello world again and again"); 
    Transport.send(message); 

    System.out.println("Email sent successfully"); 
} 
catch (MessagingException e) 

{ 
    e.printStackTrace(); 
} 

有人知道或使用過James Java API嗎?任何例子?

回答

0

您可能需要使用Runtime.exec來調用James adduser命令。 如果您想要遠程執行此操作,則需要使用Java Telnet或ssh客戶端連接到運行James的服務器。

0

我明白我應該使用apache james api,從源代碼構建並使用JPA功能。

0

嗨這個模塊將幫助你這樣做,因爲這是在groovy所以請改變「def」到期望的Datatye /類的對象這只是一個想法,但它需要努力將其轉換爲JAVA代碼。

def addUserToJames(String email){ 
    try{ 
     def serverUrl = 'service:jmx:rmi://localhost/jndi/rmi://localhost:9999/jmxrmi' 
     String beanNameUser = "org.apache.james:type=component,name=usersrepository" 
     String beanNameDomain = "org.apache.james:type=component,name=domainlist" 
     def server = JMXConnectorFactory.connect(new JMXServiceURL(serverUrl)).MBeanServerConnection 
     def userBean = new GroovyMBean(server, beanNameUser) 
     def domainBean = new GroovyMBean(server, beanNameDomain) 
     if(!domainBean.containsDomain(email.split('@')[1])){ 
      domainBean.addDomain(email.split('@')[1]) 
     } 
     userBean.addUser(email,'Welcome123!') 
    }catch (Exception e){ 
     println "Something went wrong" 
    } 
} 
1

下面是對應的Java代碼:

public static void main(String [] args){ 

    addUser(args[0]); 
} 

static void addUser(String email){ 
    try{ 
     String serverUrl = "service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi"; 
     String beanNameUser = "org.apache.james:type=component,name=usersrepository"; 
     String beanNameDomain = "org.apache.james:type=component,name=domainlist"; 

     MBeanServerConnection server = JMXConnectorFactory.connect(new JMXServiceURL(serverUrl)).getMBeanServerConnection(); 

     UsersRepositoryManagementMBean userBean = MBeanServerInvocationHandler.newProxyInstance(server, new ObjectName(beanNameUser), UsersRepositoryManagementMBean.class, false); 
     DomainListManagementMBean domainBean = MBeanServerInvocationHandler.newProxyInstance(server, new ObjectName(beanNameDomain), DomainListManagementMBean.class, false); 

     if(domainBean.containsDomain(email.split("@")[1]) 
       && !userBean.verifyExists(email)){ 
      System.out.println("creating email : "+email); 
      userBean.addUser(email,"password"); 
     }else{ 
      System.out.println("domain does not exist or user already exists !!"); 
     } 

    }catch (Exception e){ 
     System.out.println("Something went wrong"); 
    } 
}