Em uso real, por exemplo, se você compra no Taobao e solicitar um reembolso, verá um email de reembolso no seu endereço de e -mail ou registrar uma conta, solicitar a verificação da notificação por email etc. Tudo isso é o envio de email. Aqui apresentará o caso de transmissão de email anormal pelo sistema.
Preparação:
Eclipse4.5 64 bits
JDK1.7 64 bits
O frasco necessário para enviar e -mail:
fastjson-1.1.24.jar, javax.mail-1.5.6.jar
Desenvolvedor de classe:
Tipo de enumeração, nome do remetente e endereço de e -mail
pacote e -mail; / ** *@class: desenvolvedor *@descritivo: tipo de enumeração, nome do remetente e endereço de e -mail *@Data: 26 de outubro de 2016 às 20:07:50 *@Autor sanghaiqin *@versão: v1.0 */ public enum desenvolvedor {zhoujing ("zhou jing", "40568708@ Yuxiang "," [email protected] "), yipeng (" ypeng "," [email protected] "), liuan (" liu an "," [email protected] "), chenyuhao (" chumn yuhao ", "2333166666..com"). Dong "," [email protected] "), sanghaiqin (" Sang Haiqin "," [email protected] "); // Nome do remetente Nome da sequência privada; // Email de remetente e -mail privado string e -mail; Desenvolvedor privado () {} Desenvolvedor Privado (Nome da String, String Mail) {this.name = Name; this.mail = Mail; } / *** @Descript: Passe o nome do remetente para obter o email do remetente* @param nome nome do remetente* @return* / public static string getmail (nome da string) {for (desenvolvedor c: desenvolvedor.values ()) {if (c.getname (). }} retornar nulo; } public string getName () {return name; } public void setName (nome da string) {this.name = name; } public String getMail () {return Mail; } public void setMail (string Mail) {this.mail = Mail; }} Classe ExceptionInfo: Informações do remetente
pacote e -mail; /** *@Class: ExceptionInfo *@Descript: Informações do remetente *@Data: 26 de outubro de 2016 às 20:11:27 *@Autor Sanghaiqin *@Versão: v1.0 */public classe ExceptionInfo {// Nome do remetente Developer Private String Developer; // Método do remetente Método de sequência privada; // URL do remetente URL private String URL; // O remetente captura informações de exceção Exceção privada e; / *** @param desenvolvedor Nome do remetente do desenvolvedor* @param Método Método* @param url remetente url* @param e remetente captura informações de exceção*/ public ExceptionInfo (desenvolvedor de string, método da string, String URL, Exceção e) {super (); this.Developer = desenvolvedor; this.method = método; this.url = url; this.e = e; } public string getDeveloper () {return Developer; } public void setDeveloper (String Developer) {this.developer = desenvolvedor; } public String getMethod () {Método de retorno; } public void setMethod (método da string) {this.method = método; } public string geturl () {return url; } public void Seturl (String url) {this.url = url; } public Exception getE () {return e; } public void sete (Exceção e) {this.e = e; }} MailSenderInfo: Enviar informações de e -mail
pacote e -mail; importar java.util.properties; /** *@class: MailSenderInfo *@descritivo: envie informações de email *@Data: 26 de outubro de 2016 às 20:14:22 *@Autor sanghaiqin *@versão: v1.0 */public class MailSenderInfo {// o IP Private String MailServerhost do servidor enviando o Mail; // A porta do servidor enviando o e -mail é 25 private string MailServerport = "25"; // o endereço do remetente da string privada do correio daddress; // o endereço do destinatário de email Private String toaddress; // Faça login no nome de usuário de string privado do servidor de envio de e -mail; // Faça login na senha de senha de senha do servidor de e -mail; // você precisa de autenticação Private boolean validate = false; // email Assunto String Private String Assunto; // conteúdo de texto do conteúdo da string privada do correio; // Nome do arquivo do anexo de e -mail Private String [] AnextFileNames; public MailSenderInfo () {super (); } public String getMailServerHost () {return MailServerHost; } public void setMailServerHost (String MailServerHost) {this.mailServerHost = MailServerHost; } public String getMailServerport () {return MailServerport; } public void setMailServerport (String MailServerport) {this.mailServerport = MailServerport; } public boolean isValidate () {return validate; } public void SetValidate (validar boolean) {this.validate = validate; } public String [] getAtTAChFilENames () {return AnextFileNames; } public void setTattachfilENames (string [] FILENAMES) {this.attachfilenames = FileNames; } public string getFromaddress () {return fromaddress; } public void setFromAddress (String fromaddress) {this.Fromaddress = FromAddress; } public string getPassword () {return senha; } public void setPassword (string senha) {this.password = senha; } public string getToAddress () {return toaddress; } public void Settoaddress (String toaddress) {this.toaddress = toaddress; } public string getUserName () {return userName; } public void setUserName (string userName) {this.username = nome de usuário; } public string getSBject () {retornar sujeito; } public void Setsubject (String sujeito) {this.subject = sujeito; } public string getContent () {return content; } public void setContent (string textContent) {this.content = textContent; } / *** @Descript: Obtenha propriedade de sessão de email* @return* / public Properties getProperties () {PropertyUtil PropertyUtil = new PropertyUtil (); Propriedades Propriedades = PropertyUtil.ReadProperties (); propriedades de retorno; }} Classe MyAuthenticator: User Authenticator
pacote e -mail; importar javax.mail.authenticator; importar javax.mail.passwordAuthentication; /** *@class: myauthenticator *@descritor: verificação do usuário *@Data: 26 de outubro de 2016 às 20:57:45 *@Autor sanghaiqin *@versão: v1.0 */public classe myauthenticator estende o autenticator {// userName string userName = null; // senha senha senha = null; public myauthenticator () {} public myauthenticator (nome de usuário da string, string senha) {this.username = nome de usuário; this.password = senha; } Proteged senhaTauthentication getPasswordAuthentication () {retorna nova senha da senha (nome de usuário, senha); }} Classe PropertyUtil: Obtenha Propriedades Classe de ferramentas de arquivo
pacote e -mail; importar java.io.fileInputStream; importar java.io.filenotfoundException; importar java.io.ioException; importar java.io.inputStream; importar java.util.properties; / ** *@class: PropertyUtil * @description: obtenha propriedades de ferramentas de arquivo de propriedades * @Data: 26 de outubro de 2016 às 20:20:10 * @Autor sanghaiqin * @versão: v1.0 */ public class PropertyUtil {/ ** ** *@Descript: carregando arquivo de recursos *@Param ResourceRce FileTrceRceTrurs *. InputStream inputStream = null; Propriedades Propriedades = new Properties (); // Use o InputStream para obter um arquivo de recurso, tente {inputStream = new FileInputStream (Resources); // carrega as propriedades do arquivo de configuração.load (inputStream); } catch (filenotfoundException e) {e.printStackTrace (); } catch (ioexception e) {e.printStackTrace (); } finalmente {if (inputStream! = null) {try {inputStream.close (); } catch (ioexception e) {e.printStackTrace (); }} retornar propriedades; } / ** * @Descript: Leia o arquivo da propriedade * @return * @throws fileNotfoundException * / public Properties readProperties () {String Resources = Propertyutil.class.getClassLoader (). getResource ("prop.Properties"). getPath (); Propriedades Propriedades = LoadProperties (Recursos); propriedades de retorno; } / *** @Descript: teste* @param args* / public static void main (string [] args) {PropertyUtil p = new PropertyUtil (); Propriedades pro = p.readProperties (); String MailSenderUserName = (String) Pro.get ("Mail.sender.username"); System.out.println ("Nome de usuário do remetente de correio:"+MailSenderUserName); // [email protected] String Path = Propertyutil.class.getclassloader (). GetResource ("Prop.Properties"). GetPath (); System.out.println (caminho); // /g:/workspaces4.4/test/bin/prop.properties}} Arquivos de recursos pro.properties:
#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #Endereço de e -mail do remetente e [email protected]
Javamail Class: Enviar caixa de correio
pacote e -mail; importar java.io.printwriter; importar java.io.stringwriter; importar java.io.unsupportEnCodingException; importar java.net.inetaddress; importar java.net.unknownhostException; importar java.util.date; importar java.util.properties; importar javax.activation.datahandler; importar javax.activation.dataSource; importar javax.activation.filedataSource; importar javax.mail.address; importar javax. javax.mail.bodypart; importar javax.mail.message; importar javax.mail.messagingException; importar javax.mail.multipart; importar javax.mail.session; importar javax.mail.transport; 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; / ** *@class: javamail *@descript: pacote jar necessário para enviar informações de correio de informações *: *fastjson-1.1.24.jar *javax.mail-1.5.6.jar *@Data: 26 de outubro de 2016 às 20:13:05 *@Authorhaiqin *@versão: v1.0 */ public Class Javamail {AuthaiMe // Obtenha o email do remetente através do remetente String Mail = desenvolvedor.getmail (info.getDeveloper ()); if (Mail! = NULL) {MailSenderInfo MailInfo = new MailSenderInfo (); // Defina o conteúdo de texto do emailinfo.setContent ("Responsabilidade:"+info.getDeveloper ()+"==> IP do servidor:"+inetAddress.getLocAlHost (). "+getemessage (info.gete ())); // Defina o endereço do destinatário de email MailInfo.settoaddress (email); // email sujeito a MailInfo.SetSubject ("Notificação de exceção Yika AITU"); // Envie email sendTextMail (MailInfo); }} catch (desconhecidoHosTexception e) {e.printStackTrace (); }} /*** @Descript: Enviar email no formato de texto* @param: informações de emailfo do email a serem enviadas* @return: envie true após o envio bem -sucedido; retornar false após falha */ public estático boolean sendTextMail (MailSenderInfo MailInfo) {// Determine se a autenticação de identidade é necessária MyAuthenticator autenticator = null; Propriedades Pro = MailInfo.getProperties (); tente {if ("true" .Trim (). Equals (pro.getProperty ("Mail.smtp.auth"))) {// Se for necessária autenticação, crie um autenticador de senha autenticator = new MyAuthenticator (pro.getProperty (Mailsnder.Username "), pro.s); } // Construa uma sessão para enviar e -mail com base nas propriedades da sessão de correio e na sessão de autenticator sessionSession = session.getDefaultInstance (pro, autenticator); // Crie uma mensagem de correio com base na mensagem da sessão MailMessage = new Mimemessage (SendmailSession); // Crie o remetente do endereço da mensagem de email de = new InternetAddress (pro.getProperty ("Mail.sender.address")); // Defina o remetente da mensagem de correio MailMessage.SetFrom (de); // Crie o endereço do destinatário da mensagem de email e defina -o como o endereço da mensagem de email para = new InternetAddress (MailInfo.gettoaddress ()); // message.recipientType.to Atributo indica que o tipo do destinatário é para correio // Defina o assunto da mensagem de email MailMessage.SetSubject (MailInfo.getSubject ()); // Defina o tempo para enviar a mensagem de correio MailMessage.SetSentDate (new Date ()); // Defina o conteúdo principal da mensagem de email MailMessage.Settext (MailInfo.getContent ()); // Enviar Mail Transport.send (MailMessage); retornar true; } catch (MessagingException Ex) {Ex.PrintStackTrace (); } retornar false; } /** * @Descript: Enviar e -mail no formato html * @param MailInfo: informações do e -mail a serem enviadas * @param anexo: conteúdo de anexo * @return: true quando enviado com sucesso; false quando falhado */ public estático booleano sendhtmlmail (MailSenderInfo Mailinfo, string [] anexamento) {// Determine se a autenticação de identidade é necessária MyAuthenticator autenticator = null; Propriedades Pro = MailInfo.getProperties (); tente {// Se for necessária autenticação de identidade, crie um autenticador de senha se ("true" .Trim (). Equals (pro.getProperty ("Mail.smtp.auth"))) {// Se a autenticação de identidade for necessária, crie um autenticador de senha = novo Myauthenticator (pro.getProperty ("Mail.sender.username"), pro.getProperty ("Mail.sender.password")); } // Construa uma sessão para enviar e -mail com base nas propriedades da sessão de correio e no autenticador de senha. Sessão sendmailSession = session.getDefaultInstance (pro, autenticator); // Crie uma mensagem de correio com base na mensagem da sessão MailMessage = new Mimemessage (SendmailSession); // Crie um endereço de endereço do remetente de correio de = new InternetAddress (pro.getProperty ("Mail.sender.address")); // Defina o remetente da mensagem de correio MailMessage.SetFrom (de); // Crie o endereço do destinatário da mensagem de email e defina -o como o endereço da mensagem de email para = new InternetAddress (MailInfo.gettoaddress ()); // message.recipientType.to Atributo indica que o tipo do destinatário é para correio // Defina o assunto da mensagem de email MailMessage.SetSubject (MailInfo.getSubject ()); // Defina o tempo para enviar mensagens de correio MailMessage.SetSentDate (new Date ()); // Classe MinimultiPart é uma classe de contêiner que contém um objeto de MimeBodyPart Type Multipart MainPart = new Mimemultipart (); // Crie um MimeBodyPart contendo conteúdo HTML BodyPart html = new MimeBodyPart (); // defina conteúdo html html.setContent (MailInfo.getContent (), "text/html; charset = utf-8"); // Adicionar conteúdo html MimeBodyPart MainPart.addbodyPart (html); // Adicione o conteúdo de anexo se (anexo! = Null) {for (string filepath: anexment) {mimebodypart filepart = new MimebodyPart (); DataSource Source = new FileDataSource (filepath); filepart.setDatahandler (New Datahandler (fonte)); tente {// O método que circula on -line para resolver nomes de arquivos iluminados é realmente muito conveniente para usar a mimeutility.Encodeword para resolver filepart.setFileName (Mimeutility.Encodeword (fonte.getName ()); } Catch (UnsupportEdEncodingException e) {E.PrintStackTrace (); } mainpart.addbodypart (filepart); }} // Defina o objeto Minimultipart para o conteúdo de email MailMessage.SetContent (MainPart); // Mantenha o conteúdo MailMessage.SaveChanges (); // envie MailTransport.send (MailMessage); retornar true; } catch (MessagingException Ex) {Ex.PrintStackTrace (); } retornar false; } / *** @Descript: Obtenha informações de exceção sobre o método do remetente* Use strings como os fluxos de entrada e saída de caracteres de nós físicos, ou seja, o uso do StringReader e StringWriter* PrintWriter (Writer Out, String AutofLush) Criar um novo PrintWriter com refrescamento de linha automático, retenções verdadeiras e refresco* @param) Crie informações de exceção** // StringWriter Output Exception Information StringWriter SW = new StringWriter (); PrintWriter PW = new PrintWriter (SW, True); E.PrintStackTrace (PW); pw.flush (); sw.flush (); retornar sw.toString (); } /*** @Descript: teste* @param args* /public static void main (string [] args) {// Teste 1: envie o formato de texto em e -mail no formato de texto Try {string s = ""; s.substring (2); } catch (Exceção e) {e.printStackTrace (); System.out.println (getemessage (e)); sendExceptionMail (nova exceção (desenvolvedor.sanghaiqin.getName (), "get ()", "123", e)); } // Teste 2: Envie email no formato html MailSenderInfo MailInfo = new MailSenderInfo (); Mailinfo.settoaddress ("[email protected]"); // Defina o endereço de e -mail do destinatário MailInfo.SetSubject ("Title"); MailInfo.setContent ("Conteúdo <H1> www.baidu.com </h1>"); String [] arquivos = {"g: /upload/image/2016/10/28/1477372845440.jpg", "g: /upload/image/2016/10/28/147737284560.jpg"}; Javamail.sendhtmlmail (Mailinfo, arquivos); // Envie o HTML Format System.out.println ("Enviar com sucesso"); }}Screenshot de teste:
Teste 1: Envie e -mails no formato de texto:
Teste 2: Envie e -mails no formato HTML:
Screenshot da estrutura do projeto:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.