Skip to content

Commit 44797be

Browse files
authored
Merge pull request #56 from t-miyake/develop
v2.8系の不具合修正
2 parents c037103 + 2b2f106 commit 44797be

16 files changed

+177
-139
lines changed

OutlookOkan/Handlers/OfficeFileHandler.cs

+2-49
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,6 @@ internal static bool CheckOfficeFileIsEncrypted(string filePath, string fileType
4747
//パスワード違いの例外となった場合、パスワード付きDOCXとして判定。
4848
isEncrypted = e.HResult == -2146822880;
4949
}
50-
51-
Thread.Sleep(10);
52-
tempWordApp.Quit();
53-
Thread.Sleep(10);
54-
_ = Marshal.ReleaseComObject(tempWordApp);
55-
tempWordApp = null;
56-
GC.Collect();
57-
GC.WaitForPendingFinalizers();
58-
GC.Collect();
5950
break;
6051
case "xls":
6152
case "xlsx":
@@ -73,6 +64,7 @@ internal static bool CheckOfficeFileIsEncrypted(string filePath, string fileType
7364
{
7465
var excelFile = tempExcelApp.Workbooks.Open(filePath, Password: null);
7566
isEncrypted = false;
67+
7668
Thread.Sleep(10);
7769
excelFile.Close(false);
7870
Thread.Sleep(10);
@@ -84,15 +76,6 @@ internal static bool CheckOfficeFileIsEncrypted(string filePath, string fileType
8476
//パスワード違いの例外となった場合、パスワード付きXLSXとして判定。
8577
isEncrypted = e.HResult == -2146827284;
8678
}
87-
88-
Thread.Sleep(10);
89-
tempExcelApp.Quit();
90-
Thread.Sleep(10);
91-
_ = Marshal.ReleaseComObject(tempExcelApp);
92-
tempExcelApp = null;
93-
GC.Collect();
94-
GC.WaitForPendingFinalizers();
95-
GC.Collect();
9679
break;
9780
case "ppt":
9881
case "pptx":
@@ -114,15 +97,6 @@ internal static bool CheckOfficeFileIsEncrypted(string filePath, string fileType
11497
//パスワード違いの例外となった場合、パスワード付きPPTXとして判定。
11598
isEncrypted = e.HResult == -2147467259;
11699
}
117-
118-
Thread.Sleep(10);
119-
tempPowerPointApp.Quit();
120-
Thread.Sleep(10);
121-
_ = Marshal.ReleaseComObject(tempPowerPointApp);
122-
tempPowerPointApp = null;
123-
GC.Collect();
124-
GC.WaitForPendingFinalizers();
125-
GC.Collect();
126100
break;
127101
default:
128102
return false;
@@ -171,18 +145,12 @@ internal static bool CheckOfficeFileHasVbProject(string filePath, string fileTyp
171145
_ = Marshal.ReleaseComObject(excelFile);
172146
excelFile = null;
173147
}
174-
Thread.Sleep(10);
175-
tempExcelApp.Quit();
176-
Thread.Sleep(10);
177-
_ = Marshal.ReleaseComObject(tempExcelApp);
178-
tempExcelApp = null;
179148
}
180149
catch (Exception)
181150
{
182151
//Do Nothing.
183152
}
184153
break;
185-
186154
case "doc":
187155
case "docx":
188156
case "docm":
@@ -212,19 +180,12 @@ internal static bool CheckOfficeFileHasVbProject(string filePath, string fileTyp
212180
_ = Marshal.ReleaseComObject(wordFile);
213181
wordFile = null;
214182
}
215-
216-
Thread.Sleep(10);
217-
tempWordApp.Quit();
218-
Thread.Sleep(10);
219-
_ = Marshal.ReleaseComObject(tempWordApp);
220-
tempWordApp = null;
221183
}
222184
catch (Exception)
223185
{
224186
//Do Nothing.
225187
}
226188
break;
227-
228189
case "ppt":
229190
case "pptx":
230191
case "pptm":
@@ -247,22 +208,14 @@ internal static bool CheckOfficeFileHasVbProject(string filePath, string fileTyp
247208
_ = Marshal.ReleaseComObject(pptFile);
248209
pptFile = null;
249210
}
250-
251-
Thread.Sleep(10);
252-
tempPptApp.Quit();
253-
Thread.Sleep(10);
254-
_ = Marshal.ReleaseComObject(tempPptApp);
255-
tempPptApp = null;
256211
}
257212
catch (Exception)
258213
{
259214
//Do Nothing.
260215
}
261216
break;
262-
263217
default:
264-
isHasVbProject = false;
265-
break;
218+
return false;
266219
}
267220

268221
return isHasVbProject;

OutlookOkan/Models/GenerateCheckList.cs

+58-10
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ public sealed class GenerateCheckList
2323
private readonly List<Whitelist> _whitelist = new List<Whitelist>();
2424
private int _failedToGetInformationOfRecipientsMailAddressCounter;
2525

26+
public bool IsMeetingItem;
27+
public bool IsTaskRequestItem;
28+
2629
/// <summary>
2730
/// メール送信前の確認画面で使用するチェックリストの生成。
2831
/// </summary>
@@ -90,8 +93,6 @@ internal CheckList GenerateCheckListFromMail<T>(T item, GeneralSetting generalSe
9093

9194
#endregion
9295

93-
var isMeetingItem = false;
94-
var isTaskRequestItem = false;
9596
switch (item)
9697
{
9798
case Outlook.MailItem mailItem:
@@ -102,7 +103,7 @@ internal CheckList GenerateCheckListFromMail<T>(T item, GeneralSetting generalSe
102103
_checkList.MailHtmlBody = mailItem.HTMLBody ?? Resources.FailedToGetInformation;
103104
break;
104105
case Outlook.MeetingItem meetingItem:
105-
isMeetingItem = true;
106+
IsMeetingItem = true;
106107
_checkList.MailType = Resources.MeetingRequest;
107108
_checkList.MailBody = string.IsNullOrEmpty(meetingItem.Body) ? Resources.FailedToGetInformation : meetingItem.Body.Replace("\r\n\r\n", "\r\n");
108109

@@ -117,7 +118,7 @@ internal CheckList GenerateCheckListFromMail<T>(T item, GeneralSetting generalSe
117118
}
118119
break;
119120
case Outlook.TaskRequestItem taskRequestItem:
120-
isTaskRequestItem = true;
121+
IsTaskRequestItem = true;
121122
_checkList.MailType = Resources.TaskRequest;
122123

123124
var associatedTask = taskRequestItem.GetAssociatedTask(false);
@@ -146,12 +147,12 @@ internal CheckList GenerateCheckListFromMail<T>(T item, GeneralSetting generalSe
146147
_checkList = CheckKeyword(_checkList, alertKeywordAndMessageList);
147148
_checkList = CheckKeywordForSubject(_checkList, alertKeywordAndMessageForSubjectList);
148149

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);
150151

151152
var autoAddRecipients = AutoAddCcAndBcc(item, generalSetting, displayNameAndRecipient, autoCcBccKeywordList, autoCcBccAttachedFilesList, autoCcBccRecipientList, CountRecipientExternalDomains(displayNameAndRecipient, _checkList.SenderDomain, internalDomainList, false), _checkList.Sender, generalSetting.IsAutoAddSenderToBcc, generalSetting.IsAutoAddSenderToCc);
152153
if (autoAddRecipients?.Count > 0)
153154
{
154-
displayNameAndRecipient = MakeDisplayNameAndRecipient(autoAddRecipients, displayNameAndRecipient, generalSetting, isMeetingItem);
155+
displayNameAndRecipient = MakeDisplayNameAndRecipient(autoAddRecipients, displayNameAndRecipient, generalSetting, IsMeetingItem);
155156
_ = ((dynamic)item).Recipients.ResolveAll();
156157
}
157158

@@ -214,7 +215,7 @@ private CheckList GetSenderAndSenderDomain<T>(in T item, CheckList checkList)
214215
Outlook.ExchangeUser exchangeUser = null;
215216

216217
var sender = ((Outlook.MailItem)item).Sender;
217-
218+
218219
var errorCount = 0;
219220
while (errorCount < 100)
220221
{
@@ -309,8 +310,35 @@ private CheckList GetSenderAndSenderDomain<T>(in T item, CheckList checkList)
309310
}
310311
catch (Exception)
311312
{
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+
}
314342
}
315343

316344
return checkList;
@@ -1170,7 +1198,18 @@ private CheckList GetAttachmentsInformation<T>(in T item, CheckList checkList, b
11701198
var fileSize = "?KB";
11711199
if (((dynamic)item).Attachments[i + 1].Size != 0)
11721200
{
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";
11741213
}
11751214

11761215
if (((dynamic)item).Attachments[i + 1].Size >= 10485760)
@@ -1303,6 +1342,15 @@ private CheckList GetAttachmentsInformation<T>(in T item, CheckList checkList, b
13031342
}
13041343
}
13051344

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+
13061354
return checkList;
13071355
}
13081356

OutlookOkan/OutlookOkan.csproj

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
<PublishUrl>publish\</PublishUrl>
3636
<InstallUrl />
3737
<TargetCulture>en</TargetCulture>
38-
<ApplicationVersion>2.8.0.11</ApplicationVersion>
38+
<ApplicationVersion>2.8.1.00</ApplicationVersion>
3939
<AutoIncrementApplicationRevision>false</AutoIncrementApplicationRevision>
4040
<UpdateEnabled>false</UpdateEnabled>
4141
<UpdateInterval>0</UpdateInterval>
@@ -357,6 +357,7 @@
357357
<ItemGroup>
358358
<Resource Include="Images\Noraneko_Logo.png" />
359359
</ItemGroup>
360+
<ItemGroup />
360361
<PropertyGroup>
361362
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
362363
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>

OutlookOkan/Properties/AssemblyInfo.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("2.8.0.12")]
36-
[assembly: AssemblyFileVersion("2.8.0.12")]
35+
[assembly: AssemblyVersion("2.8.1.00")]
36+
[assembly: AssemblyFileVersion("2.8.1.00")]
3737
[assembly: NeutralResourcesLanguage("en-US")]
3838

OutlookOkan/Properties/Resources.Designer.cs

+11-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

OutlookOkan/Properties/Resources.de-DE.resx

+5-4
Original file line numberDiff line numberDiff line change
@@ -843,7 +843,7 @@ wird diese Funktion angewendet.</value>
843843
<value>Unbekannt</value>
844844
</data>
845845
<data name="Version" xml:space="preserve">
846-
<value>Version 2.8.0.1.2</value>
846+
<value>Version 2.8.1</value>
847847
</data>
848848
<data name="VersionInfo" xml:space="preserve">
849849
<value>Über das Programm</value>
@@ -896,9 +896,7 @@ wird diese Funktion angewendet.</value>
896896
*Die Einstellungen werden nach dem Neustart von Outlook übernommen.</value>
897897
</data>
898898
<data name="SettingExampleSecurityForReceivedMail" xml:space="preserve">
899-
<value>Die Aktivierung dieser Funktion kann zu Problemen führen.
900-
901-
*Die Einstellungen werden nach dem Neustart von Outlook übernommen.</value>
899+
<value>Die Einstellungen werden nach dem Neustart von Outlook übernommen.</value>
902900
</data>
903901
<data name="IsEnableWarningFeatureWhenOpeningAttachments" xml:space="preserve">
904902
<value>Verwenden Sie die Warnfunktion beim Öffnen von Anhängen.</value>
@@ -978,4 +976,7 @@ Risiko einer Infektion mit einem Virus.</value>
978976
<data name="ImportErrorOfAllSettings" xml:space="preserve">
979977
<value>Bitte wählen Sie die richtige Datei aus. Fehler:</value>
980978
</data>
979+
<data name="IsNoInternetCantUseSecurityForReceivedMail" xml:space="preserve">
980+
<value>Da keine Internetverbindung besteht, ist die Sicherheitsüberprüfung beim Öffnen von E-Mails nicht verfügbar.</value>
981+
</data>
981982
</root>

OutlookOkan/Properties/Resources.es-ES.resx

+5-4
Original file line numberDiff line numberDiff line change
@@ -841,7 +841,7 @@ se aplicará esta función.</value>
841841
<value>Desconocido</value>
842842
</data>
843843
<data name="Version" xml:space="preserve">
844-
<value>Version 2.8.0.1.2</value>
844+
<value>Version 2.8.1</value>
845845
</data>
846846
<data name="VersionInfo" xml:space="preserve">
847847
<value>Sobre el programa</value>
@@ -894,9 +894,7 @@ se aplicará esta función.</value>
894894
* La configuración se reflejará después de reiniciar Outlook.</value>
895895
</data>
896896
<data name="SettingExampleSecurityForReceivedMail" xml:space="preserve">
897-
<value>Habilitar esta función puede causar problemas.
898-
899-
* La configuración se reflejará después de reiniciar Outlook.</value>
897+
<value>La configuración se reflejará después de reiniciar Outlook.</value>
900898
</data>
901899
<data name="IsEnableWarningFeatureWhenOpeningAttachments" xml:space="preserve">
902900
<value>Utilice la función de advertencia al abrir archivos adjuntos.</value>
@@ -976,4 +974,7 @@ riesgo de infección con un virus.</value>
976974
<data name="ImportErrorOfAllSettings" xml:space="preserve">
977975
<value>Seleccione el archivo correcto. Error:</value>
978976
</data>
977+
<data name="IsNoInternetCantUseSecurityForReceivedMail" xml:space="preserve">
978+
<value>Dado que no hay conexión a Internet, la función de comprobación de seguridad no está disponible al abrir el correo electrónico.</value>
979+
</data>
979980
</root>

0 commit comments

Comments
 (0)