Conectando ao Servidor IMAP
O ImapClient classe permite que aplicações gerenciem caixas de correio IMAP usando o protocolo IMAP. O ImapClient classe é usada para conectar a servidores de e‑mail IMAP e gerenciar e‑mails nas pastas de e‑mail IMAP. Para conectar a um servidor IMAP
- Crie uma instância do ImapClient classe.
- Especifique o nome do host, nome de usuário e senha no Construtor ImapClient.
Uma vez que ImapClient a instância é iniciada, a próxima chamada a qualquer operação usando essa instância conectará ao servidor. O trecho de código a seguir mostra como conectar a um servidor IMAP usando as etapas acima.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an imapclient with host, user and password
ImapClient client = new ImapClient("localhost", "user", "password");
Conectando com Servidor IMAP com SSL Ativado
Conectando ao Servidor IMAP descreveu como conectar a um servidor IMAP em quatro etapas simples:
- Crie uma instância do ImapClient classe.
- Especifique o nome do host, nome de usuário e senha.
- Especifique a porta.
- Especifique o Opções de Segurança.
O processo de conexão a um servidor IMAP com SSL habilitado é semelhante, mas requer que você configure mais algumas propriedades:
- Definir Opções de Segurança para SSLImplicit.
O trecho de código a seguir mostra como
- Defina um nome de usuário, senha e porta.
- Defina a opção de segurança.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the ImapClient class
ImapClient client = new ImapClient("imap.domain.com", 993, "user@domain.com", "pwd");
// Set the security mode to implicit
client.setSecurityOptions(SecurityOptions.SSLImplicit);
Conectando ao Servidor via Proxy
Os servidores proxy são comumente usados para comunicar-se com o mundo externo. Nesses casos, os clientes de e‑mail não conseguem se comunicar pela Internet sem especificar o endereço do proxy. Aspose.Email oferece suporte às versões 4, 4a e 5 do protocolo proxy SOCKS. Este artigo fornece um exemplo funcional de acesso à caixa de correio usando um servidor proxy de e‑mail. Para acessar a caixa de correio via um servidor proxy:
- Initialize SocksProxy com as informações necessárias, ou seja, endereço do proxy, porta e versão SOCKS.
- Initialize ImapClient com endereço do host, nome de usuário, senha e quaisquer outras configurações.
- Defina o cliente SocksProxy propriedade para o SocksProxy objeto criado acima.
O trecho de código a seguir mostra como recuperar a caixa de correio via um servidor proxy.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Connect and log in to IMAP and set SecurityOptions
ImapClient client = new ImapClient("imap.domain.com", "username", "password");
client.setSecurityOptions(SecurityOptions.Auto);
String proxyAddress = "192.168.203.142"; // proxy address
int proxyPort = 1080; // proxy port
SocksProxy proxy = new SocksProxy(proxyAddress, proxyPort, SocksVersion.SocksV5);
// Set the proxy
client.setProxy(proxy);
try {
client.selectFolder("Inbox");
} catch (java.lang.RuntimeException ex) {
System.out.println(ex.getMessage());
}
Conectando ao Servidor via 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);
final ImapClient client = new ImapClient("imap.domain.com", "username", "password");
try {
client.setProxy(proxy);
client.selectFolder("Inbox");
} finally {
if (client != null)
client.dispose();
}
Personalizar Mecanismo de Autenticação
Recuperar a lista de mecanismos de autenticação suportados pelo servidor IMAP usando o getSupportedAuthentication método do ImapClient classe. Esse método permite que o cliente determine quais métodos de autenticação estão disponíveis para estabelecer uma conexão segura com o servidor. Em seguida, usando o setAllowedAuthentication método que obtém (ou define) a enumeração dos tipos de autenticação permitidos pelo usuário, escolha o mecanismo de autenticação mais adequado para a comunicação cliente‑servidor. Isso permite definir explicitamente o método de autenticação para o cliente de e‑mail.
O exemplo de código a seguir mostra como personalizar a autenticação do cliente de e‑mail:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.Plain);
Conectando ao Servidor em modo Somente Leitura
O ImapClient classe fornece um ReadOnly propriedade que, quando definida como true, indica que nenhuma alteração deve ser feita ao estado permanente da caixa de correio. O exemplo de código a seguir demonstra o uso de ImapClient.ReadOnly propriedade. Ela obtém a contagem de mensagens não lidas, então busca uma mensagem e novamente obtém a contagem de mensagens não lidas em modo somente leitura. A contagem das mensagens não lidas permanece a mesma, indicando que o estado permanente da caixa de correio não foi alterado.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
ImapClient imapClient = new ImapClient();
imapClient.setHost("<HOST>");
imapClient.setPort(993);
imapClient.setUsername("<USERNAME>");
imapClient.setPassword("<PASSWORD>");
imapClient.setSupportedEncryption(EncryptionProtocols.Tls);
imapClient.setSecurityOptions(SecurityOptions.SSLImplicit);
ImapQueryBuilder imapQueryBuilder = new ImapQueryBuilder();
imapQueryBuilder.hasNoFlags(ImapMessageFlags.isRead()); /* get unread messages. */
MailQuery query = imapQueryBuilder.getQuery();
imapClient.setReadOnly(true);
imapClient.selectFolder("Inbox");
ImapMessageInfoCollection messageInfoCol = imapClient.listMessages(query);
System.out.println("Initial Unread Count: " + messageInfoCol.size());
if (messageInfoCol.size() > 0) {
imapClient.fetchMessage(messageInfoCol.get_Item(0).getSequenceNumber());
messageInfoCol = imapClient.listMessages(query);
// This count will be equal to the initial count
System.out.println("Updated Unread Count: " + messageInfoCol.size());
} else {
System.out.println("No unread messages found");
}
Usando autenticação CRAM-MD5 para conectar a um servidor
Para garantir autenticação segura e comunicação com o servidor IMAP, você pode especificar e impor o uso de CRAM-MD5 como o método de autenticação permitido para o cliente IMAP. O trecho de código a seguir mostra como configurar o tipo de autenticação permitido para o ImapClient:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.CramMD5);
Validar Credenciais do Servidor de E‑mail sem Enviar E‑mail
Às vezes é necessário verificar credenciais sem enviar um e‑mail. Aspose.Email fornece o validateCredentials() método para realizar esta operação. Se a validação for bem‑sucedida, o código dentro da instrução if é executado, tipicamente usado para executar ações adicionais ou recuperar dados do servidor IMAP. O trecho de código a seguir demonstra a validação de credenciais sem enviar um e‑mail:
try (ImapClient imapClient = new ImapClient(
server.ImapUrl, server.ImapPort, "username", "password", SecurityOptions.Auto)) {
imapClient.setTimeout(4000);
if (imapClient.validateCredentials()) {
// to do something
}
}
Como Definir Tempo Limite para Operações de E‑mail
Cada operação de e‑mail leva algum tempo dependendo de diversos fatores (atrasos de rede, tamanho dos dados, desempenho do servidor, etc.). Você pode definir um tempo limite para todas as operações de e‑mail. O exemplo de código abaixo mostra como fazer isso usando o Tempo limite propriedade. Nota: não deve definir valores grandes para evitar longas esperas em sua aplicação.
try (ImapClient imapClient = new ImapClient("host", 993, "username", "password", SecurityOptions.SSLImplicit))
{
imapClient.setTimeout(60000); // 60 seconds
// some code...
}
Como Restringir o Timeout de Saudação
O cliente IMAP pode usar o modo automático para estabelecer uma conexão. Nesse modo, o cliente IMAP tenta todos os parâmetros de conexão possíveis até que a conexão seja estabelecida. Um servidor IMAP, em caso de conexão correta, envia uma string de saudação ao cliente. Os servidores podem usar iniciação de conexão SSL/TLS implícita ou explícita (START TLS). Se o modo de conexão estiver incompatível (por exemplo, o servidor aguarda uma conexão SSL implícita, mas o cliente tenta estabelecer uma conexão não segura ou SSL explícita), o servidor não enviará a string de saudação e o usuário esperará muito tempo até que o tempo limite expire, e o cliente passará para a próxima opção de conexão. Para evitar esse problema, foi introduzido o GreetingTimeout. Essa propriedade permite definir o tempo limite para a string de saudação e reduzir o tempo de estabelecimento automático da conexão.
ImapClient imapClient = new ImapClient();
imapClient.setGreetingTimeout(4000);