Skip to content

Commit cb46efd

Browse files
authored
Fix(smtp): No element in sequence if user cannot be found - Resolves #1708 (#1712)
1 parent 28e9c55 commit cb46efd

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

Rnwood.Smtp4dev/Server/Smtp4devServer.cs

+18-3
Original file line numberDiff line numberDiff line change
@@ -397,9 +397,24 @@ private ILookup<MailboxOptions, string> GetTargetMailboxes(IEnumerable<string> r
397397
{
398398
if (serverOptions.CurrentValue.DeliverMessagesToUsersDefaultMailbox && messageSession.Authenticated && messageSession.AuthenticationCredentials is IAuthenticationCredentialsCanValidateWithPassword credentials)
399399
{
400-
String defaultMailbox = serverOptions.CurrentValue.Users.First(u => u.Username.Equals(credentials.Username)).DefaultMailbox;
401-
MailboxOptions mailboxOption = serverOptions.CurrentValue.Mailboxes.First(m => m.Name.Equals(defaultMailbox));
402-
return recipients.ToLookup(_ => mailboxOption, recipient => recipient);
400+
UserOptions userOptions = serverOptions.CurrentValue.Users.FirstOrDefault(u => string.Equals(u.Username, credentials.Username, StringComparison.OrdinalIgnoreCase));
401+
MailboxOptions defaultMailboxOptions = new MailboxOptions { Name = MailboxOptions.DEFAULTNAME, Recipients = "*" };
402+
MailboxOptions mailboxOption = defaultMailboxOptions;
403+
404+
if (userOptions != null)
405+
{
406+
407+
String userDefaultMailbox = userOptions.DefaultMailbox;
408+
mailboxOption = serverOptions.CurrentValue.Mailboxes.FirstOrDefault(m => string.Equals(m.Name, userDefaultMailbox, StringComparison.OrdinalIgnoreCase));
409+
410+
if (mailboxOption == null)
411+
{
412+
log.Warning("Mailbox '{userDefaultMailbox}' was not found. Falling back to default mailbox", userDefaultMailbox);
413+
mailboxOption = defaultMailboxOptions;
414+
}
415+
}
416+
417+
return recipients.ToLookup(_ => mailboxOption, recipient => recipient);
403418
}
404419

405420
List<(MailboxOptions,string)> targetMailboxesWithMatchedRecipient = new List<(MailboxOptions, string)>();

sendtestemail.ps1

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ write-host "Here"
1212
return $true
1313
}
1414
write-host $i
15-
Send-MailMessage -verbose -Attachments ./smtp4dev.sln -To [email protected] -Cc [email protected] -bcc [email protected] -From [email protected] -Subject "Message $i" -SmtpServer localhost -BodyAsHtml -Body "<h1>Hey</h1>This is a message!<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae interdum arcu. Donec vel odio sed mauris luctus aliquet. Suspendisse vel magna ipsum. Praesent mollis nisi sed sapien blandit, non ultrices magna ultricies. Duis blandit tempor rutrum. Integer egestas eleifend lorem, eget volutpat tellus. Maecenas mauris dui, tincidunt vitae lacus laoreet, laoreet porta lectus. Mauris a urna justo. Phasellus porta vestibulum lorem in ultricies. Interdum et malesuada fames ac ante ipsum primis in faucibus. Sed convallis at neque in consectetur. Duis sed ipsum nec risus tempor dictum et id libero. Praesent imperdiet lacinia ullamcorper. Duis ante magna, accumsan in est in, tincidunt porta felis. Suspendisse venenatis nisi eget tellus mollis semper. Phasellus tristique elit nec ultricies tincidunt.
15+
Send-MailMessage -credential (get-credential) -verbose -Attachments ./smtp4dev.sln -To [email protected] -Cc [email protected] -bcc [email protected] -From [email protected] -Subject "Message $i" -SmtpServer localhost -BodyAsHtml -Body "<h1>Hey</h1>This is a message!<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae interdum arcu. Donec vel odio sed mauris luctus aliquet. Suspendisse vel magna ipsum. Praesent mollis nisi sed sapien blandit, non ultrices magna ultricies. Duis blandit tempor rutrum. Integer egestas eleifend lorem, eget volutpat tellus. Maecenas mauris dui, tincidunt vitae lacus laoreet, laoreet porta lectus. Mauris a urna justo. Phasellus porta vestibulum lorem in ultricies. Interdum et malesuada fames ac ante ipsum primis in faucibus. Sed convallis at neque in consectetur. Duis sed ipsum nec risus tempor dictum et id libero. Praesent imperdiet lacinia ullamcorper. Duis ante magna, accumsan in est in, tincidunt porta felis. Suspendisse venenatis nisi eget tellus mollis semper. Phasellus tristique elit nec ultricies tincidunt.
1616

1717
<div style='display: flex;'></div><open>
1818
<p>Sed pellentesque sit amet nibh eget pellentesque. Etiam mi lectus, elementum vitae sapien id, placerat ornare nunc. Integer sagittis, est id viverra venenatis, sapien velit pulvinar felis, in fringilla urna lorem a libero. Fusce diam magna, laoreet elementum ullamcorper non, fringilla scelerisque dolor. Aenean venenatis arcu vel orci imperdiet, eu semper sapien egestas. Pellentesque condimentum elit in congue vulputate. Phasellus sed lacus feugiat, egestas justo et, sodales lorem. Morbi fringilla bibendum ligula vel imperdiet. Sed non cursus urna, eu consectetur urna. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus dui leo, pretium eu commodo eget, sagittis vitae odio. Aenean non arcu imperdiet, malesuada massa at, porta turpis. Proin iaculis ullamcorper imperdiet. Donec lacus lacus, varius eu mauris et, eleifend convallis nisi. In ut nunc tellus. Aliquam convallis congue metus at imperdiet.

0 commit comments

Comments
 (0)