Use o Javamail para enviar e-mails, o pacote de jar exigido (faça o download do arquivo de origem do javamail, a página oficial de download: http://www.oracle.com/technetwork/java/javamail/index-138643.html):
Mailapi.jar. Define a API de interface usada para enviar e receber e -mails;
smtp.jar. Contém a classe usada para enviar e -mails;
pop3.jar. Inclui a aula usada para receber e -mails;
O protocolo que geralmente usamos para enviar e -mails é o protocolo SMTP, e o protocolo que usamos para aceitar emails é o protocolo POP3. Ou, adicionamos diretamente o e -mail.jar ao projeto, que contém todas as interfaces e classes para o envio e recebimento de Java.
Classes comumente usadas:
Envie um email
Abaixo, primeiro listarei o exemplo mais simples de teste de envio de e -mails em Java:
importar java.util.properties; importar javax.mail.address; importar javax.mail.message; importar javax.mail.messagingException; importar javax.mail.session; importar javax.mail.transport; importar javax.mail.internet.internetaddress; importar javax.mail.internet.mimemessage; /** * * QQ (Mail.qq.com): servidor Pop3 (porta 995) SMTP Server (porta 465 ou 587). * */ public class Demo1 {/ ** * @param args * @throws MessagingException */ public static void main (string [] args) lança mensagens de MessagingException {string sendusername = "[email protected]"; String sendpassword = "pwd"; Propriedades Propriedades = new Properties (); Propriedades.setProperty ("Mail.smtp.auth", "true"); // O servidor precisa autenticar Properties.SetProperty ("Mail.Transport.Protocol", "Smtp"); // Declare a porta usada para enviar a sessão de e -mail = sessão.getInstance (Propriedades); session.setDebug (true); // concorda em imprimir as informações da conversa com o servidor no console da mensagem atual da mensagem do encadeamento = new Mimemessage (sessão); // construir a mensagem enviada mensagem.settext ("hello, eu sourt.wong!"); // informação conteúdo message.setFrom (new internetDresfress ("wangxiangpan@2626... transport.connect ("smtp.126.com", 25, sendUserName, sendpassword); // conecte o remetente servidor transport.sendMessage (mensagem, novo endereço [] {new InternetAddress ("[email protected]")}); // aceitar email.close (); }}Geralmente, usamos o Authenticator para encapsular o nome de usuário e a senha, o que é opaco! então:
importar javax.mail.authenticator; importar javax.mail.message; importar javax.mail.messagingException; importar javax.mail.passwordAuthentication; importar javax.mail.session; importar javax.mail.transport; importar javax.mail.internet.address; importar javax.mail.internet.internetaddress; importar javax.mail.internet.mimemessage; import junit.framework.testcase; /*** Javamail Enviar email* @Author Championship wong* message.addrecipient (Mensagem.recipient Recentário, endereço de endereço); Especifique as funções do destinatário e do destinatário ao enviar um email* message.recipientType.TO destinatário* message.recipientType.cc cc, ou seja, copie uma para outra pessoa ao enviar um email, sem responder! No entanto, o destinatário acima pode ver quem você copiou para * message.recipientType.bcc envia secretamente e também é para enviar uma cópia para outra pessoa ao enviar um email. No entanto, diferentemente do exposto, o destinatário não pode ver quem você deu secretamente a * */ public classe Demo2 estende o teste {private Static final String sendUserName = "[email protected]"; // o nome de usuário do servidor que precisa ser conectado ao enviar um e -mail que se envie a string string string para "Pwd"; // "smtp"; // porta usada para enviar e -mails private estático string final sendHostaddress = "smtp.126.com"; // o endereço do servidor usado para enviar email public void test () lança endereço, mensagens de mensagens {Propriedades Propriedades = new Properties (); Propriedades.setProperty ("Mail.smtp.auth", "true"); // O servidor precisa autenticar Properties.SetProperty ("Mail.Transport.Protocol", SendProtocol); Session.getInstance (Propriedades, new Authenticator () {Protected PasswordAuthentication getPasswordAuthentication () {Return New PasswordAuthentication (sendUserName, sendPassword);}}); session.setDebug (true); // Imprima informações em tempo real sobre o envio do e-mail na mensagem de fundo da mensagem = new Mimemessage (sessão); message.setFrom (new InternetAddress ("[email protected]")); Message.SetSubject ("Demo2Javacode enviando teste de email, usando autenticator"); // Defina o tópico message.setRecipients (message.recipientType.to, internetAddress .Parse ("[email protected], [email protected] (492134884 InternetAddress .Parse ("[email protected]")); // cc message .setContent ("<span style =" font-size: 20px; cor: #ffcff "mce_style =" font-size. "texto/html; charset = gbk"); Transport.send (mensagem); // Enviar email}} Enviamos um email relativamente complexo, incluindo anexos, fotos e textos:
importar java.io.filenotfoundException; importar java.io.fileOutputStream; importar java.io.ioException; importar java.io.OutputStream; importar java.util.properties; importar javax.activation.datahandler; importar javax.activation.dataSource; importar javax.activation.filedataSource; importar javax.mail.authenticator; importar javax.mail.messagingException; importar javax.mail.passwordAuthentication; importar javax.mail.session; importar javax.mail.transport; importar javax.mail.message.recipientType; importar javax.mail.internet.internetaddress; importar javax.mail.internet.mimebodyPart; importar javax.mail.internet.mimemessage; importar javax.mail.internet.mimemultipart; importar javax.mail.internet.mimeutility; /** * * Administrador @Author MR XP.WANG * MIMEMULTIPART O recipiente geral do email é multipart, que define métodos para adicionar e excluir várias partes do email. * No entanto, é uma classe abstrata, e sua subclasse Mimemultipart precisa ser usada para o objeto Mimemessage* MimebodyPart é uma subclasse de parte do corpo usada especificamente para a mimenessage. O objeto MimebodyPart representa uma * todas as partes do objeto Mimemultipart * Mimeutility.EncodeText (String CN) é usado para resolver o problema do código iluminado chinês nas informações do cabeçalho no email * */ public classe Demo3_test {public static void main (string [] args) excepciona (propriedades em propêsterias ... Propriedades.setProperty ("Mail.smtp.auth", "true"); // O servidor precisa autenticar Properties.SetProperty ("Mail.Transport.Protocol", "smtp"); // declara a porta usada para enviar correio de propensas.setProperty ("Mail.host", "" Session.getInstance (Propriedades, new Authenticator () {string sendUserName = "[email protected]"; string sendpassword = "pwd"; protegida senhaTauthentication getPasswordAtHentication () {retorna senha da senha (sendUserName, sendPassword);}}); session.setDebug (true); MIMEMESSAGE MSG = NOVO MIMEMESSAGE (SESSÃO); // Declare um órgão de email msg.setFrom (new InternetAddress ("/" ""+Mimeutility.Encodetext ("MR XP.wang")+"/" <[email protected])); msg.SetSubject ("Este é o meu primeiro email complicado"); // Defina o assunto de email msg.setrecipients (Mimemessage.recipientType.to, InternetAddress.parse (Mimeutility.Encodetext ("Wang Xiangpan ")+" <[email protected]>, "+mimeutility.encodeText (" sanmao ")+" <[email protected]> ")); MimeMultipart msgMultipart = new MimeMultipart("mixed");// Indicate the combination relationship of the email, the mixed relationship msg.setContent(msgMultipart);// Set the email body MimeBodyPart attach1 = new MimeBodyPart();// Attachment 1 MimeBodyPart attach2 = new MimeBodyPart();// Attachment 2 MimeBodyPart content = new MimeBodyPart (); // O texto do email, uma mistura (imagem + texto) // Defina o anexo e o texto neste e -mail msgmultipart.addbodypart (attch1); msgmultipart.addbodypart (attch2); msgmultipart.addbodypart (conteúdo); // Defina o primeiro conjunto de dados de anexo ds1 = new FileDataSource ("f: /accp5.0/file/ssh Configuration.txt"); // Especifique a fonte de dados do anexo DataHandler dh1 = new Datahandler (ds1); // Informações de anexação // Anexado attch1.setDataHandler (dh1); attch1.setFilename ("ssh.txt"); // defina o segundo conjunto de dados de anexo ds2 = new fileDataSource ("Resource/48.jpg"); // Especifique a fonte de dados do anexo Datahandler dh2 = new Datahandler (ds2); // Informações de anexo. // Defina o texto do email Mimemultipart bodymultipart = new Mimemultipart ("Relacionado"); // Dependência Content.setContent (BodyMultipart); // Especifique o corpo MimeBodyPart htmlPart = new MimeBodypart (); MimebodyPart gifPart = new MimeBodyPart (); bodymultipart.addbodypart (htmlpart); bodymultipart.addbodypart (gifpart); DataSource GIFDS = new FileDataSource ("Resource/48.jpg"); // Defina a imagem do texto Datahandler gifdh = new Datahandler (GIFDS); gifpart.setheader ("conteúdo-localização", "http://mimg.126.net/logo/126logo.gif"); gifpart.setdatahandler (gifdh); // Defina a imagem do texto htmlpart.setContent ("Estou aqui apenas para fazer um molho de soja, esta é a minha foto! "Text/html; charset = gbk"); // Defina o texto msg.savechanges (); // salve o email // salve o email como um arquivo outputStream ops = new FileOutputStream ("c: /users/administrator/desktop/test.eml"); msg.WritEto (OPS); ops.close (); Transport.send (msg); }} Receber e -mails
Exemplo: Rose coleta o e -mail mais recente.
importar java.util.date; importar java.util.properties; importar javax.mail.folder; importar javax.mail.message; importar javax.mail.messagingException; importação javax.mail.NosuchProvidexception; importar public.mail.ail; main (string [] args) {string protocol = "pop3"; boolean ISSSL = true; String host = "pop.163.com"; int porta = 995; String userName = "[email protected]"; String senha = "rose"; Propriedades Props = new Properties (); props.put ("Mail.pop3.ssl.enable", ISSSL); props.put ("Mail.pop3.host", host); props.put ("Mail.pop3.port", porta); Sessão session = session.getDefaultInstance (adereços); Loja de lojas = nulo; Pasta pasta = nulo; tente {store = session.getstore (protocolo); store.Connect (nome de usuário, senha); pasta = store.getFolder ("Caixa de entrada"); pasta.open (pasta.read_only); int size = pasta.getMessageCount (); Mensagem mensagem = pasta.getMessage (tamanho); String de = message.getFrom () [0] .ToString (); String sujeito = message.getSubject (); Data data = message.getSentDate (); System.out.println ("de:" + de); System.out.println ("sujeito:" + sujeito); System.out.println ("Data:" + Data); } catch (nosuchproviderxception e) {e.printStackTrace (); } catch (MessagingException e) {E.PrintStackTrace (); } finalmente {tente {if (pasta! = null) {pasta.close (false); } if (store! = null) {store.close (); }} Catch (MessagingException e) {E.PrintStackTrace (); }} System.out.println ("recebido!"); }}