Enviando emails com Java

Enviando emails com Java

1. Visão geral

Neste tutorial rápido, veremos como enviar um e-mail com e sem anexos - usando a biblioteca de correio Java principal.

2. Configuração e dependência do projeto

Para este artigo, usaremos um projeto simples baseado em Maven com uma dependência da biblioteca de correio Java:


    javax.mail
    mail
    1.5.0-b01

A versão mais recente pode ser encontradahere.

3. Envio de texto simples e e-mail em HTML

Primeiro, precisamos configurar a biblioteca com as credenciais de nosso provedor de serviços de e-mail. Então, vamos criar umSession t que será usado na construção de nossa mensagem para envio.

A configuração é feita por meio de um objeto JavaProperties :

Properties prop = new Properties();
prop.put("mail.smtp.auth", true);
prop.put("mail.smtp.starttls.enable", "true");
prop.put("mail.smtp.host", "smtp.mailtrap.io");
prop.put("mail.smtp.port", "25");
prop.put("mail.smtp.ssl.trust", "smtp.mailtrap.io");

Na configuração de propriedades acima, configuramos o host de email como Mailtrap e usamos a porta fornecida pelo serviço.

Agora, vamos prosseguir criando uma sessão com nosso nome de usuário e senha:

Session session = Session.getInstance(prop, new Authenticator() {
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
    }
});

O nome de usuário e a senha são fornecidos pelo provedor de serviços de correio, juntamente com os parâmetros de host e porta.

Agora que temos um emailSession objeto, vamos criar umMimeMessage  para enviar:

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("[email protected]"));
message.setRecipients(
  Message.RecipientType.TO, InternetAddress.parse("[email protected]"));
message.setSubject("Mail Subject");

String msg = "This is my first email using JavaMailer";

MimeBodyPart mimeBodyPart = new MimeBodyPart();
mimeBodyPart.setContent(msg, "text/html");

Multipart multipart = new MimeMultipart();
multipart.addBodyPart(mimeBodyPart);

message.setContent(multipart);

Transport.send(message);

No snippet acima, primeiro criamos uma posiçãomessage com as propriedades necessárias - para, de e assunto. Seguido por ummimeBodyPartthat tem uma codificação detext/html,, pois nossa mensagem é estilizada em HTML.

A próxima coisa que fizemos foi criar uma instância deMimeMultipart object que podemos usar para envolver osmimeBodyPart que criamos.

Finalmente, definimos omultipart objeto como o conteúdo de nossomessagee usamos osend()ofTransport objeto para enviar o e-mail.

So, we can say that the mimeBodyPartis contained in the multipart that is contained in the message. Hence, a multipart can contain more than one mimeBodyPart.

Esse será o foco da próxima seção.

4. Enviando e-mail com um anexo

Em seguida, para enviar um anexo, precisamos apenas criar outroMimeBodyParte anexar o (s) arquivo (s) a ele:

MimeBodyPart attachmentBodyPart = new MimeBodyPart();
attachmentBodyPart.attachFile(new File("path/to/file"));

Podemos então adicionar a nova parte do corpo ao sobjetoMimeMultipartque criamos anteriormente:

multipart.addBodyPart(attachmentBodyPart);

Isso é tudo que precisamos fazer.

Once again, we set the multipart instance as the content of the message object and finally we’ll use the send() to do the mail sending.

5. Conclusão

Em conclusão, vimos como usar a biblioteca de correio Java nativa para enviar e-mails, mesmo com anexo.

Como sempre, o código-fonte completo está disponívelover on Github.