Integrando o JavaMail com o Email Delivery
Use JavaMail para enviar e-mails por meio do serviço Email Delivery.
O JavaMail oferece uma estrutura independente de plataforma e independente de protocolo para criar aplicativos de e-mail e mensagens. Antes de usar o JavaMail, você deve configurar o Email Delivery e anotar suas informações de envio SMTP e credenciais SMTP. Este guia usa o IDE do Eclipse IDE e a API do JavaMail para enviar e-mails por meio do serviço Email Delivery.
Essas instruções contêm um código de amostra para sua conveniência e devem ser usadas como referência. Para o suporte ao cliente, entre em contato com o suporte ao cliente JavaMail. Essas etapas foram testadas em uma instância de computação do Oracle Linux Server release 7.9 e Java 8 e 11. Os aplicativos Java (incluindo o JavaMail) deverão ser atualizados para a versão mais recente para garantir que os protocolos, as cifragens e os patches de segurança mais recentes estejam de acordo com as políticas de segurança e cifragens suportadas pela Oracle.
Configurar o JavaMail para Enviar E-mails por meio do serviço Email Delivery
Para permitir que o JavaMail teste a configuração do serviço Email Delivery:
-
Certifique-se de que o serviço Email Delivery esteja configurado para enviar e-mails. Consulte Conceitos Básicos.
Observação
As credenciais SMTP são obrigatórias para configurar o JavaMail para usar o serviço Email Delivery. Não esqueça de anotar o nome de usuário e a senha ao gerar as credenciais SMTP.
- Abra um browser e vá para https://github.com/javaee/javamail/releases.
- Em Downloads, selecione javax.mail.jar para fazer download da versão mais recente do JavaMail.
- Crie um projeto no Eclipse executando as seguintes etapas:
- No Eclipse, abra o menu File. Selecione New e clique em Java Project.
- Na caixa de diálogo Create a Java Project, informe um nome de projeto e clique em Next.
- Na caixa de diálogo Java Settings, selecione a guia Libraries.
- Clique em Add External JARs.
- Na caixa de diálogo JAR Selection, navegue até a pasta na qual você fez download do JavaMail. Selecione o arquivo javax.mail.jar e clique em Open.
- Na caixa de diálogo Java Settings, clique em Finish.
- No Eclipse, na janela Package Explorer, expanda seu projeto.
- Em seu projeto, clique com o botão direito do mouse no diretório src, selecione New e, em seguida, clique em Class.
- Na caixa de diálogo New Java Class, digite "OCIemail" no campo Name e, em seguida, clique em Finish.
-
Insira o seguinte código em OCIemail.java para enviar um e-mail de teste com o JavaMail:
import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class OCIemail { // Replace FROM with your "From" address. // This address must be added to Approved Senders in the console. static final String FROM = "<sender email address>"; static final String FROMNAME = "<sender name>"; // Replace TO with a recipient address. static final String TO = "<recipient email address>"; // Replace smtp_username with your Oracle Cloud Infrastructure SMTP username generated in console. static final String SMTP_USERNAME = "<username OCID from SMTP credentials>"; // Replace smtp_password with your Oracle Cloud Infrastructure SMTP password generated in console. static final String SMTP_PASSWORD = "<SMTP password>"; // Oracle Cloud Infrastructure Email Delivery hostname. static final String HOST = "<SMTP endpoint>"; // The port you will connect to on the SMTP endpoint. Port 25 or 587 is allowed. static final int PORT = 587; static final String SUBJECT = "<subject of your email>"; static final String BODY = String.join( System.getProperty("line.separator"), "<h1>OCI Email Delivery test</h1>", "<p>This email was sent with OCI Email Delivery using the ", "<a href='Javamail'>https://github.com/javaee/javamail'>Javamail Package</a>", " for <a href='Javahttps://www.java.com'>Java</a>." ); public static void main(String[] args) throws Exception { // Create a Properties object to contain connection configuration information. Properties props = System.getProperties(); props.put("mail.transport.protocol", "smtp"); props.put("mail.smtp.port", PORT); //props.put("mail.smtp.ssl.enable", "true"); //the default value is false if not set props.put("mail.smtp.auth", "true"); props.put("mail.smtp.auth.login.disable", "true"); //the default authorization order is "LOGIN PLAIN DIGEST-MD5 NTLM". 'LOGIN' must be disabled since Email Delivery authorizes as 'PLAIN' props.put("mail.smtp.starttls.enable", "true"); //TLSv1.2 is required props.put("mail.smtp.starttls.required", "true"); //Oracle Cloud Infrastructure required // Create a Session object to represent a mail session with the specified properties. Session session = Session.getDefaultInstance(props); // Create a message with the specified information. MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress(FROM,FROMNAME)); msg.setRecipient(Message.RecipientType.TO, new InternetAddress(TO)); msg.setSubject(SUBJECT); msg.setContent(BODY,"text/html"); // Create a transport. Transport transport = session.getTransport(); // Send the message. try { System.out.println("Sending Email now...standby..."); // Connect to OCI Email Delivery using the SMTP credentials specified. transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD); // Send email. transport.sendMessage(msg, msg.getAllRecipients()); System.out.println("Email sent!"); } catch (Exception ex) { System.out.println("The email was not sent."); System.out.println("Error message: " + ex.getMessage()); } finally { // Close & terminate the connection. transport.close(); } } }
-
No arquivo OCIemail.java, substitua o seguinte por seus próprios valores:
Observação
Os endereços de e-mail fazem distinção entre maiúsculas e minúsculas. Certifique-se de que os endereços sejam iguais aos que você informou nos Remetentes Aprovados na console.
- FROM - Substitua pelo endereço de e-mail do remetente. Esse endereço de e-mail deve ser adicionado primeiro à lista de Remetentes Aprovados no serviço Email Delivery.
- TO - Substitua pelo endereço de e-mail do destinatário.
- Credenciais SMTP - Substitua smtp_username e smtp_password pelo seu nome de usuário e senha SMTP do Oracle Cloud Infrastructure gerados na console.
- HOST - Substitua pelo ponto final SMTP do serviço Email Delivery. Por exemplo, smtp.us-ashburn-1.oraclecloud.com.
-
Consulte os requisitos para configurar a conexão SMTP no serviço Email Delivery. O TLSv1.2 é obrigatório para o serviço Email Delivery. Algumas definições padrão de Javamail precisam ser desativadas. Por exemplo, o JavaMail faz as autorizações em uma determinada ordem. A ordem de autorização padrão é "LOGIN PLAIN DIGEST-MD5 NTLM". Como o serviço Email Delivery autoriza como "PLAIN", "LOGIN" precisa ser desativado. Por exemplo, o código a seguir é inserido no arquivo OCIemail.java para configurar a conexão SMTP:
props.put("mail.smtp.auth", "true"); props.put("mail.smtp.auth.login.disable", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.starttls.required", "true");
- Abra o menu File e clique em Save.
- Para construir o projeto, abra o menu Project e, em seguida, selecione Build Project. Se essa opção estiver desativada, é possível que construção automática esteja ativada.
- Para iniciar o programa e enviar o e-mail, abra o menu Run e clique em Run.
- Verifique a saída. Se o e-mail tiver sido enviado com sucesso, a console exibirá "Email sent successfully" Caso contrário, ela exibirá uma mensagem de erro.
- Faça log-in na caixa de entrada do destinatário para verificar o recebimento do e-mail.
Mais Informações
- Consulte a documentação do JavaMail para obter mais informações.
- Há um problema conhecido que pode causar um erro. Consulte JavaMail problemas ocorrem quando muitos destinatários são definidos em um e-mail e um ou mais endereços de e-mail são suprimidos.