Скасування запитів на зустріч за допомогою календаря

Ви можете надіслати запит на скасування зустрічі за допомогою Aspose.Email, використовуючи об’єкт класу Appointment. Потрібна вихідна інформація про запит на зустріч, щоб скасувати його. У прикладі в цій статті спочатку надсилається запит на зустріч, інформація зберігається в базі даних, а потім запит скасовується на підставі ідентифікатора повідомлення.

Надсилання запитів на зустріч

Перш ніж ми зможемо скасувати запити на зустрічі, нам потрібно надіслати декілька:

  1. Спочатку створіть екземпляр типу SmtpClient для надсилання повідомлення.
  2. Збережіть всю інформацію про учасників у колекції MailAddressCollection.
  3. Створіть екземпляр класу MailMessage та необхідні властивості, такі як From, To і Subject.
  4. Створіть екземпляр типу Appointment і вкажіть місце, час початку, час закінчення, організаторів та учасників.
  5. Збережіть всю інформацію у базі даних. Робота з БД виконується у методі SaveIntoDB.

Наступний фрагмент коду показує, як надсилати запити на зустріч.

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;
}

Скасування запиту на зустріч

Щоб скасувати запит на зустріч, спочатку отримайте ідентифікатор повідомлення електронної пошти. Оскільки ми зберегли цю інформацію в базі даних для цього прикладу, її можна легко отримати знову.

  1. Вибір повідомлення, для якого слід надіслати запит на скасування.
  2. Натисніть Send Cancel Request, щоб відправити запит.
  3. Запитує базу даних, щоб отримати інформацію про учасників, повідомлення та календар.
  4. Створіть екземпляри класу Calendar та MailMessage, використовуючи дані, отримані з бази даних.
  5. Використайте метод Appointment.cancelAppointment() для надсилання запиту на скасування.
  6. Надішліть лист за допомогою SMTP.

Наступний фрагмент коду показує, як скасувати запит на зустріч.

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");
}