Connexion au serveur SMTP
Les propriétés suivantes doivent être définies lors de la connexion à un serveur SMTP avec prise en charge SSL.
- SecurityOptions
- Port
Dans les exemples ci-dessous, nous montrons comment :
- Définir un nom d’utilisateur.
- Définir un mot de passe.
- Définir le port.
- Définir l’option de sécurité.
Le fragment de code suivant vous montre comment se connecter à un serveur SMTP avec SSL activé.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
SmtpClient client = new SmtpClient("smtp.gmail.com");
// Set username, password, port, and security options
client.setUsername("your.email@gmail.com");
client.setPassword("your.password");
client.setPort(587);
client.setSecurityOptions(SecurityOptions.SSLExplicit);
Connexion au serveur via un proxy Socks
Parfois nous utilisons des serveurs proxy pour communiquer avec le monde extérieur. Dans ces cas, les clients de messagerie ne peuvent pas communiquer sur Internet sans spécifier l’adresse du proxy. Aspose.Email prend en charge les versions 4, 4a et 5 du protocole proxy SOCKS. Cet article fournit un exemple fonctionnel d’envoi d’e-mail à l’aide d’un serveur de messagerie proxy. Pour envoyer un e-mail via un serveur proxy :
- Initialisez le proxy avec les informations requises, à savoir l’adresse du proxy, le port et la version SOCKS.
- Initialiser SmtpClient avec l’adresse de l’hôte, le nom d’utilisateur et le mot de passe, ainsi que tout autre paramètre.
- Définissez la propriété Proxy du client sur le Proxy objet créé précédemment.
Le fragment de code suivant vous montre comment se connecter à un serveur via un serveur proxy.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
SmtpClient client = new SmtpClient("smtp.domain.com", "username", "password");
client.setSecurityOptions(SecurityOptions.SSLImplicit);
String proxyAddress = "192.168.203.142"; // proxy address
int proxyPort = 1080; // proxy port
SocksProxy proxy = new SocksProxy(proxyAddress, proxyPort, SocksVersion.SocksV5);
client.setProxy(proxy);
client.send(new MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy",
"Implement socks proxy protocol for versions 4, 4a, 5 (only Username/Password authentication)"));
Connexion au serveur via un serveur proxy HTTP
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
HttpProxy proxy = new HttpProxy("18.222.124.59", 8080);
try (SmtpClient client = new SmtpClient("host", 587, "username", "password")) {
client.setProxy(proxy);
client.send(new MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy",
"Implement socks proxy protocol for versions 4, 4a, 5 (only Username/Password authentication)"));
}
Personnaliser le mécanisme d’authentification
Récupérer la liste des mécanismes d’authentification pris en charge par le serveur SMTP à l’aide du getSupportedAuthentication méthode du SmtpClient classe. Cette méthode permet au client de déterminer quelles méthodes d’authentification sont disponibles pour établir une connexion sécurisée avec le serveur. Ensuite, en utilisant le setAllowedAuthentication méthode qui obtient (ou définit) l’énumération des types d’authentification autorisés par l’utilisateur, choisissez le mécanisme d’authentification le plus approprié pour la communication client-serveur. Cela vous permet de définir explicitement la méthode d’authentification pour le client de messagerie.
L’exemple de code suivant montre comment personnaliser l’authentification du client e-mail :
smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.Login);
Utilisation de l’authentification CRAM-MD5 pour se connecter à un serveur
Pour assurer une authentification sécurisée et une communication avec le serveur SMTP, vous pouvez spécifier et imposer l’utilisation de CRAM-MD5 comme méthode d’authentification autorisée pour le client SMTP. Le fragment de code suivant montre comment configurer le type d’authentification autorisé pour le SmtpClient:
smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.CramMD5);
Lier le client SMTP à une adresse IP spécifique sur l’hôte
La possibilité qu’un hôte dispose de plusieurs ports disponibles pour l’envoi d’e-mails ne peut être exclue. Dans de tels cas, il peut être nécessaire de lier le client d’envoi d’e-mails à un port spécifique de l’hôte pour l’envoi d’e-mails. Cela peut également être réalisé avec l’API Aspose.Email en utilisant le SmtpClient bindIPEndPoint propriété. L’API SmtpClient peut être défini pour utiliser une adresse IP spécifique sur l’hôte en spécifiant le point de terminaison IP spécifique. Le fragment de code suivant vous montre comment lier le client SMTP à une adresse IP spécifique sur l’hôte.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
SmtpClient client = new SmtpClient("smtp.domain.com", // host
587, // port
"username", // username
"password", // password
SecurityOptions.Auto // Security Options
);
try {
client.bindIPEndPoint(new BindIPEndPointHandler() {
public InetSocketAddress invoke(InetSocketAddress remoteEndPoint) {
return new InetSocketAddress(0);
}
});
client.noop();
} finally {
client.dispose();
}
Valider les informations d’identification du serveur de messagerie sans envoyer d’e‑mail
Parfois, il est nécessaire de vérifier les informations d’identification sans envoyer d’e‑mail. Aspose.Email fournit le validateCredentials() méthode pour effectuer cette opération. Si la validation réussit, le code à l’intérieur de l’instruction if est exécuté, généralement utilisé pour effectuer d’autres actions ou récupérer des données du serveur IMAP. Le fragment de code suivant montre la validation des informations d’identification sans envoyer d’e‑mail :
try (SmtpClient smtpClient = new SmtpClient(
server.SmtpUrl, server.SmtpPort, "username", "password", SecurityOptions.Auto)) {
smtpClient.setTimeout(4000);
if (smtpClient.validateCredentials()) {
// to do something
}
}
Comment définir un délai d’attente pour les opérations de messagerie
Chaque opération de messagerie prend du temps en fonction de nombreux facteurs (délais réseau, taille des données, performance du serveur, etc.). Vous pouvez définir un délai d’attente pour toutes les opérations de messagerie. L’exemple de code ci‑dessus montre comment faire cela en utilisant le Délai d’attente propriété. Remarque : vous ne devez pas définir de grandes valeurs afin d’éviter de longues attentes dans votre application.
try (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
smtpClient.setTimeout(60000); // 60 seconds
// some code...
}