Aprendi sobre o Javamail hoje. Para a conveniência do uso futuro, escrevi um código de código e digitei -o em um pacote JAR para a conveniência do uso futuro. hehe
Os três códigos a seguir são todos os meus códigos. Como não sei como fazer upload do pacote JAR para Javaeye, os amigos voltam e fazem isso sozinhos.
Meu código tem três classes:
A primeira aula: MailSenderInfo.java
A cópia do código é a seguinte:
pacote com.util.mail;
/**
* Informações básicas necessárias para enviar e -mails
*/
importar java.util.properties;
classe pública MailSenderInfo {
// o IP e a porta do servidor que envia o e -mail
Private String MailServerHost;
private string MailServerport = "25";
// o endereço do remetente do email
string privada de address;
// O endereço do destinatário de email
Toaddress de cordas privadas;
// Faça login no nome de usuário e senha do servidor de envio de email
Nome de usuário privado de string;
senha de sequência privada;
// é autenticação necessária
Validado booleano privado = false;
// Assunto do e -mail
Assunto de String Private;
// O conteúdo de texto do email
conteúdo privado de string;
// Nome do arquivo do anexo de email
String privada [] AnextFilenames;
/**
* Obtenha atributos de sessão de e -mail
*/
Propriedades públicas getProperties () {
Propriedades p = new Properties ();
p.put ("Mail.smtp.host", this.MailServerHost);
p.put ("Mail.smtp.port", this.mailServerport);
p.put ("Mail.smtp.auth", validate? "true": "false");
retornar p;
}
public String getMailServerHost () {
Retornar MailServerHost;
}
public void SetmailServerHost (String MailServerHost) {
this.MailServerHost = MailServerHost;
}
public String getMailServerport () {
retornar o MailServerport;
}
public void SetmailServerport (String MailServerport) {
this.mailServerport = MailServerport;
}
public boolean isValidate () {
retornar validar;
}
public void SetValidate (validar booleano) {
this.validate = validate;
}
public String [] getAtTachfilenames () {
return attnetfilenames;
}
public void setTattachfileNames (String [] FileNames) {
this.attachfilenames = nomes de arquivo;
}
public String getFromaddress () {
retornar de address;
}
public void setFromaddress (String fromaddress) {
this.FromAddress = FromAddress;
}
public String getPassword () {
retornar senha;
}
public void setPassword (senha da string) {
this.password = senha;
}
public string gettoaddress () {
retornar toaddress;
}
public void Settoaddress (String Toaddress) {
this.ToAddress = Toaddress;
}
public String getUserName () {
retornar nome de usuário;
}
public void SetUserName (String UserName) {
this.UserName = Nome de usuário;
}
public string getSuBject () {
sujeito de retorno;
}
public void Setsubject (sujeito da string) {
this.subject = sujeito;
}
public String getContent () {
retornar conteúdo;
}
public void setContent (String textContent) {
this.content = textContent;
}
}
A segunda classe: SimpleMailsender.java
A cópia do código é a seguinte:
pacote com.util.mail;
importar java.util.date;
importar java.util.properties;
importar javax.mail.address;
importar 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;
/**
* Remetente simples de correio (e -mail sem anexos)
*/
classe pública Simplemailsender {
/**
* Envie e -mails em formato de texto
* @param Mailinfo Informações sobre o email a ser enviado
*/
public boolean SendTextMail (MailSenderInfo Mailinfo) {
// determinar se a autenticação de identidade é necessária
MyAuthenticator autenticator = null;
Propriedades Pro = MailInfo.getProperties ();
if (MailInfo.isValidate ()) {
// Se for necessária autenticação de identidade, crie um autenticador de senha
autenticator = new MyAuthenticator (MailInfo.getUserName (), MailInfo.getPassword ());
}
// Construa uma sessão para enviar e -mails com base nas propriedades da sessão de e -mail e no validador de senha
Sessão sendmailSession = session.getDefaultInstance (pro, autenticator);
tentar {
// Crie uma mensagem de correio com base na sessão
Mensagem MailMessage = New Mimemessage (SendmailSession);
// Crie o endereço do remetente de e -mail
Endereço de = new InternetAddress (MailInfo.getFromaddress ());
// Defina o remetente da mensagem de e -mail
MailMessage.SetFrom (de);
// Crie o endereço do destinatário do email e defina -o para a mensagem de email
Endereço para = new InternetAddress (MailInfo.gettoaddress ());
MailMessage.SetRecipient (message.recipientType.to, para);
// Defina o assunto da mensagem de e -mail
MailMessage.SetSubject (MailInfo.getSubject ());
// Defina o tempo para enviar mensagens de e -mail
MailMessage.SetSentDate (new Date ());
// Defina o conteúdo principal da mensagem de email
String MailContent = MailInfo.getContent ();
MailMessage.Settext (MailContent);
// Enviar e -mail
Transport.send (MailMessage);
retornar true;
} catch (MessagingException Ex) {
Ex.PrintStackTrace ();
}
retornar falso;
}
/**
* Envie e -mails no formato HTML
* @Param Mailinfo Mail Information for Envie
*/
public static boolean sendhtmlmail (MailSenderInfo Mailinfo) {
// determinar se a autenticação de identidade é necessária
MyAuthenticator autenticator = null;
Propriedades Pro = MailInfo.getProperties ();
// Se for necessária autenticação de identidade, crie um autenticador de senha
if (MailInfo.isValidate ()) {
autenticator = new MyAuthenticator (MailInfo.getUserName (), MailInfo.getPassword ());
}
// Construa uma sessão para enviar e -mails com base nas propriedades da sessão de e -mail e no validador de senha
Sessão sendmailSession = session.getDefaultInstance (pro, autenticator);
tentar {
// Crie uma mensagem de correio com base na sessão
Mensagem MailMessage = New Mimemessage (SendmailSession);
// Crie o endereço do remetente de e -mail
Endereço de = new InternetAddress (MailInfo.getFromaddress ());
// Defina o remetente da mensagem de e -mail
MailMessage.SetFrom (de);
// Crie o endereço do destinatário do email e defina -o para a mensagem de email
Endereço para = new InternetAddress (MailInfo.gettoaddress ());
// message.recipienttype.to atributo indica que o tipo do receptor é para
MailMessage.SetRecipient (message.recipientType.to, para);
// Defina o assunto da mensagem de e -mail
MailMessage.SetSubject (MailInfo.getSubject ());
// Defina o tempo para enviar mensagens de e -mail
MailMessage.SetSentDate (new Date ());
// Classe Minimultipart é uma classe de contêiner que contém objetos do tipo MimebodyPart
Multipart MainPart = new Mimemultipart ();
// Crie um MimeBodyPart contendo conteúdo HTML
BodyPart html = new MimeBodyPart ();
// Defina o conteúdo HTML
html.setContent (MailInfo.getContent (), "text/html; charset = utf-8");
mainpart.addbodypart (html);
// Defina o objeto Minimultipart para enviar o conteúdo
MailMessage.SetContent (MainPart);
// Enviar e -mail
Transport.send (MailMessage);
retornar true;
} catch (MessagingException Ex) {
Ex.PrintStackTrace ();
}
retornar falso;
}
}
A terceira categoria: myauthenticator.java
A cópia do código é a seguinte:
pacote com.util.mail;
importar javax.mail.*;
classe pública myauthenticator estende o autenticador {
String nome de usuário = null;
String senha = null;
public myauthenticator () {
}
public myauthenticator (nome de usuário da string, senha de string) {
this.UserName = Nome de usuário;
this.password = senha;
}
Protected PasswordAuthentication getPasswordAuthentication () {
return nova senha ethentication (nome de usuário, senha);
}
}
A seguir, é apresentado o código usando as três classes acima:
A cópia do código é a seguinte:
public static void main (string [] args) {
// Esta classe configura principalmente o email
MailSenderInfo MailInfo = new MailSenderInfo ();
MailInfo.setMailServerHost ("smtp.163.com");
MailInfo.setMailServerport ("25");
MailInfo.setValidate (true);
MailInfo.setUsername ("[email protected]");
MailInfo.setPassword ("*********"); // sua senha de email
Mailinfo.setFromaddress ("[email protected]");
Mailinfo.settoaddress ("[email protected]");
MailInfo.SetSubject ("Definir título da caixa de correio");
MailInfo.setContent ("Definir conteúdo da caixa de correio");
// Esta classe envia principalmente e -mails
SimpleMailsender SMS = new SimpleMailSender ();
sms.sendTextMail (MailInfo); // Envie o formato de texto
sms.sendhtmlmail (Mailinfo); // Envie o formato HTML
}
Finalmente, deixe -me dar alguma atenção a você:
1. Usando este código, você pode concluir a função de envio de email do seu Javamail. Todas as três categorias são indispensáveis.
2. Usei o pacote com.util.mail para embalar essas três classes.
3. Não use o endereço de email que você acabou de se registrar para enviar e -mails no programa. Porque você não pode enviar. O endereço de e -mail que você acabou de registrar não fornecerá essas permissões, o que significa que você não pode passar na verificação. Você precisa usar o endereço de e -mail que você usa com frequência e leva muito tempo.
4. Outro problema são as duas frases do MailInfo.setMailServerhost ("Smtp.163.com"); Ou seja, se você usar o servidor 163SMTP, deverá usar o endereço de email 163 para enviar o endereço de email.
5. Existem muitas explicações na internet sobre erros de verificação do Javamail, mas eu só vejo um. É minha terceira categoria. Contanto que você copie todo o código, acho que não haverá problema.