Múltiples envíos y verificación del usuario
A continuación se presentará primero cómo enviar correos electrónicos a múltiples destinatarios y cómo usar el objeto Authenticators para lograr la autenticación del usuario.
Al especificar un destinatario, podemos tener dos formas de especificarlo. El blog anterior especificó temporalmente al destinatario al enviar un correo electrónico, y en realidad se puede especificar en el objeto de mensaje.
Message.addrecipient (Message.recipientType.to, nuevo Internetaddress ("[email protected]")); Esto es solo para enviarlo a un destinatario, pero ¿cómo lidiar con él con múltiples destinatarios? También hay dos formas de lidiar con eso.
1. Al enviar correos electrónicos, el método de transporte sendMessage () utiliza una matriz para especificar al destinatario. En este momento, solo necesitamos agregar más direcciones de destinatario para completarlo.
2. Al usar el objeto Mensaje para agregar destinatarios, podemos usar el método PARSE (String String) del objeto Internetaddress. Este método devuelve una matriz de Internetaddress, que también se puede enviar a múltiples destinatarios.
Sabemos que al desarrollar Javamail, debemos realizar la verificación de autorización. El propósito de la verificación de la autorización es evitar que otros envíen correos electrónicos arbitrariamente y reduzcan la generación de spam.
Podemos verificar al obtener el objeto de sesión. Hay dos métodos en el objeto de sesión:
Ambos métodos tienen un autenticador de parámetros comunes, que es un objeto de autenticador. El objeto Authenticator ayuda a los usuarios a verificar la información y completar la verificación de la autorización. Hay un método GetPasswordAuthentication () en el objeto Authenticator. Este método devuelve un objeto PasswordAuthentication. Hay dos métodos en el objeto de autenticación contraseña: getPassword () y getUsername () Eso significa que encapsulamos la contraseña y el nombre de usuario en el objeto PasswordAuthentication. A través de estos dos métodos, podemos obtener el nombre de usuario y la contraseña. Se puede completar la verificación de información del usuario.
Los ejemplos son los siguientes:
clase pública javamail_02 {public static void main (string [] args) lanza excepción {Properties props = new Properties (); propsssetProperty ("mail.smtp.auth", "true"); propsssetProperty ("mail.transport.protocol", "smtp"); propsssetProperty ("mail.host", "smtp.163.com"); Sesión session = session.getInStance (props, new Authenticator () {PRINCIPIENTO PROTEGADO GetPassWalDauthentication () {return New PasswordAuthentication ("******", "***********");}}); session.setDebug (verdadero); Mensaje msg = new Mimemessage (sesión); msg.setFrom (nuevo Internetaddress ("[email protected]")); msg.setsubject ("Programa de prueba de Javamail ..."); msg.setContent ("<span style = 'color: rojo'> Este es mi segundo programa de prueba de Javamail ... </span>", "text/html; charset = gbk"); //msg.setRecipients(RecipientType.to, nueva dirección [] {nueva Internetaddress ("1111 @@ qq.com"), new InternetAddress ("[email protected]")}); msg.setRecipients (destinationType.to, internetaddress.parse ("[email protected], [email protected]")); Transport.send (MSG); }} Correo electrónico con fotos y archivos adjuntos
En los correos electrónicos reales, generalmente involucramos estructuras de correo electrónico más complejas, como archivos adjuntos, imágenes, canciones, etc. En este momento, debemos tener una comprensión clara de la estructura del correo electrónico. Antes de desarrollar un correo electrónico compuesto, debe tener una cierta comprensión de la estructura de los correos electrónicos compuestos.
La imagen de arriba muestra la estructura general de un correo electrónico compuesto, y podemos ver que un correo electrónico complejo consta de múltiples piezas. Tiene un encabezado y un cuerpo, pero el cuerpo no es tan simple como antes, pero consta de varias partes. La cabeza debe servir como una indicación, que debe explicar qué tipo de separador usar para separar el texto y qué relaciones combinadas se usan entre las partes del texto. Para el correo electrónico anterior, consta de tres partes, cada una con su propia cabeza y cuerpo, y la primera parte también está compuesta de dos partes.
Relación combinada del correo electrónico compuesto:
Hay muchas combinaciones entre las partes del texto principal. La relación combinada es la siguiente:
Alternativa: seleccionar relación. El texto plano anterior y el hipertexto es una relación de elección.
Relacionado: relación afiliada. Si el texto de hipertexto anterior muestra una imagen, cuando enviamos un correo electrónico, debemos incluir la imagen en el correo electrónico, que es el llamado recurso integrado, que es para hipertexto. Entonces hay una relación entre los dos.
Mixto: relación mixta. El texto plano, el hipertexto y los recursos integrados forman un todo y se yuxtaponen con los archivos adjuntos, y existe una relación mixta entre los dos.
API para la estructura de organización de correo compuesto:
La clase Mimemessage representa todo el correo electrónico.
La clase MimeBodyPart representa un mensaje MIME del correo electrónico.
La clase Mimemultipart representa un mensaje MIME combinado compuesto de múltiples mensajes MIME.
El siguiente ejemplo: el correo electrónico contiene dos archivos adjuntos, la parte principal incluye texto sin formato e hipertexto, y el hipertexto significa mostrar una imagen. El código fuente es el siguiente:
clase pública javamail_03 {public static void main (string [] args) lanza excepción {Properties props = new Properties (); propsssetProperty ("mail.smtp.auth", "true"); propsssetProperty ("mail.transport.protocol", "smtp"); propsssetProperty ("mail.host", "smtp.163.com"); Sesión session = session.getInStance (props, new Authenticator () {PRTECKED AUTRATIVO protegido getPasswordAuthentication () {return New PassingAuthentication ("***", "******");}}); Mensaje mensaje = new Mimemessage (sesión); Message.setsubject ("Tercer programa de prueba de Javamail"); Message.setFrom (nuevo Internetaddress ("/" "+mimeutility.encodetext (" Chen Ming ")+"/"<[email protected]>")); Message.setRecipients (destinationType.to, nueva dirección [] {new InternetAddress ("[email protected]")}); // Texto de correo mimemultipart multipart = new mimemultipart ("mixto"); Message.setContent (multipart); /** El contenido del mensaje* incluye un cuerpo de correo electrónico y dos archivos adjuntos*/ mimeBodyPart content = new MimeBodyPart (); // Enviar contenido de correo mimeBodyPart adjunto1 = new MimeBodyPart (); // Adjunto 1 mimeBodyPart adjunto2 = new MimeBodyPart (); // Adjunto 2 // Agregar el contenido de correo electrónico a multipart multipart.addbodyPart (contenido); multipart.addbodypart (attch1); multipart.addbodypart (attch2); // Establecer el archivo adjunto 1 DataSource ds1 = new FiledataSource ("g: // ebook // oracle contraseña.txt"); Datahandler dh1 = new Datahandler (DS1); adjunto1.setDatahandler (DH1); adjunto1.setFileName ("oracle.txt"); // Establecer el archivo adjunto 2 DataSource ds2 = new FiledataSource ("g: //ebook//account.txt"); Datahandler dh2 = new Datahandler (DS2); adjuntar 2.SetDatahandler (DH2); adjunto2.setFileName (mimeUtility.EncodeText ("Account.txt")); /** Establecer contenido (texto) ---- es un cuerpo complejo* que incluye texto HTML y mostrando una imagen*/ mimemultipart bodyMultipart = new mimemultipart ("relacionado"); content.setContent (BodyMultipart); // Construye el texto mimeBodyPart htmlbody = new MimeBodyPart (); MimeBodyPart gifbody = new MimeBodyPart (); BodyMultipart.AddBodyPart (htmlbody); BodyMultipart.AddBodyPart (gifbody); // Establecer la imagen DataSource 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-Location "," http://www.itcast.cn/logo.gif "); // Establecer el cuerpo html htmlbody.setContent ("<span style = 'color: rojo; font-size: 16px'> Esta es mi tercera prueba de Javamail! Incluye archivos adjuntos e imágenes, que es un poco complicado ... </span> <br>" + "La imagen mostrada <img src = 'cid: 4.jpg'/>", "text/html; charset = 8"); Message.SaveChanges (); // Generar correos electrónicos transport.send (mensaje); }}