Cancelación de solicitudes de reunión con Calendar
Puede enviar una solicitud de cancelación de reunión con Aspose.Email usando el objeto de la clase Appointment. Necesita contar con la información original de la solicitud de reunión para cancelarla. El ejemplo en este artículo primero envía una solicitud de reunión, guarda la información en una base de datos y luego cancela la solicitud basándose en el ID del mensaje.
Enviar solicitudes de reunión
Antes de que podamos cancelar solicitudes de reunión, tenemos que enviar algunos:
- Primero cree una instancia del tipo SmtpClient para enviar el mensaje.
- Guarde toda la información de los asistentes en la colección MailAddressCollection.
- Cree una instancia de la clase MailMessage y las propiedades necesarias como From, To y Subject.
- Cree una instancia del tipo Appointment y proporcione la ubicación, hora de inicio, hora de fin, organizadores y la información de los asistentes.
- Guarde toda la información en una base de datos. El trabajo relacionado con la base de datos se realiza en el método SaveIntoDB.
El siguiente fragmento de código le muestra cómo enviar solicitudes de reunión.
class Attendees {
public String MessageId;
public String EmailAddress;
public String DisplayName;
}
class Message {
public String MessageId;
public String From;
public String Subject;
public String Body;
public String AppLocation;
public Date AppStartDate;
public Date AppEndDate;
public String AppSummary;
public String AppDescription;
}
public void send(Attendees[] attendeesArr, String from, String appLocation, Date appStartDate, Date appEndDate) {
try {
// Create an instance of SMTPClient
SmtpClient client = new SmtpClient("MailServer", "Username", "Password");
// Get the attendees
MailAddressCollection attendees = new MailAddressCollection();
for (Attendees a : attendeesArr) {
attendees.addItem(new MailAddress(a.EmailAddress, a.DisplayName));
}
// Create an instance of MailMessage for sending the invitation
MailMessage msg = new MailMessage();
// Set from address, attendees
msg.setFrom(new MailAddress(from));
msg.setTo(attendees);
// Create am instance of Appointment
Appointment app = new Appointment(appLocation, appStartDate, appEndDate, new MailAddress(from), attendees);
app.setSummary("Monthly Meeting");
app.setDescription("Please confirm your availability.");
msg.addAlternateView(app.requestApointment());
// Save the info to the database
if (saveIntoDB(msg, app) == true) {
// Save the message and Send the message with the meeting request
msg.save(msg.getMessageId() + ".eml", SaveOptions.getDefaultEml());
client.send(msg);
System.out.println("message sent");
}
} catch (Exception ex) {
System.err.println(ex);
}
}
private boolean saveIntoDB(MailMessage msg, Appointment app) {
// Save Message and Appointment information
Message messageRow = new Message();
messageRow.MessageId = msg.getMessageId();
messageRow.From = msg.getFrom().getAddress();
messageRow.Subject = msg.getSubject();
messageRow.Body = msg.getBody();
messageRow.AppLocation = app.getLocation();
messageRow.AppStartDate = app.getStartDate();
messageRow.AppEndDate = app.getEndDate();
messageRow.AppSummary = app.getSummary();
messageRow.AppDescription = app.getDescription();
addToDB(messageRow);
// Save attendee information
for (MailAddress address : app.getAttendees()) {
Attendees attendeesRow = new Attendees();
attendeesRow.MessageId = msg.getMessageId();
attendeesRow.EmailAddress = address.getAddress();
attendeesRow.DisplayName = address.getDisplayName();
addToDB(attendeesRow);
}
return true;
}
Cancelación de solicitud de reunión
Para cancelar una solicitud de reunión, primero obtenga el ID del mensaje de correo electrónico. Como hemos guardado esta información en una base de datos para este ejemplo, podemos recuperarla fácilmente.
- Seleccionando el mensaje para el cual enviar la solicitud de cancelación.
- Haga clic en Send Cancel Request para enviar la solicitud.
- Consulta la base de datos para obtener la información del asistente, mensaje y calendario.
- Cree instancias de la clase Calendar y de la clase MailMessage utilizando la información obtenida de la base de datos.
- Utilice el método Appointment.cancelAppointment() para enviar la solicitud de cancelación.
- Envíe el correo usando el SMTP.
El siguiente fragmento de código le muestra cómo cancelar la solicitud de reunión.
public void cancel(String messageId) {
// Get the message and calendar information from the database get the attendee information
// Get the attendee information in reader
Attendees[] attendeesRows = getAttendeesFromDB(messageId);
// Create a MailAddressCollection from the attendees found in the database
MailAddressCollection attendees = new MailAddressCollection();
for (Attendees attendeesRow : attendeesRows) {
attendees.addItem(new MailAddress(attendeesRow.EmailAddress, attendeesRow.DisplayName));
}
// Get message and calendar information
Message messageRow = getMessageFromDB(messageId);
// Create the Calendar object from the database information
Appointment app = new Appointment(messageRow.AppLocation, messageRow.AppSummary, messageRow.AppDescription, messageRow.AppStartDate, messageRow.AppEndDate,
new MailAddress(messageRow.From), attendees);
// Create message and Set from and to addresses and Add the cancel meeting request
MailMessage msg = new MailMessage();
msg.setFrom(new MailAddress(messageRow.From));
msg.setTo(attendees);
msg.setSubject("Cencel meeting");
msg.addAlternateView(app.cancelAppointment());
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587, "user@gmail.com", "password");
smtp.send(msg);
System.out.println("cancellation request successfull");
}