@@ -63,31 +63,42 @@ public async Task<bool> HandleAsync(AccountDeleteMessage command)
6363 throw new UserNotFoundException ( ) ;
6464 }
6565
66- if ( _accountDeleteConfigurationAccessor . Value . RespectEmailContactSetting && ! user . EmailAllowed )
67- {
68- throw new EmailContactNotAllowedException ( ) ;
69- }
70-
7166 var recipientEmail = user . EmailAddress ;
67+ var emailAllowed = user . EmailAllowed ;
7268 var deleteSuccess = await _accountManager . DeleteAccount ( user , source ) ;
7369 _telemetryService . TrackDeleteResult ( source , deleteSuccess ) ;
7470
75- var baseEmailBuilder = _emailBuilderFactory . GetEmailBuilder ( source , deleteSuccess ) ;
76- if ( baseEmailBuilder != null )
71+ if ( recipientEmail == null )
72+ {
73+ _logger . LogWarning ( "User has no confirmed email address. The user has been deleted but no email was sent." ) ;
74+ _telemetryService . TrackUnconfirmedUser ( source ) ;
75+ messageProcessed = true ;
76+ }
77+ else if ( _accountDeleteConfigurationAccessor . Value . RespectEmailContactSetting && ! emailAllowed )
7778 {
78- var toEmail = new List < MailAddress > ( ) ;
79+ _logger . LogWarning ( "User did not allow Email Contact. The user has been deleted but no email was sent." ) ;
80+ _telemetryService . TrackEmailBlocked ( source ) ;
81+ messageProcessed = true ;
82+ }
83+ else
84+ {
85+ var baseEmailBuilder = _emailBuilderFactory . GetEmailBuilder ( source , deleteSuccess ) ;
86+ if ( baseEmailBuilder != null )
87+ {
88+ var toEmail = new List < MailAddress > ( ) ;
7989
80- var configuration = _accountDeleteConfigurationAccessor . Value ;
81- var senderAddress = configuration . EmailConfiguration . GalleryOwner ;
82- var ccEmail = new List < MailAddress > ( ) ;
83- toEmail . Add ( new MailAddress ( recipientEmail ) ) ;
84- ccEmail . Add ( new MailAddress ( senderAddress ) ) ;
90+ var configuration = _accountDeleteConfigurationAccessor . Value ;
91+ var senderAddress = configuration . EmailConfiguration . GalleryOwner ;
92+ var ccEmail = new List < MailAddress > ( ) ;
93+ toEmail . Add ( new MailAddress ( recipientEmail ) ) ;
94+ ccEmail . Add ( new MailAddress ( senderAddress ) ) ;
8595
86- var recipients = new EmailRecipients ( toEmail , ccEmail ) ;
87- var emailBuilder = new DisposableEmailBuilder ( baseEmailBuilder , recipients , username ) ;
88- await _messenger . SendMessageAsync ( emailBuilder ) ;
89- _telemetryService . TrackEmailSent ( source , user . EmailAllowed ) ;
90- messageProcessed = true ;
96+ var recipients = new EmailRecipients ( toEmail , ccEmail ) ;
97+ var emailBuilder = new DisposableEmailBuilder ( baseEmailBuilder , recipients , username ) ;
98+ await _messenger . SendMessageAsync ( emailBuilder ) ;
99+ _telemetryService . TrackEmailSent ( source , emailAllowed ) ;
100+ messageProcessed = true ;
101+ }
91102 }
92103 }
93104 catch ( UnknownSourceException )
@@ -98,12 +109,6 @@ public async Task<bool> HandleAsync(AccountDeleteMessage command)
98109 _telemetryService . TrackUnknownSource ( source ) ;
99110 messageProcessed = false ;
100111 }
101- catch ( EmailContactNotAllowedException )
102- {
103- // Should we not send? or should we ignore the setting.
104- _logger . LogWarning ( "User did not allow Email Contact." ) ;
105- _telemetryService . TrackEmailBlocked ( source ) ;
106- }
107112 catch ( UserNotFoundException )
108113 {
109114 _logger . LogWarning ( "User was not found. They may have already been deleted." ) ;
@@ -112,8 +117,8 @@ public async Task<bool> HandleAsync(AccountDeleteMessage command)
112117 }
113118 catch ( Exception e )
114119 {
115- _logger . LogError ( 0 , e , "An unknown exception occured: {ExceptionMessage} " ) ;
116- throw e ;
120+ _logger . LogError ( e , "An unknown exception occurred. " ) ;
121+ throw ;
117122 }
118123
119124 return messageProcessed ;
0 commit comments