logo

Enviando e-mail em Java

  1. Envio de e-mail usando JavaMail API
  2. Etapas para enviar e-mail usando JavaMail API
    1. Obtenha o objeto de sessão
    2. Componha a mensagem
    3. envie a mensagem
  3. Exemplo simples de envio de e-mail usando JavaMail API
  4. Exemplo de envio de e-mail usando JavaMail API através do servidor SMTP fornecido pelo provedor host

Existem várias maneiras de enviar e-mail usando a API JavaMail. Para isso, é necessário possuir um servidor SMTP responsável pelo envio de e-mails.

Você pode usar uma das seguintes técnicas para obter o servidor SMTP:

  • Instale e use qualquer servidor SMTP, como servidor Postcast, servidor Apache James, servidor cmail etc.
  • Use o servidor SMTP fornecido pelo provedor host, por exemplo. meu servidor SMTP é mail.javatpoint.com (ou)
  • Use o servidor SMTP fornecido por outras empresas, por exemplo. gmail etc

Aqui, aprenderemos acima três abordagens para enviar e-mail usando a API javamail. Mas devemos aprender os passos básicos para enviar e-mail a partir de um aplicativo Java.


Etapas para enviar e-mail usando JavaMail API

Existem três etapas a seguir para enviar e-mail usando JavaMail. Eles são os seguintes:

    Obtenha o objeto de sessãoque armazena todas as informações do host, como nome do host, nome de usuário, senha, etc.compor a mensagem envie a mensagem


1) Obtenha o objeto de sessão

O Classe javax.mail.Session fornece dois métodos para obter o objeto da sessão, o método Session.getDefaultInstance() e o método Session.getInstance(). Você pode usar qualquer método para obter o objeto de sessão.

Método da classe Session

Não.MétodoDescrição
1Sessão estática pública getDefaultInstance (adereços de propriedades)retorna a sessão padrão.
2Sessão estática pública getDefaultInstance (adereços de propriedades, autenticação do autenticador)retorna a sessão padrão.
3Sessão estática pública getInstance (adereços de propriedades)retorna a nova sessão.
4Sessão estática pública getInstance (adereços de propriedades, autenticação do autenticador)retorna a nova sessão.

Exemplo do método getDefaultInstance()

 Properties properties=new Properties(); //fill all the information like host name etc. Session session=Session.getDefaultInstance(properties,null); 

Exemplo do método getInstance()

 Properties properties=new Properties(); //fill all the information like host name etc. Session session=Session.getInstance(properties,null); 

2) Redija a mensagem

A classe javax.mail.Message fornece métodos para redigir a mensagem. Mas é uma classe abstrata, então sua subclasse javax.mail.internet.MimeMessage é usada principalmente.
Para criar a mensagem, você precisa passar o objeto de sessão no construtor da classe MimeMessage. Por exemplo:
 MimeMessage message=new MimeMessage(session); 
Agora o objeto mensagem foi criado, mas para armazenar informações neste objeto a classe MimeMessage fornece muitos métodos. Vejamos os métodos fornecidos pela classe MimeMessage:

Métodos comumente usados ​​da classe MimeMessage

Não.MétodoDescrição
1public void setFrom(Endereço)é usado para definir o campo do cabeçalho.
2public void addRecipient (tipo Message.RecipientType, endereço de endereço)é usado para adicionar o endereço fornecido ao tipo de destinatário.
3public void addRecipients (tipo Message.RecipientType, endereços Address[])é usado para adicionar os endereços fornecidos ao tipo de destinatário.
4public void setSubject(String assunto)é usado para definir o campo de cabeçalho do assunto.
5public void setText(String mensagem de texto)é usado para definir o texto como o conteúdo da mensagem usando o tipo MIME text/plain.
6public void setContent(Mensagem de objeto, String contentType)é usado para definir o conteúdo como o conteúdo da mensagem usando um determinado tipo MIME.

Exemplo para redigir a mensagem:

 MimeMessage message=new MimeMessage(session); message.setFrom(new InternetAddress('[email protected]')); message.addRecipient(Message.RecipientType.To, new InternetAddress('[email protected]')); message.setHeader('Hi, everyone'); message.setText('Hi, This mail is to inform you...'); 

3) Envie a mensagem

A classe javax.mail.Transport fornece um método para enviar a mensagem.

Métodos comumente usados ​​da classe Transport

Não.MétodoDescrição
1envio estático público vazio (mensagem de mensagem)é usado para enviar a mensagem.
2envio estático público vazio (mensagem de mensagem, endereço [] endereço)é usado para enviar a mensagem para os endereços fornecidos.

Exemplo para enviar a mensagem:

 Transport.send(message); 

Exemplo simples de envio de e-mail em Java

baixe esses arquivos jar ou acesse o site da Oracle para baixar a versão mais recente.
Neste exemplo, aprenderemos como enviar e-mail pelo servidor SMTP instalado na máquina, por exemplo. Servidor Postcast, servidor Apache James, servidor Cmail etc. Se você deseja enviar e-mail usando seu servidor SMTP fornecido pelo provedor de host, veja o exemplo após este.
Para enviar o email usando a API JavaMail, você precisa carregar os dois arquivos jar:
mail.jar
ativação.jar
 import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args){ String to = '[email protected]';//change accordingly String from = '[email protected]';change accordingly String host = 'localhost';//or IP address //Get the session object Properties properties = System.getProperties(); properties.setProperty('mail.smtp.host', host); Session session = Session.getDefaultInstance(properties); //compose the message try{ MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); message.setSubject('Ping'); message.setText('Hello, this is example of sending email '); // Send message Transport.send(message); System.out.println('message sent successfully....'); }catch (MessagingException mex) {mex.printStackTrace();} } } 
baixe este exemplo para enviar e-mail

Neste exemplo, aprenderemos como enviar e-mail pelo servidor SMTP instalado na máquina, por exemplo. Servidor Postcast, servidor Apache James, servidor Cmail etc. Se você deseja enviar e-mail usando seu servidor SMTP fornecido pelo provedor de host, veja o exemplo após este.

Para executar este exemplo, você precisa carregar dois arquivos jar. Existem 4 maneiras de carregar o arquivo jar. Uma das maneiras é definir o caminho de classe. Vamos ver como executar este exemplo:

Carregue o arquivo jarc:> definir classpath=mail.jar;ativação.jar;.;
compilar o arquivo fontec:> javac SendEmail.java
executado porc:> java EnviarE-mail

Exemplo de envio de e-mail em Java através do servidor SMTP fornecido pelo provedor host

baixe esses arquivos jar ou acesse o site da Oracle para baixar a versão mais recente.
Se você estiver usando o servidor SMTP fornecido pelo provedor host, por exemplo. mail.javatpoint.com , você precisa autenticar o nome de usuário e a senha. A classe javax.mail.PasswordAuthentication é usada para autenticar a senha.
Se você estiver enviando o e-mail usando a API JavaMail, carregue os dois arquivos jar:
mail.jar
ativação.jar
 import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class SendMailBySite { public static void main(String[] args) { String host='mail.javatpoint.com'; final String user='[email protected]';//change accordingly final String password='xxxxx';//change accordingly String to='[email protected]';//change accordingly //Get the session object Properties props = new Properties(); props.put('mail.smtp.host',host); props.put('mail.smtp.auth', 'true'); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user,password); } }); //Compose the message try { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(user)); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); message.setSubject('javatpoint'); message.setText('This is simple program of sending email using JavaMail API'); //send the message Transport.send(message); System.out.println('message sent successfully...'); } catch (MessagingException e) {e.printStackTrace();} } } 
baixe este exemplo para enviar e-mail

Como você pode ver no exemplo acima, o ID do usuário e a senha precisam ser autenticados. Como este programa ilustra, você pode enviar e-mails facilmente. Altere o nome de usuário e a senha de acordo. Vamos ver como executá-lo novamente com uma técnica simples:

Carregue o arquivo jarc:> definir classpath=mail.jar;ativação.jar;.;
compilar o arquivo fontec:> javac SendMailBySite.java
executado porc:> javaSendMailBySite