A Simple Java-to-Exchange Program |
Now that we have completed configuring CDO, we will run a simple Java application that interacts with Exchange. This application sends a meeting request to specified Exchange users. Here are the steps:
import com.linar.jintegra.Cleaner; import com.intrinsyc.cdo.*; import java.util.Date; public class SendMeetingRequest { public static void main(String[] args) { //TODO: Change the following parameters based on your setup and configuration // the logon parameters of the service account you used to configure CDO String domain = "mydomain"; String username = "jsmith"; String password = "password"; // the DNS name or IP address of the machine where you installed CDO String CDOmachine = "0.0.0.0"; // the DNS name or IP address of the Exchange Server String exchangeServer = "0.0.0.0"; // the mailbox you wish to access (NOTE: this is the same as the user's login name // e.g., if the username is jsmith, mailbox would also be jsmith ) String mailbox = "jsmith"; // e-mail address of recipients String recipient1 = "[email protected]"; String recipient2 = "[email protected]"; try { // authenticate to Windows com.linar.jintegra.AuthInfo.setDefault(domain, username, password); // create a Session in the CDOmachine Session session = new Session(CDOmachine); // logon to the Exchange Server session.logon(null, null, new Boolean(false), new Boolean(true), new Boolean(false), new Boolean(false), exchangeServer + "\n" + mailbox); // retrieve appointments collection from the Calendar Integer defaultCalendar = new Integer(CdoDefaultFolderTypes.CdoDefaultFolderCalendar); Folder calendar = new FolderProxy(session.getDefaultFolder(defaultCalendar)); Messages appointments = new MessagesProxy(calendar.getMessages()); // add a new appointment to the collection AppointmentItem appointment = new AppointmentItemProxy(appointments.add(null, null, null, null)); // set appointment details appointment.setSubject("J-Integra® for Exchange Evaluation"); appointment.setLocation("Meeting Room - 10th Floor"); appointment.setStartTime( new Date()); // appointment starts now appointment.setText("Discuss viability of J-Integra®"); // Set appointment recipients Recipients recipients = new RecipientsProxy(appointment.getRecipients()); Recipient r1 = new RecipientProxy(recipients.add(null, null, null, null)); Recipient r2 = new RecipientProxy(recipients.add(null, null, null, null)); r1.setName(recipient1); r2.setName(recipient2); // r1 will be the 'to' address and r2 will be 'cc'-ied r1.setType(new Integer(CdoRecipientType.CdoTo)); r2.setType(new Integer(CdoRecipientType.CdoCc)); // Each recipient added must be resolved before it can be used. // 0 == false to inhibit dialog boxes from popping up r1.resolve(new Integer(0)); r2.resolve(new Integer(0)); // set meeting status type to CdoMeeting appointment.setMeetingStatus(new Integer(CdoMeetingStatusTypes.CdoMeeting)); // send the appointment appointment.send(null, null, null); System.out.println("Meeting request has been sent to: \n \t" + recipient1 + "\n \t" + recipient2 ); // logoff from the session session.logoff(); } catch (Exception ex) { ex.printStackTrace(); }finally{ // release all COM references Cleaner.releaseAll(); } } } |
You should get an output similar to the following assuming everything went well:
You can also verify in Outlook whether the meeting request has been sent to the specified recipients.