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.

Importante

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:

  1. 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.

  2. Abra um browser e vá para https://github.com/javaee/javamail/releases.
  3. Em Downloads, selecione javax.mail.jar para fazer download da versão mais recente do JavaMail.
  4. Crie um projeto no Eclipse executando as seguintes etapas:
    1. No Eclipse, abra o menu File. Selecione New e clique em Java Project.
    2. Na caixa de diálogo Create a Java Project, informe um nome de projeto e clique em Next.
    3. Na caixa de diálogo Java Settings, selecione a guia Libraries.
    4. Clique em Add External JARs.
    5. 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.
    6. Na caixa de diálogo Java Settings, clique em Finish.
  5. No Eclipse, na janela Package Explorer, expanda seu projeto.
  6. Em seu projeto, clique com o botão direito do mouse no diretório src, selecione New e, em seguida, clique em Class.
  7. Na caixa de diálogo New Java Class, digite "OCIemail" no campo Name e, em seguida, clique em Finish.
  8. 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();
     
            }
     
        }
     
    }
  9. 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.
  10. 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"); 
  11. Abra o menu File e clique em Save.
  12. 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.
  13. Para iniciar o programa e enviar o e-mail, abra o menu Run e clique em Run.
  14. 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.
  15. Faça log-in na caixa de entrada do destinatário para verificar o recebimento do e-mail.