SAIF.Framework.Mail dependencies¶
SAIF.Framework.Mail has two internal project dependencies and one legacy ASMX web reference; it uses only classic assembly <Reference> and <ProjectReference> elements, with no NuGet <PackageReference> entries.
Internal dependencies¶
| Dependency | Type | Usage |
|---|---|---|
| SAIF.Framework.Security | Internal | Project reference and Imports SAIF.Framework.Security; provides AppGlobal.EnvironmentService, used to resolve the legacyMailServiceUrl config setting before every SOAP call (MailServices.vb:22,80,109,145,167,189,210). See Configuration for the verified endpoint settings catalog. |
| SAIF.Framework.Security.EnvironmentApi | Internal | Project reference (SAIF.BOF.Framework.Mail.vbproj:87-90). Not directly referenced by type name in MailServices.vb; likely a transitive dependency of SAIF.Framework.Security's AppGlobal.EnvironmentService.* |
External dependencies¶
| Dependency | Version | Usage |
|---|---|---|
Web References\SAIFMail (ASMX web reference — clsSAIFMessage, http://saifonline/sendmail/clsSAIFMessage.asmx) |
N/A (generated proxy, not versioned as a package) | Generated SOAP client (SAIFMail.clsSAIFMessage, inherits System.Web.Services.Protocols.SoapHttpClientProtocol) invoked by every public Send* function in Public Module Mail to send mail via the legacy ASP.NET Web Services (ASMX) endpoint — MailServices.vb:21, Web References\SAIFMail\Reference.vb:26-29,47. |
System.Web.Services |
BCL (.NET Framework) | Base class (SoapHttpClientProtocol) for the generated SOAP proxy — Web References\SAIFMail\Reference.vb:29. |
System.Xml, System.Xml.Linq |
BCL (.NET Framework) | XML support for SOAP serialization — SAIF.BOF.Framework.Mail.vbproj:62,65. |
System.Core |
BCL (.NET Framework) | LINQ/core extensions — SAIF.BOF.Framework.Mail.vbproj:64. |
Microsoft.VisualBasic |
BCL (.NET Framework) | VB runtime (Imports) — SAIF.BOF.Framework.Mail.vbproj:68. |
System.IO (Stream, FileStream) |
BCL (.NET Framework) | File/stream attachment handling — MailServices.vb:141,163,227,255. |
System.Data |
BCL (.NET Framework) | Referenced but no direct usage observed in live code — SAIF.BOF.Framework.Mail.vbproj:57.** |
System.EnterpriseServices |
BCL (.NET Framework) | Referenced but no direct usage observed in live code — SAIF.BOF.Framework.Mail.vbproj:58.** |
System.ServiceModel |
BCL (.NET Framework, RequiredTargetFramework 3.0) | Referenced; no direct WCF usage observed in MailServices.vb — SAIF.BOF.Framework.Mail.vbproj:59-61.** |
No NuGet <PackageReference> elements are present in the .vbproj; this project uses only assembly <Reference> and <ProjectReference> elements (classic .NET Framework style) — SAIF.BOF.Framework.Mail.vbproj.
Dependency risks and notes¶
- Silent failure risk: every
Send*function always returnsTrueregardless of the actual outcome of the underlying SOAP call — there is no exception handling or success/failure branching around the SOAP invocation itself. Callers cannot distinguish a successful send from a silent failure via the return value alone; failures would only surface as unhandled exceptions from the SOAP call itself.* This "always returnsTrue" semantics should be treated as a functional risk for any caller relying on the return value to confirm delivery. - Legacy ASMX coupling: the mail-sending capability depends entirely on a generated ASMX/SOAP proxy (
SAIFMail.clsSAIFMessage) targeting a hardcoded design-time URL (http://saifonline/sendmail/clsSAIFMessage.asmx) that is overridden at runtime from configuration. If the environment configuration lookup (legacyMailServiceUrl) fails or is misconfigured, calls fall back to the design-time default baked intoapp.config/My.Settings. - Cross-layer coupling: this library depends on
SAIF.Framework.Security(and transitivelySAIF.Framework.Security.EnvironmentApi) solely to resolve one configuration key (legacyMailServiceUrl), coupling a mail-sending utility to the security/environment framework layer.* - Generated code maintenance risk: the SOAP proxy is checked-in generated code (not hand-authored) and cannot be regenerated without the original WSDL/tooling context; unreferenced-but-declared BCL references (
System.Data,System.EnterpriseServices,System.ServiceModel) suggest possible legacy carry-over from a prior implementation.** - Exception rethrow pattern:
GetFileAsBytesusesThrow ex(not a bareThrow) in itsCatchblock, which resets the exception's stack trace, though the file handle is still safely closed viaFinally.*
Related documentation¶
Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.
Sources¶
- SAIF.Framework.Mail\MailServices.vb
- SAIF.Framework.Mail\SAIF.BOF.Framework.Mail.vbproj
- SAIF.Framework.Mail\app.config
- SAIF.Framework.Mail\Web References\SAIFMail\Reference.vb
- SAIF.Framework.Mail\My Project\Settings.Designer.vb