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:
- Primeiro, crie uma instância do tipo SmtpClient para enviar a mensagem.
- 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.
- Depois de fazer um loop for-each na coleção Rows da grade, salve todas as informações dos participantes na coleção MailAddressCollection.
- Crie uma instância da classe MailMessage e as propriedades necessárias, como De, Para e Assunto.
- 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.
- 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:
- Selecionando a linha para a qual enviar a solicitação de cancelamento.
- Clique em Enviar Solicitação de Cancelamento para enviar a solicitação.
- 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.
- Crie instâncias da classe Calendar e da classe MailMessage usando as informações recuperadas do banco de dados.
- Use o método Appointment.CancelAppointment() para enviar a solicitação de cancelamento.
- 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(); | |
} |