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 = "test@intrinsyc.com";
String recipient2 = "jsmith@jintegra.com";
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.