A API do Javamail usa a classe javax.mail.message para representar uma mensagem. A classe de mensagens é uma classe abstrata, por isso precisamos usar sua classe Javax.mail.internet.mimemessage para criar um objeto de instância da classe de mensagem. Se criarmos uma mensagem de texto simples, a classe Mimemessage poderá atender às nossas necessidades. No entanto, se precisarmos criar um email complexo contendo recursos ou anexos incorporados, precisamos usar classes como Mimemessage, javax.mail.internet.mimebodypart e javax.mail.internet.mimemultipart na API Javamail.
1. A classe Mimemessage representa todo o e -mail
2. A classe MimebodyPart representa uma mensagem MIME do e -mail
3. A classe Mimemultipart representa uma mensagem MIME combinada composta por várias mensagens MIME.
A relação de trabalho dessas três classes é mostrada na figura abaixo:
Embora os desenvolvedores de aplicativos geralmente precisem usar apenas as três classes principais: Mimemessage, MimebodyPart e Mimemultipart ao criar conteúdo de email usando Javamailapi, também é necessário entender o relacionamento de herança de classe. A figura a seguir lista as relações de herança e os métodos comuns dessas três classes.
Em seguida, use a classe javax.mail.internet.mimemessage para criar uma mensagem de texto simples.
importar java.util.date; importar java.util.properties; importar javax.mail.message; importar javax.mail.session; importar javax.mail.internet.internetTAddress; importpututput.Mail.Internet.mimemessage; importação javA.io.fileOutputes; args) lança a exceção {string de = "[email protected]"; String para = "[email protected]"; String sujeito = "teste"; String body = "teste !!!"; // Crie sessão de objeto de instância de sessão session = session.getDefaultInstance (new Properties ()); // Crie Mimemessage Instância MIMEMESSAGE MSG = new Mimemessage (Sessão); // Definir remetente msg.setFrom (new InternetAddress (de)); // Definir Msg.SetRecipients (message.recipientType.to, InternetAddress.parse (to)); // defina data de envio msg.setsentdate (new date ()); // Defina o assunto de email msg.setsubject (sujeito); // defina o corpo de email do conteúdo de texto simples msg.settext (corpo); // salvar e gerar o conteúdo final de email msg.savechanges (); // Escreva o conteúdo do objeto Mimemessage no arquivo msg.writeto (new FileOutputStream ("c: //test.eml"); }}Usamos o cliente de email (usando o Foxmail aqui) para abrir o arquivo test.eml sob a unidade C e você pode ver as seguintes informações, indicando que nosso email foi criado com sucesso.
Aqui está uma breve explicação de algumas das classes que aparecem acima
1. MIMEMESSAGE CLASS: O acima introduzido que Mimemessage é uma classe de implementação concreta da classe de mensagem, usada para criar um objeto de instância da classe de mensagem. Aqui o construtor passa um objeto de sessão como um parâmetro;
2. Classe de sessão: Este objeto é usado para coletar informações de conexão de rede entre o cliente e o servidor de email e definir as informações do ambiente necessárias para definir o programa de email inteiro. Esta informação é armazenada no objeto de sessão como os atributos do objeto de sessão. O objeto de sessão usa o objeto java.util.properties para obter o servidor de correio, nome de usuário, informações de senha e informações compartilhadas que todo o aplicativo precisa usar. Como o construtor da classe de sessão é privado, usamos o método de fábrica estática de getDefaultInstance () fornecido pela classe de sessão para obter um objeto de sessão padrão;
3. Aqui, um conjunto vazio é construído como um parâmetro;
4. Classe do InternetAddress: Esta classe é uma subclasse da classe de endereço de classe abstrata, usada para criar um endereço de e -mail;
5. Esta classe possui 3 variáveis estáticas. Para representar o destinatário, o CC representa o remetente do CC (o destinatário conhece o remetente do CC) e o BCC representa o remetente secreto do remetente (o destinatário não conhece o remetente secreto do remetente).
O email acima contém apenas texto simples. Às vezes, precisamos usar arquivos HTML para enriquecer nosso corpo de email, como o uso de tags HTML para digitar o corpo de email e usar tags HTML para introduzir algumas imagens ou sons no corpo de email. O código a seguir cria um email contendo formato HTML
importar java.util.date; importar java.util.properties; importar javax.mail.message; importar javax.mail.session; importar javax.mail.internet.internetTaddress; import javax.mail.internet.mimesessage; importação java.io.fileOutputputput.Mail.Internet.mimessage; main (string [] args) lança a exceção {string de = "[email protected]"; String para = "[email protected]"; String sujeito = "teste"; String body = "<H4> Bem -vindo a ler este email </h4>"; // Crie sessão de objeto de instância de sessão session = session.getDefaultInstance (new Properties ()); // Crie Mimemessage Instância MIMEMESSAGE MSG = new Mimemessage (Sessão); // Definir remetente msg.setFrom (new InternetAddress (de)); // Definir Msg.SetRecipients (message.recipientType.to, InternetAddress.parse (to)); // defina data de envio msg.setsentdate (new date ()); // Defina o assunto de correio msg.setsubject (sujeito); // Defina o formato HTML Email Body Msg.setContent (Body, "Text/html; charset = GB2312"); // Salvar e gerar o conteúdo final de email msg.saveChanges (); // Escreva o conteúdo do objeto Mimemessage no arquivo msg.writeto (new FileOutputStream ("c: //test.eml"); }}Usaremos o Foxmail para abrir o teste.eml e a seguinte tela
A diferença do código anterior é que, quando definimos o conteúdo de email, usamos o método setContent em vez do método setText e especificamos o tipo MIME do corpo de email como texto/html.
Agora, aprendemos a criar e -mails com tags HTML, mas às vezes podemos precisar inserir algumas imagens no email para expressar nosso significado de forma mais intuitivamente. Então precisamos usar a classe Mimemultipart e a classe MimebodyPart
importar java.io.fileOutputStream; importar java.util.properties; importar javax.activation.datahandler; importar javax.activation.filedatasource; importação javax.mail.message; importetadertAx.mail.session; importação javax.mail.innternet.interntern; javax.mail.internet.mimebodypart; importar javax.mail.internet.mimemessage; importar javax.mail.internet.mimemultipart; public class pictureMessage {public static void main (string [] args) lança exceção {de = "[email protected]"; // Endereço do destinatário String Subject = "HTML email"; String body = "<a href = http: //www.cnblogs.com>" + "Bem -vindo ao jardim do blog </a> </br>" + "<img src =/" c: //dog.jpg/ ">"; Sessão session = session.getDefaultInstance (new Properties ()); // Crie um objeto Mimemessage e defina vários campos de cabeçalho de mensagem MIMEMESSAGE MENSAGEM = NOVA MIMEMESSAGE (SESSÃO); message.setFrom (new InternetAddress (de)); message.setRecipients (message.recipientType.to, internetAddress.parse (to)); message.SetSubject (sujeito); // Crie um objeto Mimemultipart com subtipo "relacionado". MIMEMULTIPART Multipart = new Mimemultipart ("Relacionado"); /** Crie um objeto MimeBodyPart que represente o corpo HTML e adicione -o ao objeto Mimemultipart criado anteriormente*/ MimeBodyPart htmlBodyPart = new MimebodyPart (); htmlbodypart.setContent (corpo, "text/html; charset = gb2312"); multipart.addbodypart (htmlbodypart); /** Crie um objeto MimeBodyPart representando o conteúdo da imagem e adicione -o ao objeto Mimemultipart criado anteriormente*/ MimeBodyPart gifbodyPart = new MimeBodyPart (); Filedatasource fds = new FileDataSource ("c: //dog.jpg"); gifbodypart.setFilename (fds.getName ()); gifbodypart.setDatahandler (New Datahandler (FDS)); multipart.addbodyPart (gifbodypart); /** Defina o objeto Mimemultipart com o conteúdo de toda a mensagem, preste atenção ao chamar o método Savechanges para atualizações*/ message.setContent (multipart); message.SaveChanges (); // Escreva o conteúdo do objeto Mimemessage no arquivo message.writeto (new FileOutputStream ("c: //pictureMessage.eml")); }}O código parece um pouco complicado. Você pode dar uma olhada no diagrama de relacionamento da Mimemessage acima mencionada, Mimemultipart e MimebodyPart. Isso tornará mais fácil entender o código acima. Abrimos pictureMessage.eml e vemos as seguintes informações, que mostram que criamos com sucesso um email com uma imagem, e a imagem está incluída no email na forma de um anexo.
Mimemultipart tem dois construtores.
public Mimemultipart () Public Mimemultipart (String Subtype)
O primeiro é sem parâmea e o objeto de instância padrão tem um tipo MIME misto. O segundo formula um tipo para criar um objeto de instância da classe Mimemultipart. Existem três tipos comumente usados: misto, relacionados e alternativos. A relação combinada desses três tipos em MIME é a seguinte:
Agora, usamos o relacionamento de combinação mostrado acima para criar uma mensagem com um anexo e um recurso incorporado no corpo.
importar java.io.fileOutputStream; importar java.util.properties; importar javax.activation.datahandler; importar javax.activation.filedatasource; importação javax.mail.message; importetadertAx.mail.session; importação javax.mail.innternet.interntern; javax.mail.internet.mimebodypart; importar javax.mail.internet.mimemessage; importar javax.mail.internet.mimemultipart; public classe complexMessage {public static void main (string [] args) lança Excepção {session = session.getDefaultInStance (string [] args) MENSAGEM MIMEMESSAGE = CreateMessage (sessão); message.writEto (new FileOutputStream ("c: //complexMessage.eml")); } public static Mimemessage CreateMessage (sessão) lança Exceção {String de = "[email protected]"; // String de endereço do remetente para = "[email protected]"; // Endereço do destinatário String Subject = "HTML email"; // email Assunto String Body = "<a href = http: //www.cnblogs.com>" + "Bem -vindo ao parque do blog </a> </br>" + "<img src =/" c: //dog.jpg/ ">"; Mensagem Mimemessage = new Mimemessage (sessão); message.setFrom (new InternetAddress (de)); message.setRecipients (message.recipientType.to, internetAddress.parse (to)); message.SetSubject (sujeito); // Crie cada objeto MimeBodyPart que representa o corpo da mensagem e anexo MimeBodyPart ContentPart = CreateContent (corpo, "c: //dog.jpg"); // O anexo a seguir pode ser de vídeo ou áudio MimeBodyPart AnextPart1 = CreateAtTachment ("c: //music.mp3"); MimeBodyPart AnextPart2 = CreateAtTachment ("c: //video.avi"); // Crie um objeto Mimemultipart para combinar o corpo da mensagem e o anexo Mimemultipart allmultipart = new Mimemultipart ("Mixed"); allmultipart.addbodypart (contentpart); allmultipart.addbodypart (AppTPart1); allmultipart.addbodypart (AppticPart2); // Defina o conteúdo inteiro de email como o objeto MIMEMULTIPART FINAL MESSEGN.SETCONTENT (AllMultipart); message.SaveChanges (); devolver mensagem; } public estático MimeBodyPart CreateContent (String Body, String FileName) lança a exceção { /** Crie um objeto Mimemultipart que representa a mensagem MIME combinada, e o objeto MimeBodyPart ao qual o objeto Mimemultipart é salvo* / MimeBodyPart ContentPart = New Mimebodypart (); Mimemultipart contentMultipart = new Mimemultipart ("Relacionado"); /** Crie um objeto MimeBodyPart para salvar o corpo HTML e salvá -lo para Mimemultipart*/ MimeBodyPart htmlBodyPart = new MimebodyPart (); htmlbodypart.setContent (corpo, "text/html; charset = gb2312"); contentmultipart.addbodypart (htmlbodypart); /** Crie um objeto MimeBodyPart para salvar a imagem e salvá -lo para Mimemultipart*/ MimeBodyPart gifbodyPart = new MimebodyPart (); FILEDATASOURCE FDS = new FileDataSource (nome do arquivo); gifbodypart.setDatahandler (New Datahandler (FDS)); contentmultipart.addbodypart (gifbodypart); // Salvar o objeto Mimemultipart com o objeto MimeBodyPart ContentPart.SetContent (ContentMultipart); retornar contentPart; } public estático MimeBodyPart CreateAtTachment (String FileName) lança Exceção {// Crie um objeto MimeBodyPart que salva o anexo e adicione o conteúdo de anexo e a informação correspondente MimeBodyPart AnextPart = new MimeBodyPart (); FILEDATASOURCE FDS = new FileDataSource (nome do arquivo); AppticPart.setDatahandler (New Datahandler (FDS)); ATCHPART.SETFILENAME (fds.getName ()); return AnextPart; }}Abra o arquivo ComplexMessage.eml e você pode ver o seguinte conteúdo:
Agora, aprendemos a criar um email de texto simples, um email com formato HTML e um email com imagens e anexos incorporados. O próximo artigo introduzirá como enviar e -mails javamail começar com o terceiro artigo Enviar email
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.