- Envio de e-mail usando JavaMail API
- Etapas para enviar e-mail usando JavaMail API
- Obtenha o objeto de sessão
- Componha a mensagem
- envie a mensagem
- Exemplo simples de envio de e-mail usando JavaMail API
- 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
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:baixe esses arquivos jar ou acesse o site da Oracle para baixar a versão mais recente. |
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-mailNeste 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
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:baixe esses arquivos jar ou acesse o site da Oracle para baixar a versão mais recente. |
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-mailComo 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 |