Aprendí sobre Javamail hoy. Para la comodidad del uso futuro, escribí un código yo mismo y lo escribí en un paquete JAR para la conveniencia del uso futuro. jeje
Los siguientes tres códigos son todos mi código. Debido a que no sé cómo subir el paquete de jar a Javaeye, los amigos regresan y lo logran por sí mismos.
Mi código tiene tres clases:
La primera clase: MailsenderInfo.java
La copia del código es la siguiente:
paquete com.util.mail;
/**
* Información básica requerida para enviar correos electrónicos
*/
import java.util.properties;
Public Class MailSenderInfo {
// La IP y el puerto del servidor que envía el correo
Cadena privada MailserverHost;
Private String MailServerPort = "25";
// La dirección del remitente del correo electrónico
Cadena privada deladdress;
// La dirección del destinatario del correo electrónico
string privado
// Inicie sesión en el nombre de usuario y la contraseña del servidor de envío de correo electrónico
nombre de usuario de cadena privada;
contraseña de cadena privada;
// se requiere autenticación
Validato booleano privado = falso;
// Asunto de correo electrónico
sujeto de cadena privada;
// El contenido de texto del correo electrónico
Contenido de cadena privada;
// Nombre de archivo del archivo adjunto del correo electrónico
cadena privada [] adjunteFileNames;
/**
* Obtenga atributos de la sesión de correo electrónico
*/
Propiedades públicas getProperties () {
Propiedades P = nuevas propiedades ();
P.put ("mail.smtp.host", this.MailServerHost);
P.put ("mail.smtp.port", this.mailserverport);
p.put ("mail.smtp.auth", validar? "verdadero": "falso");
regreso p;
}
Cadena pública getMailServerHost () {
devolver MailserverHost;
}
public void setMailServerHost (String MailServerHost) {
this.MailServerHost = MailServerHost;
}
public String getMailServerPort () {
devolver Mailserverport;
}
public void setmailserverport (string mailserverport) {
this.MailServerPort = MailServerPort;
}
public boolean isValidate () {
Validar de retorno;
}
public void setValidate (boolean validate) {
this.validate = validate;
}
cadena pública [] getAttachFileNames () {
regresar adjunte los nombres de la vida;
}
public void setAttachFilenames (String [] Filenames) {
this.attachFileNames = FileNames;
}
Cadena pública getFromAddress () {
regresar del avance;
}
public void setFromAddress (String fromAddress) {
this.FromAddress = fromAddress;
}
public String getPassword () {
devolver contraseña;
}
public void setPassword (String Password) {
this.password = contraseña;
}
Cadena pública getToAddress () {
regresar
}
public void setToaddress (string toaddress) {
this.toaddress = toaddress;
}
public String getUsername () {
devolver el nombre de usuario;
}
public void setUsername (String UserName) {
this.Username = UserName;
}
public String getSubject () {
sujeto de retorno;
}
public void setSubject (sujeto de cadena) {
this.subject = sujeto;
}
public String getContent () {
devolver contenido;
}
public void setContent (string textContent) {
this.content = textContent;
}
}
La segunda clase: simplemailsender.java
La copia del código es la siguiente:
paquete com.util.mail;
import java.util.date;
import java.util.properties;
import javax.mail.address;
import javax.mail.bodypart;
import javax.mail.message;
import javax.mail.messagingException;
import javax.mail.multipart;
import javax.mail.session;
import javax.mail.transport;
import javax.mail.internet.internetaddress;
import javax.mail.internet.mimeBodyPart;
import javax.mail.internet.mimemessage;
import javax.mail.internet.mimemultipart;
/**
* Envío de correo simple (correo sin archivos adjuntos)
*/
clase pública simplemailsender {
/**
* Enviar correos electrónicos en formato de texto
* @param mailinfo información sobre el correo electrónico que se enviará
*/
Public boolean sendTextmail (MailsenderInfo MailInfo) {
// Determinar si se requiere autenticación de identidad
MyAuthenticator Authenticator = NULL;
Propiedades pro = mailInfo.getProperties ();
if (mailInfo.isValidate ()) {
// Si se requiere autenticación de identidad, cree un autenticador de contraseña
autenticator = new Myauthenticator (mailInfo.getUsername (), mailInfo.getPassword ());
}
// Construir una sesión para enviar correos electrónicos basados en las propiedades de la sesión de correo electrónico y el validador de contraseña
Session sendmailsession = session.getDefaultInstance (pro, autenticador);
intentar {
// Crear un mensaje de correo basado en la sesión
Mensaje MailMessage = new Mimemessage (sendmailsession);
// Crear la dirección del remitente de correo electrónico
Dirección de = new InternetAddress (mailInfo.getFromAddress ());
// Establezca el remitente del mensaje de correo electrónico
MailMessage.setFrom (desde);
// Crear la dirección del destinatario del correo electrónico y establecerla en el mensaje de correo electrónico
Dirección a = nueva Internetaddress (mailInfo.gettoaddress ());
mailMessage.setRecipient (Message.RecipientType.to, a);
// Establecer el tema del mensaje de correo electrónico
MailMessage.SetSubject (mailInfo.getSubject ());
// Establecer el tiempo para enviar mensajes de correo electrónico
MailMessage.SetsentDate (nueva fecha ());
// Establecer el contenido principal del mensaje de correo electrónico
Cadena mailContent = mailInfo.getContent ();
MailMessage.setText (MailContent);
// Enviar correo
Transport.send (MailMessage);
devolver verdadero;
} catch (MessionGingException ex) {
Ex.PrintStackTrace ();
}
devolver falso;
}
/**
* Enviar correos electrónicos en formato HTML
* @param mailinfo información de correo que se enviará
*/
public static boolean sendhtmlmail (MailsenderInfo mailinfo) {
// Determinar si se requiere autenticación de identidad
MyAuthenticator Authenticator = NULL;
Propiedades pro = mailInfo.getProperties ();
// Si se requiere autenticación de identidad, cree un autenticador de contraseña
if (mailInfo.isValidate ()) {
autenticator = new Myauthenticator (mailInfo.getUsername (), mailInfo.getPassword ());
}
// Construir una sesión para enviar correos electrónicos basados en las propiedades de la sesión de correo electrónico y el validador de contraseña
Session sendmailsession = session.getDefaultInstance (pro, autenticador);
intentar {
// Crear un mensaje de correo basado en la sesión
Mensaje MailMessage = new Mimemessage (sendmailsession);
// Crear la dirección del remitente de correo electrónico
Dirección de = new InternetAddress (mailInfo.getFromAddress ());
// Establezca el remitente del mensaje de correo electrónico
MailMessage.setFrom (desde);
// Crear la dirección del destinatario del correo electrónico y establecerla en el mensaje de correo electrónico
Dirección a = nueva Internetaddress (mailInfo.gettoaddress ());
// Message.RecipientType.to El atributo indica que el tipo de receptor es
mailMessage.setRecipient (Message.RecipientType.to, a);
// Establecer el tema del mensaje de correo electrónico
MailMessage.SetSubject (mailInfo.getSubject ());
// Establecer el tiempo para enviar mensajes de correo electrónico
MailMessage.SetsentDate (nueva fecha ());
// La clase Minimultipart es una clase de contenedor que contiene objetos de tipo mimeBodyPart
Multipart mainpart = new mimemultipart ();
// Crear un MimeBodyPart que contenga contenido HTML
Bodypart html = new MimeBodyPart ();
// Establecer contenido HTML
html.setContent (mailInfo.getContent (), "text/html; charset = utf-8");
MainPart.AddBodyPart (html);
// Establecer objeto Minimultipart al contenido de correo
MailMessage.SetContent (MainPart);
// Enviar correo
Transport.send (MailMessage);
devolver verdadero;
} catch (MessionGingException ex) {
Ex.PrintStackTrace ();
}
devolver falso;
}
}
La tercera categoría: myauthenticator.java
La copia del código es la siguiente:
paquete com.util.mail;
import javax.mail.*;
MyAutAuthenticator de clase pública extiende Authenticator {
String USERNAME = NULL;
String Password = Null;
public myauthenticator () {
}
public myauthenticator (nombre de usuario de cadena, contraseña de cadena) {
this.Username = UserName;
this.password = contraseña;
}
protegido PassionAuthentication getPasswordAuthentication () {
devolver una nueva contraseña Authentication (nombre de usuario, contraseña);
}
}
El siguiente es el código que usa las tres clases anteriores:
La copia del código es la siguiente:
public static void main (string [] args) {
// Esta clase establece principalmente correo electrónico
MailSenderInfo mailInfo = new MailSenderInfo ();
mailInfo.setMailServerHost ("smtp.163.com");
mailInfo.setMailServerPort ("25");
mailInfo.setValidate (verdadero);
mailinfo.setUsername ("[email protected]");
MailInfo.setPassword ("*********"); // Su contraseña de correo electrónico
mailinfo.setFromAddress ("[email protected]");
mailinfo.settoaddress ("[email protected]");
mailInfo.setsubject ("establecer el título del buzón");
mailInfo.setContent ("Establecer contenido del buzón");
// Esta clase envía principalmente correos electrónicos
SimpleMailSender SMS = new SimpleMailSender ();
sms.sendTextmail (mailInfo); // Enviar formato de texto
sms.sendhtmlmail (mailInfo); // Enviar formato HTML
}
Finalmente, déjame prestarte atención a:
1. Usando este código, puede completar la función de envío de correo electrónico de su Javamail. Las tres categorías son indispensables.
2. Utilicé el paquete Com.util.Mail para empaquetar estas tres clases.
3. No use la dirección de correo electrónico que acaba de registrarse para enviar correos electrónicos en el programa. Porque no puedes enviarlo. La dirección de correo electrónico que acaba de registrar no le dará tales permisos, lo que significa que no puede aprobar la verificación. Debe usar la dirección de correo electrónico que usa con frecuencia, y lleva mucho tiempo.
4. Otro problema son las dos oraciones de mailinfo.setmailserverhost ("smtp.163.com"); Es decir, si usa el servidor 163SMTP, entonces debe usar la dirección de correo electrónico 163 para enviar la dirección de correo electrónico.
5. Hay muchas explicaciones en Internet sobre los errores de verificación de Javamail, pero solo veo una. Es mi tercera categoría. Mientras copie todo el código, creo que no habrá problema.