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ão que 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étodo Descrição
1 Sessão estática pública getDefaultInstance (adereços de propriedades) retorna a sessão padrão.
2 Sessão estática pública getDefaultInstance (adereços de propriedades, autenticação do autenticador) retorna a sessão padrão.
3 Sessão estática pública getInstance (adereços de propriedades) retorna a nova sessão.
4 Sessã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étodo Descrição
1 public void setFrom(Endereço) é usado para definir o campo do cabeçalho.
2 public void addRecipient (tipo Message.RecipientType, endereço de endereço) é usado para adicionar o endereço fornecido ao tipo de destinatário.
3 public void addRecipients (tipo Message.RecipientType, endereços Address[]) é usado para adicionar os endereços fornecidos ao tipo de destinatário.
4 public void setSubject(String assunto) é usado para definir o campo de cabeçalho do assunto.
5 public void setText(String mensagem de texto) é usado para definir o texto como o conteúdo da mensagem usando o tipo MIME text/plain.
6 public 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étodo Descrição
1 envio estático público vazio (mensagem de mensagem) é usado para enviar a mensagem.
2 envio 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 jar c:> definir classpath=mail.jar;ativação.jar;.;
compilar o arquivo fonte c:> javac SendEmail.java
executado por c:> 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 jar c:> definir classpath=mail.jar;ativação.jar;.;
compilar o arquivo fonte c:> javac SendMailBySite.java
executado por c:> javaSendMailBySite