-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathProgram.cs
More file actions
80 lines (64 loc) · 3.05 KB
/
Copy pathProgram.cs
File metadata and controls
80 lines (64 loc) · 3.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
using Mailtrap;
using Mailtrap.Accounts;
using Mailtrap.EmailTemplates;
using Mailtrap.EmailTemplates.Models;
using Mailtrap.EmailTemplates.Requests;
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;
IAccountResource accountResource = mailtrapClient.Account(accountId);
// Get resource for email templates collection
IEmailTemplateCollectionResource emailTemplatesResource = accountResource.EmailTemplates();
// Get all email templates for account
IList<EmailTemplate> emailTemplates = await emailTemplatesResource.GetAll();
EmailTemplate? emailTemplate = emailTemplates.Count > 0 ? emailTemplates[0] : null;
if (emailTemplate is null)
{
logger.LogWarning("No email template found. Creating.");
// Create email template
var createEmailTemplateRequest = new CreateEmailTemplateRequest("MyFirstEmailTemplate", "TestCategory", "TestSubject")
{
BodyHtml = "<h1>This is HTML body</h1>",
BodyText = "This is text body"
};
emailTemplate = await emailTemplatesResource.Create(createEmailTemplateRequest);
}
else
{
logger.LogInformation("Email Template {Name} found.", emailTemplate.Name);
}
// Get resource for specific email template
IEmailTemplateResource emailTemplateResource = accountResource.EmailTemplate(emailTemplate.Id);
// Get details
EmailTemplate emailTemplateResponse = await emailTemplateResource.GetDetails();
logger.LogInformation("Email Template Name from resource: {Name}", emailTemplateResponse.Name);
logger.LogInformation("Email Template Id from resource: {Id}", emailTemplateResponse.Id);
// Update email template details
var updateEmailTemplateRequest = new UpdateEmailTemplateRequest("updatedEmailTemplate", "NewCategory", "NewSubject")
{
BodyHtml = "<h1>This is updated HTML body</h1>",
BodyText = "This is updated text body"
};
EmailTemplate updateEmailTemplateResponse = await emailTemplateResource.Update(updateEmailTemplateRequest);
logger.LogInformation("Updated Email Template: Name={Name}, Id={Id}", updateEmailTemplateResponse.Name, updateEmailTemplateResponse.Id);
// Delete email template
// Beware that email template resource becomes invalid after deletion and should not be used anymore
await emailTemplateResource.Delete();
logger.LogInformation("Email Template Deleted.");
}
catch (Exception ex)
{
logger.LogError(ex, "An error occurred during API call.");
Environment.ExitCode = 1;
return;
}