Anulowanie prośby o spotkanie przy użyciu kalendarza

Możesz wysłać żądanie anulowania spotkania przy użyciu Aspose.Email i obiektu klasy Appointment. Musisz posiadać pierwotne informacje o prośbie o spotkanie, aby anulować żądanie. Przykład w tym artykule najpierw wysyła prośbę o spotkanie, zapisuje informacje w bazie danych, a następnie anuluje żądanie na podstawie identyfikatora wiadomości.

Wysyłanie zaproszeń na spotkania

Zanim będziemy mogli anulować prośby o spotkanie, musimy wysłać kilka:

  1. Najpierw utwórz instancję typu SmtpClient do wysyłania wiadomości.
  2. Zapisz wszystkie informacje o uczestnikach w kolekcji MailAddressCollection.
  3. Utwórz instancję klasy MailMessage oraz niezbędne właściwości, takie jak From, To i Subject.
  4. Utwórz instancję typu Appointment i podaj informacje o miejscu, czasie rozpoczęcia, czasie zakończenia, organizatorach i uczestnikach.
  5. Zapisz wszystkie informacje w bazie danych. Prace związane z bazą danych wykonywane są w metodzie SaveIntoDB.

Poniższy fragment kodu pokazuje, jak wysłać prośby o spotkanie.

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

Anulowanie prośby o spotkanie

Aby anulować prośbę o spotkanie, najpierw pobierz identyfikator wiadomości e‑mail. Ponieważ zapisaliśmy tę informację w bazie danych w tym przykładzie, możemy ją łatwo ponownie uzyskać.

  1. Wybór wiadomości, dla której ma zostać wysłane żądanie anulowania.
  2. Kliknij Send Cancel Request, aby wysłać żądanie.
  3. Zapytuje bazę danych, aby uzyskać informacje o uczestnikach, wiadomościach i danych kalendarza.
  4. Utwórz instancje klasy Calendar oraz klasy MailMessage, używając informacji pobranych z bazy danych.
  5. Użyj metody Appointment.cancelAppointment(), aby wysłać żądanie anulowania.
  6. Wyślij wiadomość przy użyciu SMTP.

Poniższy fragment kodu pokazuje, jak anulować prośbę o spotkanie.

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