Cancelando Solicitações de Reunião com o Calendário

Você pode enviar uma solicitação de cancelamento de reunião com Aspose.Email usando o objeto da classe Appointment. Você precisa ter as informações da solicitação de reunião original para cancelar a solicitação. O exemplo deste artigo primeiro envia uma solicitação de reunião, salva as informações em um banco de dados e, em seguida, cancela a solicitação com base no ID da mensagem.

Enviando Solicitações de Reunião

Antes que possamos cancelar solicitações de reunião, precisamos enviar algumas:

  1. Primeiro, crie uma instância do tipo SmtpClient para enviar a mensagem.
  2. Para reunir informações dos participantes, criamos uma grade de dados para que os usuários possam inserir os nomes e endereços das pessoas para as quais o convite deve ser enviado.
  3. Depois de fazer um loop for-each na coleção Rows da grade, salve todas as informações dos participantes na coleção MailAddressCollection.
  4. Crie uma instância da classe MailMessage e as propriedades necessárias, como De, Para e Assunto.
  5. Crie uma instância do tipo Appointment e forneça informações sobre o local, hora de início, hora de término, organizadores e participantes.
  6. Salve todas as informações em um banco de dados SQL Server. O trabalho relacionado ao DB está sendo feito no método SaveIntoDB.

O seguinte trecho de código mostra como enviar solicitações de reunião.

// 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 Solicitação de Reunião

Para cancelar uma solicitação de reunião, primeiro obtenha o ID da mensagem de email. Como salvamos essa informação em um banco de dados para este exemplo, podemos facilmente obtê-la novamente. Usamos uma grade para carregar todas as mensagens enviadas. A captura de tela do formulário é a seguinte:

todo:image_alt_text

  1. Selecionando a linha para a qual enviar a solicitação de cancelamento.
  2. Clique em Enviar Solicitação de Cancelamento para enviar a solicitação.
  3. O código obtém o ID da linha selecionada da grade e consulta o banco de dados para obter as informações relacionadas aos participantes, mensagem e calendário.
  4. Crie instâncias da classe Calendar e da classe MailMessage usando as informações recuperadas do banco de dados.
  5. Use o método Appointment.CancelAppointment() para enviar a solicitação de cancelamento.
  6. Envie o email usando o SMTP.

O seguinte trecho de código mostra como cancelar a solicitação de reunião.

// 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();
}