2014-10-08 68 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"); 
    } 
}