English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Enviar e-mail usando aplicativos Java-O JavaMail é muito simples, mas antes disso, você deve instalar o JavaMail API e o Java Activation Framework (JAF) no seu computador.
Você pode baixar a versão mais recente do Java do site Java: JavaMail,no lado direito da página há Downloads clique nele para baixar.
Você pode baixar a versão mais recente do Java do site Java: JAF (versão 1.1.1).
Você também pode usar os links de download fornecidos neste site:
Baixe e extraia esses arquivos, no diretório superior recém-criado, você encontrará alguns arquivos jar dessas aplicações. Você precisa adicionar mail.jar e activation.jar Adicione o arquivo ao seu CLASSPATH.
Se você usar um servidor de e-mail de terceiros, como o servidor SMTP do QQ, consulte o exemplo completo de autenticação no final do artigo.
A seguir está um exemplo de envio de e-mail的实例。假设你的本地主机已经连接到网络。
// Nome do arquivo SendEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args) { // Endereço de e-mail do destinatário String to = "[email protected]"; // Endereço de e-mail do remetente String from = "[email protected]"; // 指定发送邮件的主机为 localhost String host = "localhost"; // Obter propriedades do sistema Properties properties = System.getProperties(); // Configurar servidor de e-mail properties.setProperty("mail.smtp.host", host); // Obter objeto session padrão Session session = Session.getDefaultInstance(properties); try{ // Criar objeto MimeMessage padrão MimeMessage message = new MimeMessage(session); // Definir De: campo de cabeçalho message.setFrom(new InternetAddress(from)); // Definir Para: campo de cabeçalho message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Definir Assunto: campo de cabeçalho message.setSubject("This is the Subject Line!"); // Definir corpo da mensagem message.setText("This is actual message"); // Enviar mensagem Transport.send(message); System.out.println("Mensagem enviada com sucesso..."); }catch (MessagingException mex) { mex.printStackTrace(); } } }
Compile e execute este programa para enviar um e-mail simples E-mail:
$ java SendEmail Mensagem enviada com sucesso...
Se você quiser enviar um e-Se você deseja enviar e-mail para múltiplos destinatários, use o método a seguir para especificar múltiplos IDs de destinatários:
void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
A seguir está a descrição dos parâmetros:
type:Deve ser configurado como TO, CC ou BCC, onde CC representa cópia, e BCC representa cópia oculta. Exemplo:Message.RecipientType.TO
addresses: 这是 email ID 的数组。在指定电子邮件 ID 时,你将需要使用 InternetAddress() 方法。
下面是一个发送 HTML E-mail 的实例。假设你的本地主机已经连接到网络。
和上一个实例很相似,除了我们要使用 setContent() 方法来通过第二个参数为 "text/html",来设置内容来指定要发送HTML 内容。
// 文件名 SendHTMLEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendHTMLEmail { public static void main(String [] args) { // Endereço de e-mail do destinatário String to = "[email protected]"; // Endereço de e-mail do remetente String from = "[email protected]"; // 指定发送邮件的主机为 localhost String host = "localhost"; // Obter propriedades do sistema Properties properties = System.getProperties(); // Configurar servidor de e-mail properties.setProperty("mail.smtp.host", host); // 获取默认的 Session 对象。 Session session = Session.getDefaultInstance(properties); try{ // 创建默认的 MimeMessage 对象。 MimeMessage message = new MimeMessage(session); // Definir De: campo de cabeçalho message.setFrom(new InternetAddress(from)); // Definir Para: campo de cabeçalho message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: 头字段 message.setSubject("This is the Subject Line!"); // 发送 HTML 消息, 可以插入html标签 message.setContent("<h1>This is actual message</h1>", "text/html" ); // Enviar mensagem Transport.send(message); System.out.println("Mensagem enviada com sucesso..."); }catch (MessagingException mex) { mex.printStackTrace(); } } }
编译并运行此程序来发送HTML e-mail:
$ java SendHTMLEmail Mensagem enviada com sucesso...
下面是一个发送带有附件的 E-mail的实例。假设你的本地主机已经连接到网络。
// 文件名 SendFileEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendFileEmail { public static void main(String [] args) { // Endereço de e-mail do destinatário String to = "[email protected]"; // Endereço de e-mail do remetente String from = "[email protected]"; // 指定发送邮件的主机为 localhost String host = "localhost"; // Obter propriedades do sistema Properties properties = System.getProperties(); // Configurar servidor de e-mail properties.setProperty("mail.smtp.host", host); // 获取默认的 Session 对象。 Session session = Session.getDefaultInstance(properties); try{ // 创建默认的 MimeMessage 对象。 MimeMessage message = new MimeMessage(session); // Definir De: campo de cabeçalho message.setFrom(new InternetAddress(from)); // Definir Para: campo de cabeçalho message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: 头字段 message.setSubject("This is the Subject Line!"); // 创建消息部分 BodyPart messageBodyPart = new MimeBodyPart(); // Mensagem messageBodyPart.setText("Esta é a mensagem do corpo"); // Criar mensagem múltipla Multipart multipart = new MimeMultipart(); // Configurar parte da mensagem de texto multipart.addBodyPart(messageBodyPart); // Parte do anexo messageBodyPart = new MimeBodyPart(); String filename = "file.txt"; DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // Enviar mensagem completa message.setContent(multipart); // Enviar mensagem Transport.send(message); System.out.println("Mensagem enviada com sucesso..."); }catch (MessagingException mex) { mex.printStackTrace(); } } }
Compile e execute seu programa para enviar um e-mail com anexo.
$ java SendFileEmail Mensagem enviada com sucesso...
Se precisar fornecer nome de usuário e senha para e-Para alcançar o objetivo de autenticação do usuário no servidor de e-mail mail, você pode completar a configuração conforme a seguir:
props.put("mail.smtp.auth", "true"); props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd");
e-Outros mecanismos de envio do mail seguem a mesma lógica.
Este exemplo usa o servidor de e-mail QQ como exemplo, você precisa ativar o POP na conta do e-mail QQ no backend de login "Configurações" => Conta3/Serviço SMTP, conforme mostrado na figura a seguir:
O e-mail QQ configura a senha através da geração de um código de autorização:
Código Java conforme a seguir:
// Exemplo de envio de e-mail com nome de usuário e senha //Nome do arquivo SendEmail2.java //Este exemplo usa o e-mail QQ como exemplo, você precisa configurar no backend do QQ import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendEmail2 { public static void main(String [] args) { // Endereço de e-mail do destinatário String to = "[email protected]"; // Endereço de e-mail do remetente String from = "[email protected]"; // Especificar o host principal para envio de e-mail como smtp.qq.com String host = "smtp.qq.com"; //Servidor de e-mail QQ // Obter propriedades do sistema Properties properties = System.getProperties(); // Configurar servidor de e-mail properties.setProperty("mail.smtp.host", host); properties.put("mail.smtp.auth", "true"); // Obter objeto session padrão Session session = Session.getDefaultInstance(properties, new Authenticator(){ public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("[email protected]", "Código de autorização do correio qq"); //Nome de usuário do e-mail do remetente, código de autorização } }); try{ // Criar objeto MimeMessage padrão MimeMessage message = new MimeMessage(session); // Definir De: campo de cabeçalho message.setFrom(new InternetAddress(from)); // Definir Para: campo de cabeçalho message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Definir Assunto: campo de cabeçalho message.setSubject("This is the Subject Line!"); // Definir corpo da mensagem message.setText("This is actual message"); // Enviar mensagem Transport.send(message); System.out.println("Message sent successfully....from oldtoolbag.com)); }catch (MessagingException mex) { mex.printStackTrace(); } } }