Este artigo é o décimo segundo artigo da série VHR, com o endereço do projeto https://github.com/lenve/vhr
O envio de e -mail também é um problema comum. Embora o código seja simples, muitos amigos não entendem muito bem o processo, então eles ainda planejam falar com você sobre esse tópico.
Contrato de email
Muitas vezes ouvimos vários protocolos de email, como SMTP, POP3 e IMAP. Então, quais são as funções desses protocolos e quais são as diferenças? Vamos discutir esta questão primeiro.
O SMTP é um protocolo da camada de aplicativo com base no TCP/IP. Seu status é um pouco semelhante ao HTTP. O número de porta padrão do servidor SMTP é 25. Vendo isso, os amigos podem pensar que, como o protocolo SMTP é baseado no protocolo de camada de aplicativos TCP/IP, também posso enviar um email através do soquete? A resposta é sim.
Na vida, temos que seguir as seguintes etapas:
1. Xiao Wang, de Shenzhen, entregou o e -mail para os correios em Shenzhen
2. Os correios em Shenzhen entregarão e -mails aos correios em Xangai
3. Xiao Zhang de Xangai veio aos correios para pegar o e -mail
Esta é uma versão reduzida do processo de envio de correio na vida. Essas três etapas podem corresponder ao nosso processo de envio de email separadamente. Suponha que os e -mails sejam enviados de [email protected] para [email protected]:
[email protected] Primeiro entrega o e -mail ao servidor de correio da Tencent
2. O servidor de correio da Tencent entrega nosso e -mail para o servidor de email da NetEase
[email protected] Faça login no servidor de e -mail da NetEase para visualizar e -mails
A entrega de email é aproximadamente esse processo, que envolve vários protocolos. Vamos dar uma olhada separadamente.
O nome completo do protocolo SMTP é o Simple Mail Transfer Protocol, que é traduzido como um protocolo simples de transferência de correio. Ele define as regras de comunicação entre o software do cliente de email e o servidor SMTP e o servidor SMTP. Em outras palavras, o processo de entrega de emails ao servidor SMTP da Tencent usa primeiro o protocolo SMTP e, em seguida, o servidor SMTP da Tencent entrega emails para o servidor SMTP da NetEase ainda usa o protocolo SMTP, usado para receber e -mails. O nome completo do protocolo POP3 é o Protocolo dos Correios, que é traduzido como o protocolo dos correios. Ele define as regras de comunicação entre o cliente de email e o servidor POP3. Então, em que cenário esse protocolo será usado? Quando o email chega ao servidor SMTP da NetEase, o usuário [email protected] precisa fazer login no servidor para visualizar o email. No momento, o contrato é usado: o provedor de serviços de email fornecerá a cada usuário um espaço especial de armazenamento por e -mail. Depois que o servidor SMTP recebe o email, ele salva o email no espaço de armazenamento por email do usuário correspondente. Se o usuário quiser ler o email, ele precisará ser concluído através do servidor de email Pop3 do provedor de serviços de e -mail. Finalmente, alguns amigos podem ter ouvido falar do protocolo IMAP, que é uma extensão do protocolo POP3, com funções mais fortes e funções semelhantes. Não vou repetir aqui.
Preparação para enviar e -mails QQ
Primeiro de tudo, precisamos fazer login na versão da Web de e -mail QQ e clicar no botão Configurações acima:
Em seguida, clique na guia Contas:
Encontre a opção de ativar o POP3/SMTP na guia da conta, como segue:
Clique para ativar as funções relevantes. O processo de ativação requer verificação do número de telefone celular. Basta seguir as etapas e não elaborar. Depois de ser ativado com sucesso, você pode obter um código de autorização, salvar o número e usá -lo por um tempo.
Então precisamos do pacote Javaxmail JAR. Os amigos podem baixá -lo diretamente no MAVEN CENTRAL Warehouse. Não vou para os seguintes detalhes aqui.
enviar
E -mail simples
Se enviarmos apenas um texto simples, o método de envio será relativamente simples. Todo o processo pode ser dividido em três etapas da seguinte forma:
Etapa 1: Construa o ambiente básico do servidor de correio SMTP
Propriedades Propriedades = new Properties (); Properties.SetProperty ("Mail.host", "smtp.qq.com"); Properties.setProperty ("Mail.Transport.protocol", "Smtp"); Properties.SetProperty ("Mail.stp.auth", "true"); Properties.SetProperty ("Mail.smtp.socketFactory.class", "javax.net.sssl.sssocktFactory"); Properties.setProperty ("Mail.smtp.port", "465"); sessão = sessão = session.getDeFaultInStance (Propriedades); session.setDebug (true);Etapa 2: Construa o email
Mimemessage Mimemessage = New Mimemessage (Sessão); Mimemessage.addrecipients (Message.recipientType.to, "[email protected]"); // Defina o destinatário Mimemessage.addrecipients (Message.recipienttype.cc, "[email protected]); Mimemessage.SetFrom ("[email protected]"); // Envie por e-mail Mimemessage.SetSubject ("Assunto do email de teste"); // Tópico de e-mail Mimemessage.SetContent ("Hello, este é um email de teste", "Texto/Html; Carro-Text = Utf-8");
Etapa 3: Enviar e -mail
Transporte transport = session.getTransport (); transport.connect ("smtp.qq.com", "[email protected]", "o código de autorização acabou de solicitar"); transport.sendMessage (Mimemessage, Mimemessage.getAllrecipients (); // envia um email, o segundo parâmetro é o receptor transport.E -mails complexos
Ao enviar e -mails complexos, os primeiros e terceiros passos são os mesmos. Somente a segunda etapa é mais problemática na construção de e -mails. Em seguida, deixe -me demonstrar a você um e -mail que envia uma foto e texto + dois anexos. Para enviar e -mails complexos, você deve primeiro estar familiarizado com três conceitos, como segue:
1.Mimemessage: Esta classe é uma mensagem de email que pode entender os tipos e cabeçalhos de MIME.
2.Mimemultipart: Esta classe define métodos para adicionar, excluir e obter diferentes partes do email
3.MimeBodyPart: Este objeto representa uma parte do conteúdo de um objeto Mimemessage. Cada MimebodyPart é considerado como tendo duas partes: tipo MIME e conteúdo correspondente a este tipo
O processo completo de geração de e -mail é o seguinte (veja acima para os primeiros e terceiros passos):
Mimemessage Mimemessage = New Mimemessage (Sessão); Mimemessage.addrecipients (Message.recipientType.to, "[email protected]"); // Defina o destinatário Mimemessage.addrecipients (Message.recipienttype.cc, "[email protected]); Mimemessage.SetFrom ("[email protected]"); // envie um email para remetente Mimemessage.SetSubject ("Teste de e -mail tópico"); // Tópico de e -mail Mimemultipart Mixed = MIMEMULTIPART (MIMEPO "); MIMEMESSAGE. MimebodyPart (); // Crie anexo 1MimeBodyPart Anex2 = new MimeBodyPart (); // Crie anexo 2MimebodyPart Content = new MimeBodyPart (); // Crie o corpo de e -mail misturado.AddbodyPart (Anex1); // ADCENHENE ANEXO A MENSEGN MENSEGN mixed.AddBoTBOrT (2); Anexe // Anexe o anexo ao MIME Mensagem Mixed. mixed.addbodyPart (conteúdo); // Adicione o corpo ao corpo da mensagem fileDataSource fds1 = new FileDataSource (novo arquivo ("c: //users//sang//desktop//1.png"); Anexe1.setDatahandler (dh1); // Defina a fonte de dados do anexo 1 anexado1.setFilename ("1.png"); // Defina o nome do arquivo do anexo 1 // A operação do anexo 2 é semelhante ao anexo 1, portanto, não comentaremos cada um aqui. FileDataSource fds2 = new FileDataSource (novo arquivo ("c: // usuários // sang // desktop // blog note.xlsx")); datahandler dh2 = new DataHandFilename (mimeutility); Nome, se houver chinês, você pode codificá -lo através do método do codetext na classe de mimeutilidade para evitar mimmultipart bodymiMemultipart de MiMemultipart ("Relacionado"); // Defina o tipo MIME do corpo do corpo. MimebodyPart (); // HTML Parte do BodyPart.SetContent ("<H1> Olá a todos, este é um email de teste <img src = 'cid: 2.png' // </h1>", "text/html; charset = utf-8); new Datahandler (novo Filedatasource ("c: //users//sang//desktop//2.png")); picpart.setDatahandler (Datahandler); picpart.setContentId ("2.png"); // Adicione as partes html e a imagem do corpo a bodymimultipart. bodymimemultipart.addbodypart (picpart); Mimemessage.SaveChanges ();
OK, é simples enviar e -mails QQ por Java Mail. Quanto a outras coisas como 163, Sina etc., o estilo de escrita é semelhante, não vou elaborar aqui.
Resumir
O exposto acima é o código de implementação da função de email QQ no Springboot, introduzido no editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!