Takvim ile Toplantı İsteklerini İptal Etme

Aspose.Email kullanarak Appointment sınıfı nesnesiyle bir toplantı iptal isteği gönderebilirsiniz. İsteği iptal etmek için orijinal toplantı isteği bilgilerine sahip olmanız gerekir. Bu makaledeki örnek önce bir toplantı isteği gönderir, bilgileri bir veritabanına kaydeder ve ardından mesaj kimliğine dayanarak isteği iptal eder.

Toplantı İsteklerini Gönderme

Bunun önce toplantı isteklerini iptal etBunu yapmadan önce, göndermemiz gerekiyor:

  1. Mesajı göndermek için öncelikle SmtpClient tipinde bir örnek oluşturun.
  2. Tüm katılımcı bilgilerini MailAddressCollection koleksiyonunda kaydedin.
  3. MailMessage sınıfının bir örneğini oluşturun ve From, To ve Subject gibi gerekli özellikleri ayarlayın.
  4. Appointment tipinde bir örnek oluşturun ve konum, başlangıç zamanı, bitiş zamanı, organizatörler ve katılımcılar bilgilerini sağlayın.
  5. Tüm bilgileri bir veritabanına kaydedin. Veritabanı ile ilgili işlemler SaveIntoDB yöntemi içinde yapılmaktadır.

Aşağıdaki kod snippet’i toplantı isteklerini nasıl göndereceğinizi gösterir.

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

Toplantı İsteğini İptal Etme

Bir toplantı isteğini iptal etmek için öncelikle e-posta mesajının mesaj kimliğini alın. Bu örnek için bu bilgiyi bir veritabanına kaydettiğimizden, kolayca tekrar alabiliriz.

  1. İptal isteği gönderilecek mesajı seçme.
  2. Send Cancel Request düğmesine tıklayarak isteği gönderin.
  3. Veritabanını sorgulayarak katılımcı, mesaj ve takvimle ilgili bilgileri alır.
  4. Veritabanından alınan bilgileri kullanarak Calendar sınıfı ve MailMessage sınıfı örnekleri oluşturun.
  5. İptal isteğini göndermek için Appointment.cancelAppointment() yöntemini kullanın.
  6. SMTP kullanarak e-postayı gönderin.

Aşağıdaki kod snippet’i toplantı isteğini nasıl iptal edeceğinizi gösterir.

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