-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathNewsletterFlow_SpaceOptimized.cs
More file actions
37 lines (31 loc) · 1.27 KB
/
Copy pathNewsletterFlow_SpaceOptimized.cs
File metadata and controls
37 lines (31 loc) · 1.27 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
using MailKit.Net.Smtp;
using MimeKit;
using MimeKit.Text;
namespace Cleipnir.Flows.Sample.Presentation.Solutions.C_NewsletterSender;
public class NewsletterFlow_SpaceOptimized : Flow<MailAndRecipients>
{
public override async Task Run(MailAndRecipients mailAndRecipients)
{
var (recipients, subject, content) = mailAndRecipients;
using var client = new SmtpClient();
await client.ConnectAsync("mail.smtpbucket.com", 8025);
var atRecipient = await Effect.CreateOrGet("atRecipient", 0);
for (;atRecipient < mailAndRecipients.Recipients.Count; atRecipient++)
{
var recipient = recipients[atRecipient];
var message = new MimeMessage();
message.To.Add(new MailboxAddress(recipient.Name, recipient.Address));
message.From.Add(new MailboxAddress("Cleipnir", "newsletter@cleipnir.net"));
message.Subject = subject;
message.Body = new TextPart(TextFormat.Html) { Text = content };
await client.SendAsync(message);
await Effect.Upsert("atRecipient", atRecipient);
}
}
}
public record EmailAddress(string Name, string Address);
public record MailAndRecipients(
List<EmailAddress> Recipients,
string Subject,
string Content
);