@@ -23,6 +23,9 @@ public sealed class GenerateCheckList
23
23
private readonly List < Whitelist > _whitelist = new List < Whitelist > ( ) ;
24
24
private int _failedToGetInformationOfRecipientsMailAddressCounter ;
25
25
26
+ public bool IsMeetingItem ;
27
+ public bool IsTaskRequestItem ;
28
+
26
29
/// <summary>
27
30
/// メール送信前の確認画面で使用するチェックリストの生成。
28
31
/// </summary>
@@ -90,8 +93,6 @@ internal CheckList GenerateCheckListFromMail<T>(T item, GeneralSetting generalSe
90
93
91
94
#endregion
92
95
93
- var isMeetingItem = false ;
94
- var isTaskRequestItem = false ;
95
96
switch ( item )
96
97
{
97
98
case Outlook . MailItem mailItem :
@@ -102,7 +103,7 @@ internal CheckList GenerateCheckListFromMail<T>(T item, GeneralSetting generalSe
102
103
_checkList . MailHtmlBody = mailItem . HTMLBody ?? Resources . FailedToGetInformation ;
103
104
break ;
104
105
case Outlook . MeetingItem meetingItem :
105
- isMeetingItem = true ;
106
+ IsMeetingItem = true ;
106
107
_checkList . MailType = Resources . MeetingRequest ;
107
108
_checkList . MailBody = string . IsNullOrEmpty ( meetingItem . Body ) ? Resources . FailedToGetInformation : meetingItem . Body . Replace ( "\r \n \r \n " , "\r \n " ) ;
108
109
@@ -117,7 +118,7 @@ internal CheckList GenerateCheckListFromMail<T>(T item, GeneralSetting generalSe
117
118
}
118
119
break ;
119
120
case Outlook . TaskRequestItem taskRequestItem :
120
- isTaskRequestItem = true ;
121
+ IsTaskRequestItem = true ;
121
122
_checkList . MailType = Resources . TaskRequest ;
122
123
123
124
var associatedTask = taskRequestItem . GetAssociatedTask ( false ) ;
@@ -146,12 +147,12 @@ internal CheckList GenerateCheckListFromMail<T>(T item, GeneralSetting generalSe
146
147
_checkList = CheckKeyword ( _checkList , alertKeywordAndMessageList ) ;
147
148
_checkList = CheckKeywordForSubject ( _checkList , alertKeywordAndMessageForSubjectList ) ;
148
149
149
- var displayNameAndRecipient = isTaskRequestItem ? MakeDisplayNameAndRecipient ( ( ( Outlook . TaskRequestItem ) item ) . GetAssociatedTask ( false ) . Recipients , new DisplayNameAndRecipient ( ) , generalSetting , false ) : ( DisplayNameAndRecipient ) MakeDisplayNameAndRecipient ( ( ( dynamic ) item ) . Recipients , new DisplayNameAndRecipient ( ) , generalSetting , isMeetingItem ) ;
150
+ var displayNameAndRecipient = IsTaskRequestItem ? MakeDisplayNameAndRecipient ( ( ( Outlook . TaskRequestItem ) item ) . GetAssociatedTask ( false ) . Recipients , new DisplayNameAndRecipient ( ) , generalSetting , false ) : ( DisplayNameAndRecipient ) MakeDisplayNameAndRecipient ( ( ( dynamic ) item ) . Recipients , new DisplayNameAndRecipient ( ) , generalSetting , IsMeetingItem ) ;
150
151
151
152
var autoAddRecipients = AutoAddCcAndBcc ( item , generalSetting , displayNameAndRecipient , autoCcBccKeywordList , autoCcBccAttachedFilesList , autoCcBccRecipientList , CountRecipientExternalDomains ( displayNameAndRecipient , _checkList . SenderDomain , internalDomainList , false ) , _checkList . Sender , generalSetting . IsAutoAddSenderToBcc , generalSetting . IsAutoAddSenderToCc ) ;
152
153
if ( autoAddRecipients ? . Count > 0 )
153
154
{
154
- displayNameAndRecipient = MakeDisplayNameAndRecipient ( autoAddRecipients , displayNameAndRecipient , generalSetting , isMeetingItem ) ;
155
+ displayNameAndRecipient = MakeDisplayNameAndRecipient ( autoAddRecipients , displayNameAndRecipient , generalSetting , IsMeetingItem ) ;
155
156
_ = ( ( dynamic ) item ) . Recipients . ResolveAll ( ) ;
156
157
}
157
158
@@ -214,7 +215,7 @@ private CheckList GetSenderAndSenderDomain<T>(in T item, CheckList checkList)
214
215
Outlook . ExchangeUser exchangeUser = null ;
215
216
216
217
var sender = ( ( Outlook . MailItem ) item ) . Sender ;
217
-
218
+
218
219
var errorCount = 0 ;
219
220
while ( errorCount < 100 )
220
221
{
@@ -309,8 +310,35 @@ private CheckList GetSenderAndSenderDomain<T>(in T item, CheckList checkList)
309
310
}
310
311
catch ( Exception )
311
312
{
312
- checkList . Sender = Resources . FailedToGetInformation ;
313
- checkList . SenderDomain = @"------------------" ;
313
+ try
314
+ {
315
+ if ( IsTaskRequestItem )
316
+ {
317
+ if ( item is Outlook . TaskRequestItem taskRequest )
318
+ {
319
+ var associatedTask = taskRequest . GetAssociatedTask ( false ) ;
320
+
321
+ if ( associatedTask != null )
322
+ {
323
+ var senderAddress = associatedTask . SendUsingAccount ? . SmtpAddress ;
324
+ checkList . Sender = senderAddress ?? Resources . FailedToGetInformation ;
325
+
326
+ Marshal . ReleaseComObject ( associatedTask ) ;
327
+ checkList . SenderDomain = checkList . Sender == Resources . FailedToGetInformation ? "------------------" : checkList . Sender . Substring ( checkList . Sender . IndexOf ( "@" , StringComparison . Ordinal ) ) ;
328
+ }
329
+ }
330
+ }
331
+ else
332
+ {
333
+ checkList . Sender = Resources . FailedToGetInformation ;
334
+ checkList . SenderDomain = @"------------------" ;
335
+ }
336
+ }
337
+ catch ( Exception )
338
+ {
339
+ checkList . Sender = Resources . FailedToGetInformation ;
340
+ checkList . SenderDomain = @"------------------" ;
341
+ }
314
342
}
315
343
316
344
return checkList ;
@@ -1170,7 +1198,18 @@ private CheckList GetAttachmentsInformation<T>(in T item, CheckList checkList, b
1170
1198
var fileSize = "?KB" ;
1171
1199
if ( ( ( dynamic ) item ) . Attachments [ i + 1 ] . Size != 0 )
1172
1200
{
1173
- fileSize = Math . Round ( ( ( double ) ( ( dynamic ) item ) . Attachments [ i + 1 ] . Size / 1024 ) , 0 , MidpointRounding . AwayFromZero ) . ToString ( "##,###" ) + "KB" ;
1201
+ var sizeInKb = ( double ) ( ( dynamic ) item ) . Attachments [ i + 1 ] . Size / 1024 ;
1202
+ string formattedSize ;
1203
+ if ( sizeInKb >= 1 || sizeInKb == 0 )
1204
+ {
1205
+ formattedSize = Math . Round ( sizeInKb ) . ToString ( "##,###" ) ;
1206
+ }
1207
+ else
1208
+ {
1209
+ formattedSize = sizeInKb . ToString ( "0.###" ) ;
1210
+ }
1211
+
1212
+ fileSize = formattedSize + "KB" ;
1174
1213
}
1175
1214
1176
1215
if ( ( ( dynamic ) item ) . Attachments [ i + 1 ] . Size >= 10485760 )
@@ -1303,6 +1342,15 @@ private CheckList GetAttachmentsInformation<T>(in T item, CheckList checkList, b
1303
1342
}
1304
1343
}
1305
1344
1345
+ if ( IsTaskRequestItem )
1346
+ {
1347
+ var targetAttachment = checkList . Attachments . FirstOrDefault ( x => x . FileType == ".msg" ) ;
1348
+ if ( targetAttachment != null )
1349
+ {
1350
+ checkList . Attachments . Remove ( targetAttachment ) ;
1351
+ }
1352
+ }
1353
+
1306
1354
return checkList ;
1307
1355
}
1308
1356
0 commit comments