Enviar varias imagenes en el cuerpo de un correo mediante java mail android studio

como podrán observar en el titulo de la pregunta es lo siguiente:

Necesito enviar varias imagenes por correo usando la libreria java mail en android studio, pero que estas no se envien como adjuntos sino que se envien dentro del cuerpo del correo.

El metodo que estoy implementando hasta ahora envia 4 imagenes pero me muestra en el cuerpo solo una y las demas las manda como adjuntos.

adjunto la clase Email que utilice para el envio del mismo y la configuracion de sus parametros:

public class Email extends javax.mail.Authenticator {

private String _user; private String _pass;  private String _to; private String _from;  private String _port; private String _sport;  private String _host;  private String _subject; private String _body; private String _fileName;   private String _fileName1; private String _fileName2; private String _fileName3;  private boolean _auth;  private boolean _debuggable;  private Multipart _multipart;  public Email() {     _host = "smtp.gmail.com"; // default smtp server     _port = "465"; // default smtp port     _sport = "465"; // default socketfactory port      _user = ""; // username     _pass = ""; // password     _from = ""; // email sent from     _subject = ""; // email subject     _body = ""; // email body      _debuggable = false; // debug mode on or off - default off     _auth = true; // smtp authentication - default on      _multipart = new MimeMultipart();      MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();     mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");     mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");     mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");     mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");     mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");     CommandMap.setDefaultCommandMap(mc); }  public Email(String user, String pass) {     this();      _user = user;     _pass = pass; }  public void setPictureFileName(String fileName) {     _fileName=fileName; }  public void setPictureFileNameLogos1(String fileName1){      _fileName1=fileName1;   }  public void setPictureFileNameLogos2(String fileName2){       _fileName2=fileName2;   }  public void setPictureFileNameLogos3(String fileName3){       _fileName3=fileName3;  }  public boolean send() throws Exception {     Properties props = _setProperties();      if(!_user.equals("") && !_pass.equals("") && _to.length() > 0 && !_from.equals("") && !_subject.equals("") && !_body.equals("")) {          // Assuming you are sending email through relay.jangosmtp.net         //String host = "relay.jangosmtp.net";          /*         Properties props = new Properties();         props.put("mail.smtp.auth", "true");         props.put("mail.smtp.starttls.enable", "true");         props.put("mail.smtp.host", host);         props.put("mail.smtp.port", "25");         */           try         {             Session session = Session.getInstance(props,                     new javax.mail.Authenticator() {                         protected PasswordAuthentication getPasswordAuthentication() {                             return new PasswordAuthentication(_user, _pass);                         }                     });              // Create a default MimeMessage object.             MimeMessage message = new MimeMessage(session);              // Set From: header field of the header.             message.setFrom(new InternetAddress(_from));              // Set To: header field of the header.             //message.setRecipients(MimeMessage.RecipientType.TO, InternetAddress.parse(_to[0]));             message.setRecipients(MimeMessage.RecipientType.TO, _to);               // Set Subject: header field             message.setSubject(_subject);              // This mail has 2 part, the BODY and the embedded image             MimeMultipart multipart = new MimeMultipart("related");              // first part (the html)             BodyPart messageBodyPart = new MimeBodyPart();             String htmlText = "<body><img align = \"center\" src=\"cid:image\">"+_body+"'</body>";             messageBodyPart.setContent(htmlText, "text/html");             // add it             multipart.addBodyPart(messageBodyPart);              messageBodyPart = new MimeBodyPart();              DataSource fds = new FileDataSource(_fileName);              messageBodyPart.setDataHandler(new DataHandler(fds));              messageBodyPart.setHeader("Content-ID", "<image>");              // add image to the multipart              multipart.addBodyPart(messageBodyPart);              //logo de facebook             imgUpload(multipart,_fileName1);            imgUpload(multipart,_fileName2);            imgUpload(multipart,_fileName3);              // put everything together             message.setContent(multipart);             // Send message             Transport.send(message);              System.out.println("Sent message successfully....");             return true;         }         catch (Exception e)         {             System.out.println("Email no enviado linea 155....");             e.printStackTrace();             return false;         }      }     else     {         System.out.println("Email no enviado linea 162....");         return false;      } }  public void addAttachment(String filename) throws Exception {     BodyPart messageBodyPart = new MimeBodyPart();     DataSource source = new FileDataSource(filename);     messageBodyPart.setDataHandler(new DataHandler(source));     messageBodyPart.setFileName(filename);      _multipart.addBodyPart(messageBodyPart); }  @Override public PasswordAuthentication getPasswordAuthentication() {     return new PasswordAuthentication(_user, _pass); }  private Properties _setProperties() {     Properties props = new Properties();      props.put("mail.smtp.host", _host);      if(_debuggable) {         props.put("mail.debug", "true");     }      if(_auth) {         props.put("mail.smtp.auth", "true");     }      props.put("mail.smtp.port", _port);     props.put("mail.smtp.socketFactory.port", _sport);     props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");     props.put("mail.smtp.socketFactory.fallback", "false");       return props; }  // the getters and setters public String getBody() {     return _body; }  //public void setBody(String _body) {   //  this._body = _body; //}  public void setBody(String _body) {     this._body = _body; }  public void setTo(String toArr) {     this._to = toArr; }  public void setFrom(String string) {     this._from = string; }    public void setSubject(String string) {     this._subject = string; } 

//funcion para adjuntar las otras 3 imagenes

public void imgUpload(Multipart multipart,String fileName) throws MessagingException  {     int no = (int)Math.random();     String contentId = Integer.toString(no);     System.out.println(contentId);      BodyPart messageBodyPart = new MimeBodyPart();     String htmlText = "<body><img align=\" center \" src=\"cid:"+contentId+"\"></body>";     messageBodyPart.setContent(htmlText, "text/html");      //add it     multipart.addBodyPart(messageBodyPart);     System.out.println(contentId);      //second part (the image)     messageBodyPart = new MimeBodyPart();     DataSource fds = new FileDataSource(fileName);      messageBodyPart.setDataHandler(new DataHandler(fds));     messageBodyPart.setHeader("Content-ID", "<"+contentId+">");     System.out.println(contentId);      //add image to the multipart     multipart.addBodyPart(messageBodyPart); } 

¿Como filtrar un objeto de objetos mediante una computed, vuejs?

Me encuentro llenando una lista utilizando v-fordicha lista es llenada mediante un objeto de objetos.

{  id1:{   descripcion: "Lorem ipsum dolor sit amet, consectetur adipisci"   imagen: "https://source.unsplash.com/random"   nivel: 1   nombre: "Carpinteria"   recomendada: true  },  idcat1: {   descripcion: "Lorem ipsum dolor sit amet, consectetu"   imagen: "https://source.unsplash.com/random"   nivel: 1   nombre: "Arquitectura"   recomendada: false  } } 

el detalle es que dicha lista debe ser filtrada mediante la propiedad ‘recomendada’. Es decir debo crear otro objeto de objetos pero que unicamente sean de la propiedad recomendada = true.

Lo realice directamente en el componente con v-if. Pero me sale un mensaje que de preferencia utilice una computed y que dicha computed devuelva el objeto de objetos ya filtrado y recorra ese objeto

Como sería dicha funcion, muchas gracias

Enviar un array mediante eventEmitter?

Como puedo enviar un array mediante EventEmmitter?

**************** init component 1*************

@Output()     notifyMeets: EventEmitter<any[]> = new EventEmitter(); 

quiero enviar la variable data, data es un array, como lo envio?

this.listMeetService.getMeets(this.user.id).pipe(             mergeMap(data => {                 const observablesList = [];                 this.notifyMeets.emit(data);                 return forkJoin(observablesList);             })         ).subscribe((response: any) => {             this.friends = response[0];             this.discriminar();         }); 

trato de obtenerlo en el componente 2

**************** init component 2*************

<ion-card-header (notifyMeets)='getNotificationMeet($  event)'> Tus Grupos  </ion-card-header> 

pero creo que nunca llega ya que nunca veo el console

getNotificationMeet(evt) {         console.log('OSOAAAA', evt);         this.listMeets = evt;     } 

los dos componentes esta en el mismo level, son hermanos, deberia usar @input?

controlar bucle while mediante booleanos

(Creo que el título no es muy descriptivo pero no sé como ponerlo)

Estoy analizando un vídeo frame a frame. La cosa es que el primer paso es coger ese frame y ver si es “trabajable”. Esto se hace con la siguiente línea (empleando la librería opencv),

ret, frame = cap.read() 

en frame guardamos la imagen actual con la que vamos a trabajar y en ret un booleano si esa imagen es procesable o no.

Por lo tanto yo lo que tengo es bucle un while que lo que hace es ir analizando frame a frame hasta el final de mi vídeo.

while (cap.isOpened()):     ret, frame = cap.read()     cv2.imshow('frame', frame) #mostrar frame actual 

¿Que sucede si ret es Falso? Pues que se genera un error. ¿Cómo podría solucionar esto? Con un condicional que si es Falso rompa el bucle. PERO en este caso dejo de analizar el vídeo, es decir, si quedaban 20 frames por analizar, ya no los analizo por culpa de este defectuoso.

Entonces pensé, pues solo trabajo en los que el valor de ret = True, pero en ese caso, cuando viene un ret = False se genera un bucle infinito en ese frame defectuoso.

while (cap.isOpened()):      ret, frame, gray_frame = frame_func(cap)     if ret == True:         cv2.imshow('frame', frame) 

Mi duda es, ¿cómo hago para que si un ret viene falso, simplemente paso al siguiente y sigo analizando hasta el final?

Gracias

Crear array asociativo bidimensional mediante consulta

Tengo una tabla clientes cuyos campos son dni, nombre, apellido, telefono, email. Lo que quiero es generar una tabla en el HTML con todos los registros de la consulta. Anteriormente “pintaba la tabla” desde el propio php, pero quiero mejorarlo. Tengo esta funcion PHP

function ListarUsuarios() {   $  sql = "SELECT * FROM CLIENTES";   $  resultado = $  this->_db->query($  sql);   $  usuarios = $  resultado->fetch_all(MYSQLI_ASSOC);    $  arreglo = array(); } 

Lo que quiero hacer es retornar un array asociativo con los registros a esta funcion AJAX. Con un JSON y luego poder generar la tabla HTML correspondiente con los registros.

function ListarUsuarios() {     var data = new FormData();     data.append("opcion", "ListarUsuarios");      var obj = new XMLHttpRequest();      obj.onreadystatechange = function ()      {       if (obj.readyState == 4 && obj.status == 200)       {         alert(this.responseText);       }     }     obj.open("POST", "../../php/conf/admin/admin.php", true);     obj.send(data); }

¿Cómo puedo insertar una línea en un archivo de texto mediante php?

he creado un sistema de placas en el cual se introduce en la tabla (badges_definitions) los datos cómo la id, el código de placa (el nombre de la imagen que seleccionó), y la id del usuario que subió la placa. Pero no sé cómo incluir una línea a un archivo de texto con los datos (el título de la placa y la descripción) que fueron colocados en el formulario en php.

Ejemplo de la línea en el archivo de texto (external_flash_texts.txt)

badge_desc_NOMBREDELAPLACA=DESCRIPCIÓN DE LA PLACA badge_name_NOMBREDELAPLACA=TÍTULO DE LA PLACA 

Codigo php

if(isset($  _POST['subirColor']))          {               $  nombre_img = $  _FILES['imagen']['name'];           $  tipo = $  _FILES['imagen']['type'];           $  tamano = $  _FILES['imagen']['size'];            $  nombre_img2 = $  _FILES['imagen2']['name'];           $  tipo2 = $  _FILES['imagen2']['type'];           $  tamano2 = $  _FILES['imagen2']['size'];             if (($  nombre_img == NULL) || ($  _FILES['imagen']['size'] >= 500000))            {                // La Imagen 1 no ha sido ingresada                  echo '<div class="alert red">Debes ingresar las dos Placas en los dos formatos PNG y GIF, has olvidado la placa en formato GIF.</div>';           }             $  TipoDeImagenVerificacion1 = pathinfo($  nombre_img, PATHINFO_EXTENSION);            if ($  TipoDeImagenVerificacion1 != "gif")           {                // La Imagen 1 no es GIF                echo '<div class="alert red">El formato de la placa no es GIF.</div>';           }             $  CodigoBadge = explode('.gif',$  nombre_img);            if (($  nombre_img2 == NULL) || ($  _FILES['imagen2']['size'] >= 500000))            {                // La Imagen 1 no ha sido ingresada                  echo '<div class="alert red">Debes ingresar las dos Placas en los dos formatos PNG y GIF, Has olvidado la placa en formato PNG.</div>';           }            $  titulo = filter($  _POST['titulo']);           $  des = filter($  _POST['des']);            if($  titulo == "" || empty($  titulo)){                // Titulo esta vacio                  echo '<div class="alert red">Debes ingresar un titulo para la Placa.</div>';           }           if($  des == "" || empty($  des)){                // Titulo esta vacio                  echo '<div class="alert red">Debes ingresar una descripcion para la Placa.</div>';           }              $  repeat = $  db->query("SELECT * FROM badge_definitions WHERE badge = '".$  CodigoBadge[0]."'");              if($  repeat->num_rows > 0){                   echo '<div class="alert red">Ya existe una placa con el mismo Código.</div>';               }else{                    $  DicGif = $  _SERVER['DOCUMENT_ROOT'].'/';                    move_uploaded_file($  _FILES['imagen']['tmp_name'],$  DicGif.$  nombre_img);                    $  DicPNG = $  _SERVER['DOCUMENT_ROOT'].'/';                    move_uploaded_file($  _FILES['imagen2']['tmp_name'],$  DicPNG.$  nombre_img);                  // $  db->query("INSERT INTO cms_logs_upbadges (username, badge, type, time) VALUES ('". $  user['username'] ."', '".$  CodigoBadge[0]."', 'badge', '". time() ."')");                               // $  db->query("INSERT INTO cms_stafflogs (username, action, message, rank, userid, timestamp) VALUES ('". $  user['username'] ."','Agrego una nueva placa', 'Agrego la placa ".$  CodigoBadge[0]."', '". $  user['rank'] ."', '". $  user['id'] ."', '".date("Y-m-d ")."')");                   $  db->real_query("INSERT INTO badge_definitions (badge,user_id,time) VALUES ('".$  CodigoBadge[0]."','".HK_Id."','". time() ."')");                   // $  db->query("INSERT INTO client_external_badge_texts (badge_code, badge_title, badge_desc) VALUES ('".$  CodigoBadge[0]."', '".$  titulo ."', '".$  des."')");                  // $  _SESSION['GOOD_RETURN'] = "La placa [".$  CodigoBadge[0]."";               }           } 

¿Como usar datos impresos en una tabla por js mediante formularios en otra pagina html?

He creado una un formulario en html donde al llenarlo me imprime los datos en una tabla, quiero usar uno de esos datos para imprimirlos como titulo en otra pagina html. El proyecto es sobre el registro de talleres y el registro de personas en esos talleres, realizare cada cosa en paginas html diferentes. El dato que necesito imprimir en el otro html es el nombre del taller

 <table id="info" class="table table-dark table-hover">                 <thead>                     <tr>                         <th>Nombre de taller:</th>                         <th>Fecha de inicio:</th>                         <th>Fecha de término:</th>                         <th>Lugares disponibles</th>                         <th>Duracion del taller (horas)</th>                         <th></th>                         <th></th>                     </tr>                 </thead>             </table> 

Esa es la tabla donde se imprimen los datos del taller, los ultimos son botones que se agregan al imprimir los datos de cada taller.

Gracias.

Guardar Imagen de un Label mediante JFileChooser en la BD

Hola gente de StackOverFlow! Como estan?. Recurro a ustedes con la intencion de que me orienten un poco acerca de este tema de Archivos en java.

Tengo el seguiente codigo:

    public void Imagen() {        JFileChooser Cargar = new JFileChooser();        FileNameExtensionFilter formato = new FileNameExtensionFilter("Solo Imagenes: JPG,PNG O GIFT","jpg","gift","png");        Cargar.setFileFilter(formato);         int a = Cargar.showOpenDialog(this);         if (a==JFileChooser.APPROVE_OPTION)         {             imagenCateP = Cargar.getSelectedFile();             ImageIcon IconoImagen = new ImageIcon(imagenCateP.getAbsolutePath());             int ancho = FotoCate.getWidth();             int alto = FotoCate.getHeight();             Image RImage = IconoImagen.getImage();             RImage.getScaledInstance(ancho, alto, Image.SCALE_DEFAULT);             ImageIcon RedimensionImagen = new ImageIcon(RImage);             FotoCate.setIcon(RedimensionImagen);            }               } 

En este primer parte, tengo un JFileChooser que me da a seleccionar un imagen y traspasarla a un label para su pronto visualización.

Capturando datos:

public void Aceptar()     {       Nom = NomCate.getText();       Descrip = DescripMain.getText();       ImagenPrincipalPR Creacion = new ImagenPrincipalPR(Nom, Descrip,FotoCate,1);       Base.InsertoImagen(Creacion);     } 

Mediante Encapsulacion, estoy pasando todos los datos establecidos por el usuario.

Se que me diran, FotoCate es Jlabel! (Lo se pero de verdad soy un poquito nuevo en estos temas de imagenes y guardados de BD).

Resumiendo todo Tengo 2 variables Strings, un Objeto de tipo File que es que el justamente esta en JLabel. Entonces lo que quiero es que apartir de la imagen que se encuentre en el Label y al momento de darle al Buttom (Aceptar) este se guarde en base de datos (guardado en ruta).

Ahi alguna posibilidad de hacer algun tipo de Cast a estos Objetos, o tengo que capturar la Imagen de otra forma?, Estuve leyendo un poco y dicen que es recomendable un Metodo que devuelva la ruta del File por medio de Label, usando el InputStream.

Pero de verdad no me encuentro en esta situacion (no se que hacer) :(.

Si pudieran darme algun consejo sobre este tema, se los agradeciera mucho!.

Pasar nombres compuetos a simples mediante Regex en C#

Soy nuevo en el tema de expresiones regulares y me gustaría saber como conseguir pasar los nombres compuestos a simples. Pongo un ejemplo:

RUIZ JIMENO, ALBERTO ADRIAN => RUIZJIMENOALBERTO LÓPEZ FAUSTO,   CATALINA DE MIGUEL => LOPEZFAUSTOCATALINA 

Estoy en C#, concretamente en Asp.net-core. Lo que he probado por el momento es (se que está mal):

Regex.Replace("RUIZ JIMENO, ALBERTO ADRIAN", "[\w\s\w,\s\w]", "") 

Quisiera investigar mas sobre esto pero estoy en el trabajo y no puedo perder mucho tiempo.

Un saludo, muchas gracias!

P.D: Algo que estuve viendo ayer sobre expresiones regulares (pnho link):

Guía para entender y usar expresiones regulares