Optimaliseer SMTP‑serververbinding
Optimalisatie van e‑mailclientverbindingen
Gebruikers ondervinden vaak vertragingen door de standaard time‑outinstellingen, die kunnen leiden tot verlengde verbindingstijden of zelfs mislukte pogingen.
Om de efficiëntie van deze verbindingen te verbeteren, biedt Aspose.Email voor .NET eigenschappen zoals Time‑out en GreetingTimeout. Terwijl de Timeout eigenschap beheert de totale duur van e‑mailbewerkingen, de GreetingTimeout eigenschap richt zich specifiek op de tijd die de server nodig heeft om bij een verbinding een begroetingsreeks te verzenden.
In de volgende sectie verkennen we hoe u deze instellingen kunt configureren om de verbindingssnelheid en betrouwbaarheid van uw e‑mailclient te verbeteren.
Bij gebruik van de Timeout eigenschap, het is belangrijk op te merken dat de eraan toegewezen waarden voldoende lange intervallen moeten hebben om langdurige bewerkingen te accommoderen.
Het echter alleen steunen op deze eigenschap kan ertoe leiden dat het tot stand brengen van de verbinding langer duurt dan verwacht. Dit kan voorkomen wanneer de e‑mailclient de automatische modus gebruikt voor het tot stand brengen van de verbinding. In deze modus doorloopt de client verschillende verbindingsparameters totdat er een verbinding tot stand is gebracht.
Bij het verbinden met SMTP-, IMAP- en POP3-servers wordt een begroetingsreeks naar de client gestuurd na een succesvolle totstandbrenging van de verbinding. Servers kunnen een impliciete of expliciete (START TLS) SSL/TLS‑verbinding gebruiken. In gevallen waarin de verbindingsmodus niet overeenkomt (bijvoorbeeld wanneer de server een impliciete SSL‑verbinding verwacht terwijl de client een niet‑beveiligde of expliciete SSL‑verbinding probeert tot stand te brengen), zal de server geen begroetingsreeks sturen.
Als gevolg hiervan kan de gebruiker gedurende een verlengde periode moeten wachten totdat de time‑out is bereikt, en gaat de client vervolgens over naar de volgende verbindingsoptie.
Om dit probleem aan te pakken, de GreetingTimeout eigenschap is geïntroduceerd. Deze eigenschap stelt gebruikers in staat een time‑out in te stellen voor de begroetingsreeks, waardoor de tijd die nodig is om een automatische verbinding tot stand te brengen, wordt verkort. Door het implementeren van de GreetingTimeout eigenschap, gebruikers kunnen de prestatie van hun e-mailclient optimaliseren en lange wachttijden tijdens het tot stand brengen van de verbinding vermijden.
Het volgende codevoorbeeld laat zien hoe u de EmailClient.GreetingTimeout eigenschap:
using (SmtpClient client = new SmtpClient("localhost", 25, "username", "password"))
{
client.GreetingTimeout = 4000;
}
Server‑extensies ophalen
De SmtpClient maakt het mogelijk de serverextensies op te halen die een server ondersteunt, zoals IDLE, UNSELECT, QUOTA, enz. Dit helpt bij het bepalen van de beschikbaarheid van een extensie vóór gebruik van de client voor die specifieke functionaliteit. De GetCapabilities() methode retourneert de ondersteunde extensietypen in de vorm van een string‑array.
Het volgende codefragment laat zien hoe u serverextensies ophaalt.
Mailserverreferenties valideren zonder e‑mails te verzenden
Aspose.Email API biedt de mogelijkheid om mailserverreferenties te valideren zonder een e‑mail te verzenden. Dit kan worden bereikt met de ValidateCredentials methode die verantwoordelijk is voor het verifiëren van de authenticiteit en juistheid van de opgegeven e‑mailreferenties, die gewoonlijk worden gebruikt voor authenticatie bij het verbinden met de server.
Het controleert of de opgegeven e‑mailreferenties, zoals gebruikersnaam en wachtwoord, geldig zijn, en of de client een succesvolle verbinding met de server kan tot stand brengen. Deze verificatie van referenties helpt te waarborgen dat de klant veilig toegang heeft tot het e‑mailaccount en verschillende bewerkingen kan uitvoeren, zoals het verzenden van e‑mail.
using (SmtpClient client = new SmtpClient(server.SmtpUrl, server.SmtpPort, "username", "password", SecurityOptions.Auto))
{
client.Timeout = 4000;
if (client.ValidateCredentials())
{
//to do something
}
}
Er is ook een versie van de methode ValidateCredentialsAsync om een asynchrone bewerking uit te voeren.
E‑mail verzenden via SOCKS‑proxyserver
In dergelijke gevallen kunnen mailclients niet via internet communiceren zonder het proxy‑adres op te geven. Aspose.Email biedt ondersteuning voor versie 4, 4a en 5 van het SOCKS‑proxyprotocol. Om een e‑mail via een proxy‑server te verzenden, voert u de volgende stappen uit:
- Initialiseer Proxy met de vereiste informatie, namelijk proxy‑adres, poort en SOCKS‑versie.
- Initialiseren SmtpClient met het hostadres, gebruikersnaam en wachtwoord, en eventuele andere instellingen.
- Stel de Proxy‑eigenschap van de client in op de Proxy object eerder aangemaakt.
Het volgende codefragment toont hoe u via een proxyserver verbinding maakt met een server.
E‑mail verzenden via HTTP‑proxyserver
Identificeer authenticatiemethoden voor een beveiligde SMTP‑verbinding
Aspose.Email biedt eigenschappen waarmee kan worden gecontroleerd welke authenticatiemethoden kunnen worden gebruikt om vóór het verzenden van een e‑mail een veilige verbinding met de SMTP‑server tot stand te brengen:
- de SmtpClient.SupportedAuthentication eigenschap geeft een lijst van authenticatiemethoden terug die door de SMTP‑server worden ondersteund.
- de SmtpClient.AllowedAuthentication eigenschap geeft een lijst van authenticatiemethoden terug die door de gebruiker zijn gedefinieerd.
smtpClient.AllowedAuthentication = SmtpKnownAuthenticationType.Login;
SMTP‑authenticatie‑informatie laden uit CONFIG‑bestand
Om Aspose.Email een configuratiebestand te laten lezen, moet het in het juiste formaat zijn. Hieronder tonen we een voorbeeld van een XML‑configuratiebestand, gevolgd door de code die het leest. Het volgende codefragment laat zien hoe u SMTP‑authenticatie‑informatie uit een CONFIG‑bestand kunt laden.
Zodra de configuratie‑instellingen zijn gedefinieerd, laad deze instellingen direct in een instantie van de SmtpClient klasse met een van zijn overladen constructors. Het volgende codefragment demonstreert het lezen van configuratie‑instellingen uit het configuratiebestand en het direct laden ervan in een instantie van de SmtpClient.
SMTP‑client binden aan specifiek IP‑adres
De mogelijkheid dat een host meerdere poorten beschikbaar heeft voor het verzenden van e‑mail kan niet worden uitgesloten. In zulke gevallen kan het nodig zijn om de e‑mailverzendclient te binden aan een specifieke poort op de host. Dit kan tevens worden bereikt met de Aspose.Email API door gebruik te maken van de SmtpClient BindIPEndPoint eigenschap. De API‑s SmtpClient kan worden ingesteld om een specifiek IP-adres op de host te gebruiken door het specifieke IP-eindpunt op te geven. De volgende codefragment toont hoe u de SMTP-client bindt aan een specifiek IP-adres op de host.
Time‑out instellen voor mailbewerkingen
Elke e‑mailbewerking kost tijd, afhankelijk van veel factoren (netwerkvertragingen, datagrootte, serverprestaties, enz.). U kunt een time‑out instellen voor alle e‑mailbewerkingen. Het code‑voorbeeld hieronder laat zien hoe u dat doet met behulp van de Time‑out eigenschap.
Opmerking: u moet geen grote waarden instellen om lange wachttijden in uw applicatie te vermijden.
using (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
smtpClient.Timeout = 60000; // 60 seconds
// some code...
}
Gebruik van cryptografische protocollen
Aspose.Email ondersteunt SSL (verouderd) en TLS‑cryptografische protocollen om communicatieveiligheid te bieden. U kunt cryptografische encryptie inschakelen om de gegevensuitwisseling tussen uw applicatie en mailservers te beschermen.
OPMERKING: U dient alleen die versies van het protocol in te stellen die ondersteund worden door .NET Framework. Als sommige versies van het cryptografische protocol niet ondersteund worden door uw huidige versie van .NET Framework, worden ze genegeerd en overgeslagen. In dat geval worden er geen uitzonderingen gegenereerd. Gebruik alstublieft SetSupportedEncryptionUnsafe methode als u de protocollen wilt instellen zonder compatibiliteitscontroles.
Het onderstaande codevoorbeeld laat zien hoe je TLS 1.3 instelt voor SmtpClient klasse‑instantie.
using (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
smtpClient.SupportedEncryption = EncryptionProtocols.Tls13;
// some code...
}
In het geval dat een opgegeven encryptieprotocol niet wordt ondersteund in de huidige versie van .NET Framework, is het verschil in gedrag tussen SetSupportedEncryptionUnsafe methode en SupportedEncryption eigenschap is het volgende:
- Als SupportedEncryption eigenschap wordt gebruikt, downgraden de e‑mailclient het versleutelingsprotocol naar een ondersteund niveau.
- Als SetSupportedEncryptionUnsafe methode wordt gebruikt, gooit de e‑mailclient uitzonderingen.
SMTP‑authenticatie met CRAM‑MD5‑mechanisme
Het CRAM‑MD5‑authenticatiemechanisme van Aspose.Email voor .NET biedt een extra beveiligingslaag bij het benaderen van de server. Het volgende codefragment laat zien hoe u deze functie in uw project implementeert:
smtpClient.AllowedAuthentication = SmtpKnownAuthenticationType.CramMD5;