API JavaMail - Servidores SMTP
SMTP é um acrônimo para Simple Mail Transfer Protocol. É um padrão da Internet para transmissão de correio eletrônico (e-mail) em redes de protocolo da Internet (IP). O SMTP usa a porta TCP 25. As conexões SMTP protegidas por SSL são conhecidas pela abreviatura SMTPS, embora SMTPS não seja um protocolo por si só.
API JavaMail tem pacote com.sun.mail.smtpque atuam como provedor de protocolo SMTP para acessar um servidor SMTP. A tabela a seguir lista as classes incluídas neste pacote:
Classe | Descrição |
---|---|
SMTPMessage | Esta classe é uma especialização da classe MimeMessage que permite especificar várias opções e parâmetros de SMTP que serão usados quando esta mensagem for enviada por SMTP. |
SMTPSSLTransport | Esta classe implementa a classe abstrata Transporte usando SMTP sobre SSL para envio e transporte de mensagens. |
SMTPTransport | Esta classe implementa a classe abstrata Transport usando SMTP para envio e transporte de mensagens. |
A tabela a seguir lista as exceções lançadas:
Exceção | Descrição |
---|---|
SMTPAddressFailedException | Essa exceção é lançada quando a mensagem não pode ser enviada. |
SMTPAddressSucceededException | Essa exceção é encadeada em uma SendFailedException quando a propriedade mail.smtp.reportsuccess é verdadeira. |
SMTPSenderFailedException | Essa exceção é lançada quando a mensagem não pode ser enviada. |
SMTPSendFailedException | Essa exceção é lançada quando a mensagem não pode ser enviada. A exceção inclui o endereço do remetente, que o servidor de e-mail rejeitou. |
o com.sun.mail.smtpprovedor usa autenticação SMTP opcionalmente. Para usar a autenticação SMTP, você precisará definir a propriedade mail.smtp.auth ou fornecer ao Transporte SMTP um nome de usuário e uma senha ao se conectar ao servidor SMTP. Você pode fazer isso usando uma das seguintes abordagens:
Forneça um objeto Autenticador ao criar sua Sessão de e-mail e forneça as informações de nome de usuário e senha durante o retorno de chamada do Autenticador. A propriedade mail.smtp.user pode ser definida para fornecer um nome de usuário padrão para o retorno de chamada, mas a senha ainda precisará ser fornecida explicitamente. Essa abordagem permite que você use o método de envio de Transporte estático para enviar mensagens. Por exemplo:
Transport.send(message);
Chame o método de conexão de transporte explicitamente com argumentos de nome de usuário e senha. Por exemplo:
Transport tr = session.getTransport("smtp");
tr.connect(smtphost, username, password);
msg.saveChanges();
tr.sendMessage(msg, msg.getAllRecipients());
tr.close();
O provedor de protocolo SMTP suporta as seguintes propriedades, que podem ser definidas no objeto JavaMail Session. As propriedades são sempre definidas como strings. Por exemplo:
props.put("mail.smtp.port", "587");
Aqui o Type coluna descreve como a string é interpretada.
Nome | Tipo | Descrição |
---|---|---|
mail.smtp.user | Corda | Nome de usuário padrão para SMTP. |
mail.smtp.host | Corda | O servidor SMTP ao qual se conectar. |
mail.smtp.port | int | A porta do servidor SMTP para conectar, se o método connect () não especificar explicitamente uma. O padrão é 25. |
mail.smtp.connectiontimeout | int | Valor de tempo limite de conexão do soquete em milissegundos. O padrão é tempo limite infinito. |
mail.smtp.timeout | int | Valor de tempo limite de E / S do soquete em milissegundos. O padrão é tempo limite infinito. |
mail.smtp.from | Corda | Endereço de e-mail a ser usado para o comando SMTP MAIL. Isso define o endereço de retorno do envelope. O padrão é msg.getFrom () ou InternetAddress.getLocalAddress (). |
mail.smtp.localhost | Corda | Nome do host local usado no comando SMTP HELO ou EHLO. O padrão é InetAddress.getLocalHost (). GetHostName (). Normalmente, não deve ser necessário definir se o JDK e o serviço de nomes estiverem configurados corretamente. |
mail.smtp.localaddress | Corda | Endereço local (nome do host) para vincular ao criar o soquete SMTP. O padrão é o endereço escolhido pela classe Socket. Normalmente não deve ser necessário definir. |
mail.smtp.localport | int | Número da porta local para vincular ao criar o soquete SMTP. O padrão é o número da porta escolhido pela classe Socket. |
mail.smtp.ehlo | boleano | Se for falso, não tente fazer logon com o comando EHLO. O padrão é verdadeiro. |
mail.smtp.auth | boleano | Se verdadeiro, tente autenticar o usuário usando o comando AUTH. O padrão é falso. |
mail.smtp.auth.mechanisms | Corda | Se definido, lista os mecanismos de autenticação a serem considerados. Apenas mecanismos suportados pelo servidor e suportados pela implementação atual serão usados. O padrão é "LOGIN PLAIN DIGEST-MD5 NTLM", que inclui todos os mecanismos de autenticação suportados pela implementação atual. |
mail.smtp.auth.login.disable | boleano | Se verdadeiro, evita o uso do comando AUTH LOGIN. O padrão é falso. |
mail.smtp.auth.plain.disable | boleano | Se verdadeiro, evita o uso do comando AUTH PLAIN. O padrão é falso. |
mail.smtp.auth.digest-md5.disable | boleano | Se verdadeiro, evita o uso do comando AUTH DIGEST-MD5. O padrão é falso. |
mail.smtp.auth.ntlm.disable | boleano | Se verdadeiro, evita o uso do comando AUTH NTLM. O padrão é falso. |
mail.smtp.auth.ntlm.domain | Corda | O domínio de autenticação NTLM. |
mail.smtp.auth.ntlm.flags | int | Sinalizadores específicos do protocolo NTLM. |
mail.smtp.submitter | Corda | O remetente a ser usado na tag AUTH no comando MAIL FROM. Normalmente usado por uma retransmissão de e-mail para passar informações sobre o remetente original da mensagem. |
mail.smtp.dsn.notify | Corda | A opção NOTIFY para o comando RCPT. NEVER ou alguma combinação de SUCCESS, FAILURE e DELAY (separados por vírgulas). |
mail.smtp.dsn.ret | Corda | A opção RET para o comando MAIL. FULL ou HDRS. |
mail.smtp.sendpartial | boleano | Se definido como verdadeiro, e uma mensagem tiver alguns endereços válidos e alguns inválidos, envie a mensagem de qualquer maneira, relatando a falha parcial com SendFailedException. Se definido como falso (o padrão), a mensagem não será enviada a nenhum dos destinatários se houver um endereço de destinatário inválido. |
mail.smtp.sasl.enable | boleano | Se definido como verdadeiro, tente usar o pacote javax.security.sasl para escolher um mecanismo de autenticação para login. O padrão é falso. |
mail.smtp.sasl.mechanisms | Corda | Uma lista separada por espaço ou vírgula de nomes de mecanismo SASL para tentar usar. |
mail.smtp.sasl.authorizationid | Corda | O ID de autorização a ser usado na autenticação SASL. Se não for definido, o ID de autenticação (nome do usuário) será usado. |
mail.smtp.sasl.realm | Corda | O domínio a ser usado com a autenticação DIGEST-MD5. |
mail.smtp.quitwait | boleano | Se definido como falso, o comando QUIT é enviado e a conexão é encerrada imediatamente. Se definido como verdadeiro (o padrão), faz com que o transporte aguarde a resposta ao comando QUIT. |
mail.smtp.reportsuccess | boleano | Se definido como verdadeiro, faz com que o transporte inclua um SMTPAddressSucceededException para cada endereço bem-sucedido. |
mail.smtp.socketFactory | Fábrica de Soquetes | Se definida como uma classe que implementa a interface javax.net.SocketFactory, esta classe será usada para criar sockets SMTP. |
mail.smtp.socketFactory.class | Corda | Se definido, especifica o nome de uma classe que implementa a interface javax.net.SocketFactory. Esta classe será usada para criar sockets SMTP. |
mail.smtp.socketFactory.fallback | boleano | Se definido como verdadeiro, a falha em criar um soquete usando a classe de fábrica de soquete especificada fará com que o soquete seja criado usando a classe java.net.Socket. O padrão é verdadeiro. |
mail.smtp.socketFactory.port | int | Especifica a porta para conectar ao usar a fábrica de soquetes especificada. Se não for definida, a porta padrão será usada. |
mail.smtp.ssl.enable | boleano | Se definido como verdadeiro, use SSL para conectar e usar a porta SSL por padrão. O padrão é falso para o protocolo "smtp" e verdadeiro para o protocolo "smtps". |
mail.smtp.ssl.checkserveridentity | boleano | Se definido como verdadeiro, verifica a identidade do servidor conforme especificado pelo RFC 2595. O padrão é falso. |
mail.smtp.ssl.trust | Corda | Se definido, e um socket factory não foi especificado, habilita o uso de MailSSLSocketFactory. Se definido como "*", todos os hosts são confiáveis. Se definido como uma lista de hosts separados por espaços em branco, esses hosts são confiáveis. Caso contrário, a confiança depende do certificado que o servidor apresenta. |
mail.smtp.ssl.socketFactory | SSL Socket Factory | Se definida como uma classe que estende a classe javax.net.ssl.SSLSocketFactory, esta classe será usada para criar sockets SSL SMTP. |
mail.smtp.ssl.socketFactory.class | Corda | Se definido, especifica o nome de uma classe que estende a classe javax.net.ssl.SSLSocketFactory. Esta classe será usada para criar sockets SSL SMTP. |
mail.smtp.ssl.socketFactory.port | int | Especifica a porta para conectar ao usar a fábrica de soquetes especificada. Se não for definida, a porta padrão será usada. |
mail.smtp.ssl.protocols | corda | Especifica os protocolos SSL que serão ativados para conexões SSL. O valor da propriedade é uma lista separada por espaços em branco de tokens aceitáveis para o método javax.net.ssl.SSLSocket.setEnabledProtocols. |
mail.smtp.starttls.enable | boleano | Se verdadeiro, habilita o uso do comando STARTTLS (se suportado pelo servidor) para mudar a conexão para uma conexão protegida por TLS antes de emitir qualquer comando de login. O padrão é falso. |
mail.smtp.starttls.required | boleano | Se verdadeiro, requer o uso do comando STARTTLS. Se o servidor não suportar o comando STARTTLS ou se o comando falhar, o método de conexão falhará. O padrão é falso. |
mail.smtp.socks.host | corda | Especifica o nome do host de um servidor proxy SOCKS5 que será usado para conexões com o servidor de e-mail. |
mail.smtp.socks.port | corda | Especifica o número da porta para o servidor proxy SOCKS5. Deve ser usado apenas se o servidor proxy não estiver usando o número de porta padrão 1080. |
mail.smtp.mailextension | Corda | Cadeia de extensão para anexar ao comando MAIL. |
mail.smtp.userset | boleano | Se definido como verdadeiro, use o comando RSET em vez do comando NOOP no método isConnected. Em alguns casos, o sendmail responderá lentamente após muitos comandos NOOP; o uso de RSET evita esse problema de sendmail. O padrão é falso. |
Em geral, os aplicativos não precisam usar as classes deste pacote diretamente. Em vez disso, eles devem usar as APIs definidas pelo pacote javax.mail (e subpacotes). Digamos, por exemplo, que os aplicativos nunca devem construir instâncias de SMTPTransport diretamente. Em vez disso, eles devem usar o método getTransport da sessão para adquirir um objeto de transporte apropriado.
Exemplos de uso do servidor SMPT são demonstrados no capítulo Enviando e-mails .