-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathTestingMessage.cs
More file actions
151 lines (121 loc) · 5.05 KB
/
TestingMessage.cs
File metadata and controls
151 lines (121 loc) · 5.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
using Mailtrap;
using Mailtrap.Inboxes;
using Mailtrap.TestingMessages;
using Mailtrap.TestingMessages.Models;
using Mailtrap.TestingMessages.Requests;
using Mailtrap.TestingMessages.Responses;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
HostApplicationBuilder hostBuilder = Host.CreateApplicationBuilder(args);
IConfigurationSection config = hostBuilder.Configuration.GetSection("Mailtrap");
hostBuilder.Services.AddMailtrapClient(config);
using IHost host = hostBuilder.Build();
ILogger<Program> logger = host.Services.GetRequiredService<ILogger<Program>>();
IMailtrapClient mailtrapClient = host.Services.GetRequiredService<IMailtrapClient>();
try
{
var accountId = 12345;
var inboxId = 54321;
IInboxResource inboxResource = mailtrapClient
.Account(accountId)
.Inbox(inboxId);
// Get resource for message collection
ITestingMessageCollectionResource messagesResource = inboxResource.Messages();
// Fetch messages from the inbox
var messageFilter = new TestingMessageFilter
{
SearchFilter = "Supervision request"
};
IList<TestingMessage> messages = await messagesResource.Fetch(messageFilter);
ITestingMessageResource messageResource;
TestingMessage? message = messages.FirstOrDefault();
if (message is not null)
{
// Get resource for message
messageResource = inboxResource.Message(message.Id);
// Get message details
message = await messageResource.GetDetails();
logger.LogInformation("Message: {Message}", message);
}
// Fetch messages from the inbox
messageFilter = new TestingMessageFilter
{
SearchFilter = "Greetings"
};
messages = await messagesResource.Fetch(messageFilter);
if (messages.Count == 0)
{
logger.LogWarning("No greetings messages found.");
}
else
{
logger.LogInformation("Found {Count} greetings messages.", messages.Count);
}
// Another fetch
messageFilter = new TestingMessageFilter
{
SearchFilter = "hero.bill"
};
messages = await messagesResource.Fetch(messageFilter);
message = messages.FirstOrDefault();
if (message is null)
{
logger.LogWarning("No messages found.");
return;
}
// Get resource for message
messageResource = inboxResource.Message(message.Id);
// Get message details
message = await messageResource.GetDetails();
logger.LogInformation("Message: {Message}", message);
// Get message headers
TestingMessageHeaders headers = await messageResource.GetHeaders();
logger.LogInformation("Message headers: {Headers}", headers.Headers);
// Get raw message content
string rawMessageContent = await messageResource.AsRaw();
logger.LogInformation("Raw message:\n{Message}", rawMessageContent);
// Get EML message content
string emlMessageContent = await messageResource.AsEml();
logger.LogInformation("EML message:\n{Message}", emlMessageContent);
if (message.TextBodySize > 0)
{
// Get plain text message body
string textMessageBody = await messageResource.GetTextBody();
logger.LogInformation("Plain text message body:\n{Message}", textMessageBody);
}
if (message.HtmlBodySize > 0)
{
// Get HTML message body
string htmlMessageBody = await messageResource.GetHtmlBody();
logger.LogInformation("HTML message body:\n{Message}", htmlMessageBody);
// Get HTML message source
string htmlMessageSource = await messageResource.GetHtmlSource();
logger.LogInformation("HTML message source:\n{Message}", htmlMessageSource);
// Get HTML analysis report for message
TestingMessageHtmlReport htmlReport = await messageResource.GetHtmlAnalysisReport();
logger.LogInformation("HTML analysis report: {Report}", htmlReport.Report);
}
// Get spam report for message
TestingMessageSpamReport spamReport = await messageResource.GetSpamReport();
logger.LogInformation("Spam report: {Report}", spamReport.Report);
// Update message details
var updateMessageRequest = new UpdateTestingMessageRequest(true);
TestingMessage updatedMessage = await messageResource.Update(updateMessageRequest);
logger.LogInformation("Updated Message: {Message}", updatedMessage);
// Forward message
var forwardMessageRequest = new ForwardTestingMessageRequest("forward@domain.com");
ForwardTestingMessageResponse forwardedMessage = await messageResource.Forward(forwardMessageRequest);
logger.LogInformation("Message forwarded: {Forward}", forwardedMessage.Message);
// Delete message
// Beware that resource becomes invalid after deletion and should not be used anymore
TestingMessage deletedMessage = await messageResource.Delete();
logger.LogInformation("Deleted Message: {Message}", deletedMessage);
}
catch (Exception ex)
{
logger.LogError(ex, "An error occurred during API call.");
Environment.FailFast(ex.Message);
throw;
}