Cancelación de Solicitudes de Reunión con el Calendario

Puedes enviar una solicitud de cancelación de reunión con Aspose.Email usando el objeto de la clase Appointment. Necesitas tener la información de la solicitud de reunión original para cancelar la solicitud. 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 basado en el ID del mensaje.

Enviando Solicitudes de Reunión

Antes de que podamos cancelar solicitudes de reunión, tenemos que enviar algunas:

  1. Primero crea una instancia del tipo SmtpClient para enviar el mensaje.
  2. Para recopilar la información de los asistentes, hemos creado una cuadrícula de datos para que los usuarios puedan ingresar los nombres y direcciones de las personas a las que se debe enviar la invitación.
  3. Después de realizar un bucle for-each en la colección Rows de la cuadrícula, guarda toda la información de los asistentes en la colección MailAddressCollection.
  4. Crea una instancia de la clase MailMessage y propiedades necesarias como From, To y Subject.
  5. Crea una instancia del tipo Appointment y proporciona la ubicación, hora de inicio, hora de finalización, información de organizadores y asistentes.
  6. Guarda toda la información en una base de datos de SQL Server. El trabajo relacionado con la base de datos se realiza en el método SaveIntoDB.

El siguiente fragmento de código te muestra cómo enviar solicitudes de reunión.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
private void button1_Click(object sender, EventArgs e)
{
try
{
// Create an instance of SMTPClient
SmtpClient client = new SmtpClient(txtMailServer.Text, txtUsername.Text, txtPassword.Text);
// Get the attendees
MailAddressCollection attendees = new MailAddressCollection();
foreach (DataGridViewRow row in dgAttendees.Rows)
{
if (row.Cells["EmailAddress"].Value != null)
{
// Get names and addresses from the grid and add to MailAddressCollection
attendees.Add(new MailAddress(row.Cells["EmailAddress"].Value.ToString(),
row.Cells["FirstName"].Value.ToString() + " " + row.Cells["LastName"].Value.ToString()));
}
}
// Create an instance of MailMessage for sending the invitation
MailMessage msg = new MailMessage();
// Set from address, attendees
msg.From = txtFrom.Text;
msg.To = attendees;
// Create am instance of Appointment
Appointment app = new Appointment(txtLocation.Text, dtTimeFrom.Value, dtTimeTo.Value, txtFrom.Text, attendees);
app.Summary = "Monthly Meeting";
app.Description = "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.MessageId + ".eml", SaveOptions.DefaultEml);
client.Send(msg);
MessageBox.Show("message sent");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private bool SaveIntoDB(MailMessage msg, Appointment app)
{
try
{
// Save message and Appointment information
string strSQLInsertIntoMessage = @"INSERT INTO Message (MessageID, Subject, FromEmailAddress, FromDisplayName, Body,
CalUniqueID, CalSequenceID, CalLocation, CalStartTime, CalEndTime, Caldescription, CalSummary, MeetingStatus)
VALUES ('" + msg.MessageId + "' , '" + msg.Subject + "' , '" + msg.From[0].Address + "' , '" +
msg.From[0].DisplayName + "' , '" + msg.Body + "' , '" + app.UniqueId + "' , '" + app.SequenceId + @"' ,
'" + app.Location + "' , '" + app.StartDate + "' , '" + app.EndDate + "' , '" + app.Description + @"' ,
'" + app.Summary + "' , 1); ";
ExecuteNonQuery(strSQLInsertIntoMessage);
// Save attendee information
string strSQLInsertIntoAttendees = "";
foreach (DataGridViewRow row in dgAttendees.Rows)
{
if (row.Cells["EmailAddress"].Value != null)
{
strSQLInsertIntoAttendees += "INSERT INTO Attendent (MessageID, EmailAddress, DisplayName) VALUES (" + "'" + msg.MessageId + "' , '" + row.Cells["EmailAddress"].Value + "' , '" + row.Cells["FirstName"].Value.ToString() + " " + row.Cells["LastName"].Value.ToString() + "' );";
ExecuteNonQuery(strSQLInsertIntoAttendees);
}
}
// If records are successfully inserted into the database, return true
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message); // Return false in case of exception
return false;
}
}

Cancelando Solicitud de Reunión

Para cancelar una solicitud de reunión, primero obtén el ID del mensaje del correo electrónico. Dado que hemos guardado esta información en una base de datos para este ejemplo, podemos recuperarla fácilmente. Hemos utilizado una cuadrícula para cargar todos los mensajes enviados. La captura de pantalla del formulario es la siguiente:

todo:image_alt_text

  1. Selecciona la fila para la cual enviar la solicitud de cancelación.
  2. Haz clic en Enviar Solicitud de Cancelación para enviar la solicitud.
  3. El código obtiene el ID de la fila seleccionada de la cuadrícula y consulta la base de datos para obtener la información relacionada con el asistente, el mensaje y el calendario.
  4. Crea instancias de la clase Calendar y de la clase MailMessage utilizando la información recuperada de la base de datos.
  5. Utiliza el método Appointment.CancelAppointment() para enviar la solicitud de cancelación.
  6. Envía el correo utilizando el SMTP.

El siguiente fragmento de código te muestra cómo cancelar la solicitud de reunión.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
try
{
OpenConnection();
// Get the message ID of the selected row
string strMessageID = dgMeetings.SelectedRows[0].Cells["MessageID"].Value.ToString();
// Get the message and calendar information from the database get the attendee information
string strSQLGetAttendees = "SELECT * FROM Attendent WHERE MessageID = '" + strMessageID + "' ";
// Get the attendee information in reader
SqlDataReader rdAttendees = ExecuteReader(strSQLGetAttendees);
// Create a MailAddressCollection from the attendees found in the database
MailAddressCollection attendees = new MailAddressCollection();
while (rdAttendees.Read())
{
attendees.Add(new MailAddress(rdAttendees["EmailAddress"].ToString(), rdAttendees["DisplayName"].ToString()));
}
rdAttendees.Close();
// Get message and calendar information
string strSQLGetMessage = "SELECT * FROM [Message] WHERE MessageID = '" + strMessageID + "' ";
// Get the reader for the above query
SqlDataReader rdMessage = ExecuteReader(strSQLGetMessage);
rdMessage.Read();
// Create the Calendar object from the database information
Appointment app = new Appointment(rdMessage["CalLocation"].ToString(), rdMessage["CalSummary"].ToString(), rdMessage["CalDescription"].ToString(),
DateTime.Parse(rdMessage["CalStartTime"].ToString()), DateTime.Parse(rdMessage["CalEndTime"].ToString()), new MailAddress(rdMessage["FromEmailAddress"].ToString(), rdMessage["FromDisplayName"].ToString()), attendees);
// Create message and Set from and to addresses and Add the cancel meeting request
MailMessage msg = new MailMessage();
msg.From = new MailAddress(rdMessage["FromEmailAddress"].ToString(), "");
msg.To = attendees;
msg.Subject = "Cencel meeting";
msg.AddAlternateView(app.CancelAppointment());
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587, "user@gmail.com", "password");
smtp.Send(msg);
MessageBox.Show("cancellation request successfull");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
CloseConnection();
}