1. Introdução ao e-mail
Um e-mail consiste em muitas informações. As informações principais são as seguintes. Outras não são consideradas por enquanto, como cópia carbono, etc.:
1. Destinatário: endereço de e-mail do destinatário, como [email protected]
2. Nome do destinatário: será exibido quando a maioria dos e-mails forem exibidos, como loadfate [email protected]
3. Remetente: endereço de e-mail do remetente
4. Nome do remetente:
5. Assunto: o título do email
6. Conteúdo e anexos: o conteúdo principal do email
2. Etapas gerais para envio de e-mails usando Java
Em projetos gerais, não existe um servidor de correio separado. Em geral, são usados servidores de outras pessoas.
1. Configure o servidor SMTP: Diferentes servidores de e-mail têm endereços diferentes. Por exemplo: smtp.qq.com representa o servidor SMTP da Tencent.
2. Autorização: Use a conta e senha do servidor para fazer login no servidor.
3. Crie um e-mail: Crie um e-mail contendo todas as informações, como remetente, destinatário, conteúdo, etc.
4. Defina as propriedades do email: adicione dados às propriedades do email.
5. Envio de e-mails: Como os pacotes são diferentes, os métodos de envio são inconsistentes.
3. Java Mail e Apache Mail
Apache Mail é um encapsulamento do Java Mail, que é mais fácil de usar e tem um melhor senso de hierarquia lógica.
Para usar o Java Mail, você só precisa importar um pacote jar: mail.jar.
Ao usar o Apache Mail, você precisa importar dois pacotes jar: mail.jar e commons-email-1.3.1.jar.
4. Use Java Mail para enviar e-mails
Copie o código do código da seguinte forma:
public static void main(String[] args) lança exceção {
string final usuário = "779554589";
senha final String = "";
String fromAddress = "[email protected]";
String toAddress = "[email protected]";
String subject = "Assunto do teste do e-mail";
String content = "Este é um e-mail de teste<b>haha</b>";
//Parâmetros de configuração
Propriedades adereços = new Propriedades();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.qq.com");
//Método 1: Use objeto de transporte para enviar e-mail
{
//Gera sessão através de parâmetros
Sessão sessão = Session.getInstance(props);
//Ativa o modo de depuração
sessão.setDebug(verdadeiro);
//Cria um e-mail e define informações
Mensagem mensagem = new MimeMessage(sessão);
mensagem.setFrom(novo InternetAddress(fromAddress));
mensagem.setSubject(assunto);
mensagem.setText(conteúdo);
//Criar transferência
Transporte transporte = session.getTransport();
//Conecta ao servidor smtp
transport.connect(usuário, senha);
//enviar
transport.sendMessage(mensagem, new InternetAddress[] { new InternetAddress(toAddress) });
transporte.close();
}
//Método 2: Use o método estático da classe Transport para enviar emails
{
//Obtém conexão autorizada ao gerar Session
Sessão sessão = Session.getInstance(props, new Authenticator() {
@Substituir
autenticação de senha protegida getPasswordAuthentication() {
retornar nova PasswordAuthentication(usuário, senha);
}
});
sessão.setDebug(verdadeiro);
//Cria um e-mail e define informações
Mensagem mensagem = new MimeMessage(sessão);
mensagem.setSubject(assunto);
mensagem.setFrom(novo InternetAddress(fromAddress));
mensagem.setRecipient(RecipientType.TO, novo InternetAddress(toAddress));
mensagem.setContent(conteúdo, "text/html;charset=utf-8");
//Envia diretamente, a mensagem é gerada através da Sessão autorizada
Transporte.send(mensagem);
}
}
5. Use Apache Mail para enviar e-mails
Copie o código do código da seguinte forma:
classe pública ApacheMailTest {
//servidor smtp
string privada hostName = "smtp.qq.com";
//Conta e senha
private String nome_do_usuário = "779554589";
private String password = "Este é um segredo";
// remetente
string privada fromAddress = "[email protected]";
//Nome do remetente
private String fromName = "loadfate";
public static void main(String[] args) lança exceção {
//Destinatário e nome do destinatário
String toAddress = "[email protected]";
String toName = "loadfate";
Teste ApacheMailTest = novo ApacheMailTest();
// Todas as exceções são tratadas para facilitar a navegação
test.sendSimpleEmail(toAddress, toName);
test.sendHtmlEmail(toAddress, toName);
test.sendMultiPartEmail(toAddress, toName);
System.out.println("Envio concluído");
}
//Envia um e-mail simples, semelhante a uma mensagem
public void sendSimpleEmail(String toAddress, String toName) lança exceção {
email SimpleEmail = new SimpleEmail();
email.setHostName(hostName); //Definir servidor smtp
email.setAuthentication(userName, password); //Definir informações de autorização
email.setCharset("utf-8");
email.setFrom(fromAddress, fromName, "utf-8");//Definir informações do remetente
email.addTo(toAddress, toName, "utf-8");//Definir informações do destinatário
email.setSubject("Assunto do Teste"); //Definir o assunto
email.setMsg("Este é um teste simples!"); //Definir o conteúdo do email
email.send(); //Enviar e-mail
}
//Envia e-mail com conteúdo HTML
public void sendHtmlEmail(String toAddress, String toName) lança exceção {
e-mail HtmlEmail = new HtmlEmail();
email.setHostName(hostName);
email.setAuthentication(nomedeusuário, senha);
email.setCharset("utf-8");
email.addTo(toAddress, toName, "utf-8");
email.setFrom(fromAddress, fromName, "utf-8");
email.setSubject("Este é um e-mail html");
// Defina o conteúdo HTML No uso real, você pode ler o código HTML escrito no texto.
email.setHtmlMsg("<div style='width:100px;height:200px;'>a</div>");
email.enviar();
}
//Enviar e-mails complexos, incluindo anexos, etc.
public void sendMultiPartEmail(String toAddress, String toName) lança exceção {
Email MultiPartEmail = null;
email = new MultiPartEmail();
email.setHostName(hostName);
email.setAuthentication(nomedeusuário, senha);
email.setCharset("utf-8");
email.addTo(toAddress, toName, "utf-8");
email.setFrom(fromAddress, fromName, "utf-8");
email.setSubject("Este é um email com anexos");
email.setMsg("<a href='#'>Testar conteúdo</a>");
//Adiciona conteúdo adicional ao e-mail
Anexo EmailAttachment = novo EmailAttachment();
attachment.setPath("D://mail.txt");//arquivo local
// attachment.setURL(new URL("http://xxx/a.gif"));//arquivo remoto
anexo.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription("Informações de descrição");
// Defina o nome de exibição do anexo, que deve ser codificado, caso contrário o chinês ficará ilegível
attachment.setName(MimeUtility.encodeText("Mail.txt"));
//Adiciona anexo ao e-mail
email.attach(anexo);
email.enviar();
}
}
6. Pasta do projeto de anexo: maildemo
Endereço para download: http://pan.baidu.com/s/1bn1Y6BX
Se você tiver alguma dúvida ou sugestão, entre em contato comigo
Descrição do arquivo:
1. maildemo.zip: código fonte do maildemo
2. mail.jar: pacote Jar do Java Mail
3. commons-email-1.3.1.jar: pacote jar do Apache Mail