Arbeta med röstningsalternativ och reaktioner i MSG
Skapa röstningsalternativ med MapiMessage
Microsoft Outlook erbjuder en funktion för att skapa en omröstning när man skriver ett nytt e‑postmeddelande, vilket gör att användare kan inkludera röstningsalternativ som Ja, Nej, Kanske osv. Aspose.Email möjliggör liknande funktionalitet när man programatiskt skapar ett nytt Outlook‑meddelande. Den FollowUpOptions klass tillhandahåller VotingButtons egenskap som kan användas för att ange eller hämta röstningsalternativen. MapiMessage refererar till en klass inom Aspose.Email‑namnområdet som representerar ett e‑postmeddelande i Messaging Application Programming Interface (MAPI)‑formatet som vanligtvis används av Microsoft Outlook. Genom att använda MapiMessage‑klassen kan utvecklare lägga till röstningsknappar i ett e‑postmeddelande. Denna artikel ger ett detaljerat exempel på hur man skapar ett MapiMessage med röstningsalternativ för att skapa en omröstning.
Skapa omröstningar
Följande kodexempel visar hur man skapar en omröstning i ett Outlook‑meddelande med Aspose.Email. Den FollowUpManager klass underlättar inställning av röstningsalternativ.
// Create a MapiMessage with the sender, recipient, subject, and body
var msg = new MapiMessage(
"from@test.com",
"to@test.com",
"Flagged message",
"Make it nice and short, but descriptive. The description may appear in search engines' search results pages..."
);
// Create FollowUpOptions and set the voting buttons
var options = new FollowUpOptions
{
VotingButtons = "Yes;No;Maybe;Exactly!"
};
// Apply the follow-up options to the message
FollowUpManager.SetOptions(msg, options);
- FollowUpOptions: Tillhandahåller egenskaper för att konfigurera uppföljningsåtgärder, såsom röstningsknappar.
- VotingButtons: En strängegenskap där olika röstningsalternativ separeras med semikolon.
- FollowUpManager.SetOptions: Tillämpa de specificerade uppföljningsalternativen på meddelandet.
Läs röstningsalternativ
För att hämta röstningsalternativ från en MapiMessage, kan du använda GetOptions metod. Denna metod hämtar inte bara röstningsknappar utan kan också tillhandahålla ytterligare parametrar som kategorier om så behövs.
// Retrieve follow-up options from the message
var options = FollowUpManager.GetOptions(msg);
// Voting buttons are returned as a string with a semicolon separator
string votingButtons = options.VotingButtons;
// Display the voting buttons
Console.WriteLine($"Voting Options: {votingButtons}");
- GetOptions: Hämtar FollowUpOptions objekt från meddelandet, som inkluderar röstningsknapparna och eventuellt andra egenskaper.
- VotingButtons: Alternativen extraheras som en semikolonseparerad sträng, vilket möjliggör enkel visning eller manipulering.
Läs röstningsknappar
Om du bara behöver komma åt röstningsknappar som en lista av individuella strängar kan du använda GetVotingButtons metod, som returnerar dem som en samling.
// Read only voting buttons as a collection of string values
var votingButtons = FollowUpManager.GetVotingButtons(msg);
// Display each voting button
foreach (var button in votingButtons)
{
Console.WriteLine($"Voting Button: {button}");
}
- GetVotingButtons: Returnerar en samling av röstningsknapp‑strängar, vilket gör det enkelt att iterera över dem och utföra operationer som att visa eller ändra.
Lägg till röstningsknappar
Du kan lägga till ytterligare röstningsknappar till ett befintligt meddelande med hjälp av AddVotingButton metod. Detta kan vara användbart för att dynamiskt uppdatera röstningsalternativen.
// Add a new voting button to the existing message
FollowUpManager.AddVotingButton(msg, "Indeed!");
- AddVotingButton: Lägger till ett nytt röstningsalternativ till meddelandets befintliga röstningsknappar, vilket möjliggör dynamisk anpassning av omröstningar.
Ta bort röstningsknappar
Du kanske vill ta bort specifika röstningsknappar eller rensa alla knappar från ett meddelande. Följande kod demonstrerar båda handlingarna med hjälp av RemoveVotingButton och ClearVotingButtons metoder.
// Delete a specific voting button
FollowUpManager.RemoveVotingButton(msg, "Exactly!");
// Or delete all voting buttons from the MapiMessage
FollowUpManager.ClearVotingButtons(msg);
- RemoveVotingButton: Raderar en specifik röstningsknapp efter namn.
- ClearVotingButtons: Tar bort alla röstningsknappar, vilket effektivt återställer röstningsalternativen.
Läs röstningsresultat
Aspose.Email möjliggör också läsning av röstningsresultat från ett meddelandes mottagare. Du kan komma åt egenskaper som mottagarens svar och svarstid.
// Load a MapiMessage from a file
var msg = MapiMessage.Load("sample.msg");
// Iterate through each recipient and display their vote information
foreach (var recipient in msg.Recipients)
{
Console.WriteLine($"Recipient: {recipient.DisplayName}");
// Get the recipient's response using the appropriate MapiPropertyTag
var response = recipient.Properties[MapiPropertyTag.PR_RECIPIENT_AUTORESPONSE_PROP_RESPONSE].GetString();
Console.WriteLine($"Response: {response}");
// Get the response time
var responseTime = recipient.Properties[MapiPropertyTag.PR_RECIPIENT_TRACKSTATUS_TIME].GetDateTime();
Console.WriteLine($"Response time: {responseTime}\n");
}
- MapiRecipient: Representerar en mottagare i MapiMessage, vilket ger åtkomst till individuella svarsdata.
- *PR_RECIPIENT_AUTORESPONSE_PROP_RESPONSE: En property‑tagg som lagrar mottagarens röstningssvar.
- PR_RECIPIENT_TRACKSTATUS_TIME: En property‑tagg som registrerar tiden då mottagaren svarade.
Hämta reaktionsinformation från MSG
Den GetReactions metod för FollowUpManager klassen låter dig hämta en lista över reaktioner på ett MAPI‑meddelande, vilket underlättar analys av användarengagemang. Följande kodexempel visar hur du hämtar tillgängliga reaktioner för ett specificerat meddelande, vilket ger insikt i användarinteraktioner:
// Load the message file
var msg = MapiMessage.Load(fileName);
// Retrieve the list of reactions on the message
var reactions = FollowUpManager.GetReactions(msg);
// Iterate through each reaction and output the details to the console
foreach (var reaction in reactions)
{
Console.WriteLine($"User: {reaction.Name}, Email: {reaction.Email}, Reaction: {reaction.Type}, Date: {reaction.ReactionDateTime}");
}