Vários envios e verificação do usuário
Primeiro, o seguinte introduzirá como enviar e -mails para vários destinatários e como usar o objeto de autenticadores para obter a autenticação do usuário.
Ao especificar um destinatário, podemos ter duas maneiras de especificá -lo. O blog anterior especificou temporariamente o destinatário ao enviar um email e pode ser especificado no objeto da mensagem.
message.addrecipient (message.recipientType.to, new InternetAddress ("[email protected]")); Isso é apenas para enviá -lo para um destinatário, mas como lidar com isso com vários destinatários? Há também duas maneiras de lidar com isso.
1. Ao enviar e -mails, o método de transporte sendMessage () usa uma matriz para especificar o destinatário. No momento, precisamos adicionar apenas mais endereços de destinatários para concluí -lo.
2. Ao usar o objeto de mensagem para adicionar destinatários, podemos usar o método Parse (String String) do objeto InternetRdress. Este método retorna uma matriz do InternetAddress, que também pode ser enviada para vários destinatários.
Sabemos que, ao desenvolver o Javamail, devemos executar a verificação da autorização. O objetivo da verificação da autorização é impedir que outras pessoas enviem e -mails arbitrariamente e reduza a geração de spam.
Podemos verificar ao obter o objeto de sessão. Existem dois métodos no objeto de sessão:
Ambos os métodos têm um autenticador de parâmetro comum, que é um objeto autenticador. O objeto Authenticator ajuda os usuários a verificar informações e concluir a verificação da autorização. Existe um método getPasswordAuthentication () no objeto autenticador. Este método retorna um objeto PasswordAuthentication. Existem dois métodos no objeto PasswordAuthentication: getPassword () e getUserName (), o que significa que encapsulamos a senha e o nome de usuário no objeto PasswordAuthentication. Através desses dois métodos, podemos obter o nome de usuário e a senha. A verificação das informações do usuário pode ser concluída.
Exemplos são os seguintes:
classe pública javamail_02 {public static void main (string [] args) lança exceção {Propriedades props = new Properties (); props.setProperty ("Mail.smtp.auth", "true"); props.setProperty ("Mail.Transport.Protocol", "SMTP"); props.setProperty ("Mail.host", "smtp.163.com"); Sessão session = session.getInstance (props, new Authenticator () {Protected PasswordAuthentication getPasswordAthentication () {return New PasswordAuthentication ("******", "*********");}}); session.setDebug (true); Mensagem msg = new Mimemessage (sessão); msg.setFrom (novo InternetAddress ("[email protected]")); msg.SetSubject ("Programa de teste de Javamail ..."); msg.setContent ("<span style = 'cor: vermelho'> Este é o meu segundo programa de teste de javamail .... </span>", "text/html; charset = gbk"); //msg.setrecipients(recipientType.to, novo endereço [] {new InternetAddress ("1111 @@ qq.com"), new InternetAddress ("[email protected]")}); msg.setRecipients (receptorype.to, InternetAddress.parse ("[email protected], [email protected]")); Transport.send (msg); }} E -mail com fotos e anexos
Em e -mails reais, geralmente envolvemos estruturas de email mais complexas, como anexos, fotos, músicas etc. No momento, devemos ter um entendimento claro da estrutura do email. Antes de desenvolver email composto, você precisa ter um certo entendimento da estrutura de e -mails compostos.
A imagem acima mostra a estrutura geral de um email composto e podemos ver que um email complexo consiste em várias partes. Ele tem um cabeçalho e corpo, mas o corpo não é tão simples como antes, mas consiste em várias partes. A cabeça precisa servir como uma indicação, que precisa explicar que tipo de separador usar para separar o texto e quais relacionamentos de combinação são usados entre as partes do texto. Para o email acima, ele consiste em três partes, cada uma com sua própria cabeça e corpo, e a primeira parte também é composta por duas partes.
Relação combinada de e -mail composto:
Existem muitas combinações entre as principais partes do texto. O relacionamento de combinação é o seguinte:
Alternativa: Selecione Relacionamento. O texto simples e o hipertexto acima é um relacionamento de escolha.
Relacionado: relacionamento afiliado. Se o texto de hipertexto acima exibir uma imagem, quando enviarmos um email, devemos incluir a imagem no email, que é o chamado recurso incorporado, que é para hipertexto. Portanto, há uma relação entre os dois.
Misto: relacionamento misto. Texto simples, hipertexto e recursos incorporados formam um todo e são justapostos a anexos, e há uma relação mista entre os dois.
API para estrutura de organização de correio composto:
A classe Mimemessage representa todo o email.
A classe MimebodyPart representa uma mensagem MIME do email.
A classe Mimemultipart representa uma mensagem MIME combinada composta por várias mensagens MIME.
O exemplo a seguir: o email contém dois anexos, a parte principal inclui texto simples e hipertexto, e o hipertexto significa exibir uma imagem. O código -fonte é o seguinte:
classe pública javamail_03 {public static void main (string [] args) lança exceção {Propriedades props = new Properties (); props.setProperty ("Mail.smtp.auth", "true"); props.setProperty ("Mail.Transport.Protocol", "SMTP"); props.setProperty ("Mail.host", "smtp.163.com"); Sessão session = session.getInstance (props, new Authenticator () {Protected PasswordAuthentication getPasswordAthentication () {return New PasswordAuthentication ("***", "******");}}); Mensagem mensagem = new Mimemessage (sessão); Message.SetSubject ("Terceiro Programa de Teste de Javamail"); Message.setFrom (novo InternetAddress ("/" "+Mimeutility.Encodetext (" Chen Ming ")+"/"<[email protected]>")); message.setRecipients (receptorype.to, novo endereço [] {new InternetAddress ("[email protected]")}); // Mail Texto MIMEMULTIPART Multipart = new Mimemultipart ("Mixed"); message.setContent (multipart); /** O conteúdo da mensagem* inclui um corpo de email e dois anexos*/ MimeBodyPart Content = new MimeBodyPart (); // Mail Content MimeBodyPart Anex1 = new MimeBodyPart (); // Anexo 1 MimeBodyPart Anex2 = new MimeBodyPart (); // Anexo 2 // Adicione o conteúdo de email ao multipart multipart.addbodypart (conteúdo); multipart.addbodypart (attch1); multipart.addbodypart (attch2); // Defina o anexo 1 DataSource DS1 = new FileDataSource ("g: // ebook // oracle senha.txt"); Datahandler dh1 = new Datahandler (DS1); anexe1.setDatahandler (DH1); anexe1.setFilename ("oracle.txt"); // Defina o anexo 2 DataSource DS2 = new FileDataSource ("g: //ebook//account.txt"); Datahandler dh2 = new Datahandler (DS2); anex2.setDatahandler (DH2); Anext2.SetFilename (Mimeutility.EncodeText ("Account.txt")); /** Definir conteúdo (texto) ---- é um corpo complexo* incluindo texto html e exibição de uma imagem*/ Mimemultipart bodymultipart = new Mimemultipart ("Relacionado"); content.setContent (BodyMultipart); // Construa o texto MimeBodyPart htmlbody = new MimeBodyPart (); MimebodyPart gifbody = new MimeBodyPart (); bodymultipart.addbodypart (htmlbody); bodymultipart.addbodypart (gifbody); // Defina o conjunto de dados GIFDS = new FileDataSource ("f: //picture//picture//4.jpg"); Datahandler gifdh = new Datahandler (GIFDS); gifbody.setDatahandler (gifdh); gifbody.setheader ("content-id", "<"+gifds.getName ()+">"); //gifbody.setheader("content-cocation "," http://www.itcast.cn/logo.gif "); // Defina o corpo html htmlbody.setContent ("<span style = 'cor: vermelho; tamanho da fonte: 16px'> Este é o meu terceiro teste de javamail! message.SaveChanges (); // gerar transporte de email.send (mensagem); }}