diff --git a/Config/Config.cs b/Config/Config.cs index 36210ce..4bb9b75 100644 --- a/Config/Config.cs +++ b/Config/Config.cs @@ -21,7 +21,8 @@ public class Config public string TrustedDomainsPattern = ""; public string TrustedAddressesPattern = ""; - public string UnsafeDomainsPattern = ""; + public string UnsafeDomainsPattern = ""; + public string UnsafeAddressesPattern = ""; public string UnsafeFilesPattern = ""; public Config() @@ -96,10 +97,13 @@ public void RebuildPatterns() { var trustedAddressList = TrustedDomains.Where(_ => _.Contains("@")); var trustedDomainList = TrustedDomains.Where(_ => !_.Contains("@")); + var unsafeAddressList = UnsafeDomains.Where(_ => _.Contains("@")); + var unsafeDomainList = UnsafeDomains.Where(_ => !_.Contains("@")); TrustedDomainsPattern = $"^({string.Join("|", trustedDomainList.Select(ConvertWildCardToRegex))})$"; TrustedAddressesPattern = $"^({string.Join("|", trustedAddressList.Select(ConvertWildCardToRegex))})$"; - UnsafeDomainsPattern = $"^({string.Join("|", UnsafeDomains.Select(ConvertWildCardToRegex))})$"; + UnsafeDomainsPattern = $"^({string.Join("|", unsafeDomainList.Select(ConvertWildCardToRegex))})$"; + UnsafeAddressesPattern = $"^({string.Join("|", unsafeAddressList.Select(ConvertWildCardToRegex))})$"; UnsafeFilesPattern = $"({string.Join("|", UnsafeFiles.Select(ConvertWildCardToRegex))})"; } diff --git a/Dialog/MainDialog.xaml.cs b/Dialog/MainDialog.xaml.cs index 715d9a6..67a40b6 100644 --- a/Dialog/MainDialog.xaml.cs +++ b/Dialog/MainDialog.xaml.cs @@ -66,6 +66,7 @@ private void RenderMain() // Attachments/Alerts CheckSafeBcc(_recipients); CheckUnsafeDomains(_recipients); + CheckUnsafeAddresses(_recipients); CheckUnsafeFiles(); foreach (Outlook.Attachment item in _mail.Attachments) @@ -224,7 +225,31 @@ private void CheckUnsafeDomains(List recipients) seen.Add(info.Domain); } } - } + } + + private void CheckUnsafeAddresses(List recipients) + { + HashSet seen = new HashSet(); + + foreach (RecipientInfo info in recipients) + { + if (!seen.Contains(info.Address)) + { + try + { + if (Regex.IsMatch(info.Address, _config.UnsafeAddressesPattern, RegexOptions.IgnoreCase)) + { + spFile.Children.Add(GetWarnCheckBox( + string.Format(Properties.Resources.MainUnsafeAddressesWarning, info.Address), + Properties.Resources.MainUnsafeAddressesWarningHint + )); + } + } + catch (RegexMatchTimeoutException) { } + seen.Add(info.Address); + } + } + } private void CheckUnsafeFiles() { diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index 663de46..f37549e 100644 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace FlexConfirmMail.Properties { // または Visual Studio のようなツールを使用して自動生成されました。 // メンバーを追加または削除するには、.ResX ファイルを編集して、/str オプションと共に // ResGen を実行し直すか、または VS プロジェクトをビルドし直します。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] public class Resources { @@ -343,6 +343,24 @@ public static string MainTrusted { } } + /// + /// [警告] 注意が必要なアドレス({0})が宛先に含まれています。 に類似しているローカライズされた文字列を検索します。 + /// + public static string MainUnsafeAddressesWarning { + get { + return ResourceManager.GetString("MainUnsafeAddressesWarning", resourceCulture); + } + } + + /// + /// このアドレスは誤送信の可能性が高いため、再確認を促す警告を出してします。 に類似しているローカライズされた文字列を検索します。 + /// + public static string MainUnsafeAddressesWarningHint { + get { + return ResourceManager.GetString("MainUnsafeAddressesWarningHint", resourceCulture); + } + } + /// /// [警告] 注意が必要なドメイン({0})が宛先に含まれています。 に類似しているローカライズされた文字列を検索します。 /// @@ -481,8 +499,8 @@ public static string TrustedDomainsExample { ///# また、先頭に「-」をつけると、ドメインを除外することができます。 ///# 指定にはワイルドカード(*および?)も使用可能です。 ///# また、ドメインだけでなくアドレスを指定することもできます。 - ///# * @を含む場合はアドレスが指定されたとみなします。 - ///# * @を含まない場合はドメインが指定されたとみなします。 + ///# * @を含む場合はアドレスが指定されたとみなします + ///# * @を含まない場合はドメインが指定されたとみなします ///################################## /// ///{1} に類似しているローカライズされた文字列を検索します。 @@ -543,6 +561,9 @@ public static string UnsafeDomainsExample { ///# さらにドメインを追加する場合は、以下に1行ずつ入力してください。 ///# また、先頭に「-」をつけると、ドメインを除外することができます。 ///# 指定にはワイルドカード(*および?)も使用可能です。 + ///# また、ドメインだけでなくアドレスを指定することもできます。 + ///# * @を含む場合はアドレスが指定されたとみなします + ///# * @を含まない場合はドメインが指定されたとみなします ///################################## /// ///{1} に類似しているローカライズされた文字列を検索します。 @@ -616,6 +637,9 @@ public static string UnsafeFilesPolicy { ///# (1) 添付ファイルに含まれる場合に警告する注意ワードを指定します。 ///# (2) 以下の例のように一行に一件ずつ記載します。 ///# (3) 冒頭が「#」から始まる行は無視されます。 + ///# (4) ドメインだけでなくアドレス全体を指定することもできます。 + ///# * @を含む場合はアドレスが指定されたとみなします。 + ///# * @を含まない場合はドメインが指定されたとみなします。 ///# ///################################## /// diff --git a/Properties/Resources.en.resx b/Properties/Resources.en.resx index aea5b0b..9d2ab90 100644 --- a/Properties/Resources.en.resx +++ b/Properties/Resources.en.resx @@ -203,6 +203,9 @@ # To add more domains, input entries (one per line) below. # You can also exclude domains by adding "-" at the beginning. # And wildcards (* and ?) are also available. +# You can specify not only domains but also addresses. +# * When an entry contains @, the entry is regarded as address. +# * When an entry does not contains @, the entry is regarded as domain. ################################## {1} @@ -255,6 +258,9 @@ example.org # (2) Enter one entry per line as follows. # (3) Lines starting with # are ignored. # (4) Wildcards (* and ?) are available. +# (5) You can specify not only domains but also addresses. +# * When an entry contains @, the entry is regarded as address. +# * when an entry does not contains @, the entry is regarded as domain. # ################################## @@ -357,4 +363,10 @@ so please use Bcc when sending an message to unrelated parties. Warning! + + [Warn] An unsafe address "{0}" found in the recipient list + + + This address is registered as unsafe. Please recheck and confirm. + \ No newline at end of file diff --git a/Properties/Resources.es.resx b/Properties/Resources.es.resx index 77b43b4..62730f3 100644 --- a/Properties/Resources.es.resx +++ b/Properties/Resources.es.resx @@ -203,6 +203,9 @@ # Para agregar más dominios, ingrese las entradas (una por línea) a continuación. # También puedes excluir dominios agregando "-" al principio # Y también están disponibles los comodines (* y ?). +# You can specify not only domains but also addresses. +# * When an entry contains @, the entry is regarded as address. +# * When an entry does not contains @, the entry is regarded as domain. ################################## {1} @@ -255,6 +258,9 @@ ejemplo.org # (2) Introduzca una entrada por línea de la siguiente manera. # (3) Las líneas que comienzan con # se ignoran. # (4) Los comodines (* y ?) estan disponibles. +# (5) You can specify not only domains but also addresses. +# * When an entry contains @, the entry is regarded as address. +# * when an entry does not contains @, the entry is regarded as domain. # ################################## @@ -357,4 +363,10 @@ asi que por favor utilice Bcc cuando envie mensajes a destinatarios no relaciona Advertencia! - + + [Advertencia] El correo inseguro "{0}" fue encontradro en la lista de destinatarios + + + Este correo esta registrado como inseguro. Por favor revise y confirme. + + \ No newline at end of file diff --git a/Properties/Resources.resx b/Properties/Resources.resx index 3d58edd..7deb4f4 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -203,6 +203,9 @@ # さらにドメインを追加する場合は、以下に1行ずつ入力してください。 # また、先頭に「-」をつけると、ドメインを除外することができます。 # 指定にはワイルドカード(*および?)も使用可能です。 +# また、ドメインだけでなくアドレスを指定することもできます。 +# * @を含む場合はアドレスが指定されたとみなします +# * @を含まない場合はドメインが指定されたとみなします ################################## {1} @@ -267,6 +270,9 @@ example.org # (1) 添付ファイルに含まれる場合に警告する注意ワードを指定します。 # (2) 以下の例のように一行に一件ずつ記載します。 # (3) 冒頭が「#」から始まる行は無視されます。 +# (4) ドメインだけでなくアドレス全体を指定することもできます。 +# * @を含む場合はアドレスが指定されたとみなします。 +# * @を含まない場合はドメインが指定されたとみなします。 # ################################## @@ -357,4 +363,10 @@ ToおよびCcに含まれるメールアドレスはすべての受取人が確 ⨉ 警告! + + [警告] 注意が必要なアドレス({0})が宛先に含まれています。 + + + このアドレスは誤送信の可能性が高いため、再確認を促す警告を出してします。 + \ No newline at end of file diff --git a/Properties/Resources.zh.resx b/Properties/Resources.zh.resx index 470fff9..b2937f7 100644 --- a/Properties/Resources.zh.resx +++ b/Properties/Resources.zh.resx @@ -203,6 +203,9 @@ # 要添加更多的域,请在下面输入条目(每行一个)。 # 你也可以通过在开头添加"-"来排除域名。 # And wildcards (* and ?) are also available. +# You can specify not only domains but also addresses. +# * When an entry contains @, the entry is regarded as address. +# * When an entry does not contains @, the entry is regarded as domain. ################################## {1} @@ -255,6 +258,9 @@ example.org # (2) 每行写一个条目,如下所示 # (3) 以 "#" 开头的行被忽略 # (4) Wildcards (* and ?) are available. +# (5) You can specify not only domains but also addresses. +# * When an entry contains @, the entry is regarded as address. +# * when an entry does not contains @, the entry is regarded as domain. # ################################## @@ -354,4 +360,10 @@ example.org ⨉ 警告! + + [警告] 包含不安全地址 ({0}) + + + 该地址被列入不安全地址列表中 + \ No newline at end of file