Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Lomio
    Registrato dal
    Jul 2010
    Messaggi
    160

    [JAVA] javax.mail, invia mail senza testo

    Ragazzi e ragazze, il mio problema riguarda del codice trovato in rete, il problema è semplice(le mail vengono inviate correttamente):
    se provo ad inviare una mail con allegato il testo della mail non arriva a destinazione, invece se provo a non inviare l'allegato il testo arriva correttamente!

    Ecco il codice incriminato:
    codice:
    	private static Store store;
    	private static Message[] messages;
    
    	public static void sendMail(final User utente, String dest, String oggetto,
    			String testoEmail, File allegato) throws MessagingException {
    
    		Properties props = new Properties();
    		props.setProperty("mail.transport.protocol", "smtp");
    		props.setProperty("mail.host", "smtp.gmail.com");
    		props.put("mail.smtp.auth", "true");
    		props.put("mail.smtp.port", "465");
    		props.put("mail.smtp.socketFactory.port", "465");
    		props.put("mail.smtp.socketFactory.class",
    				"javax.net.ssl.SSLSocketFactory");
    		props.put("mail.smtp.socketFactory.fallback", "false");
    		props.setProperty("mail.smtp.quitwait", "false");
    
    		Session session = Session.getDefaultInstance(props,
    				new javax.mail.Authenticator() {
    
    					private String user = utente.getUsername().trim();
    					private String pass = utente.getPassword().trim();
    
    					protected PasswordAuthentication getPasswordAuthentication() {
    						return new PasswordAuthentication(this.user, this.pass);
    					}
    				});
    
    		MimeMessage message = new MimeMessage(session);
    		message.setSubject(oggetto);
    		message.setText(testoEmail, "utf-8");
    		InternetAddress fromAddress = new InternetAddress(utente.getUsername()
    				+ "@gmail.com");
    		InternetAddress toAddress = new InternetAddress(dest);
    		message.setFrom(fromAddress);
    		message.setRecipient(Message.RecipientType.TO, toAddress);
    		if (allegato != null) {
    			FileDataSource fds = new FileDataSource(allegato);
    			message.setDataHandler(new DataHandler(fds));
    			message.setFileName(fds.getName());
    		}
    
    		Transport.send(message);
    	}
    Grazie a tutti...
    La legge e l'ordine saranno rispettati solo quando si concederà la giustizia a tutti indistintamente.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Se il messaggio contiene degli allegati, allora devi usare il Multipart:

    codice:
    // Creo il messaggio
    MimeMessage message = new MimeMessage( session );
    
    // Aggiungo il mittente
    message.setFrom( new InternetAddress (fromAddress) );
    
    // Indico i destinatari
    for(String dest : destinatari) {
       message.addRecipient(Message.RecipientType.TO, new InternetAddress (dest));
    }
    
    // Indico l'oggetto         
    message.setSubject( subject );
    
    // Creo il Multipart
    Multipart multipart = new MimeMultipart();
    File[] allegati = ...;   // I file da allegare
          
    // Creo il corpo del messaggio con il testo
    BodyPart bodyPart = new MimeBodyPart();
    ((MimeBodyPart) bodyPart).setText(messaggio_di_testo, "ISO-8859-15");
         
    multipart.addBodyPart( bodyPart );
          
    // Allego tutti gli allegati
    for(File f : allegati) {
       String nomeFile = ...;   // Il nome con cui si vuole che l'allegato venga visto
       bodyPart = new MimeBodyPart();
       ((MimeBodyPart) bodyPart).attachFile( f );
             
       bodyPart.setFileName( nomeFile );
             
       multipart.addBodyPart( bodyPart );
    }
          
    // Aggiungo il Multipart al messaggio
    message.setContent( multipart );
    
    // Infine invio il messaggio
    Transport.send(message);
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Lomio
    Registrato dal
    Jul 2010
    Messaggi
    160
    Grandissimoooo!!!!

    Adesso è perfetto, inoltre mi hai risolto anche lo step successivo ovvero la gestione di N allegati e destinatari!
    Grazie mille
    La legge e l'ordine saranno rispettati solo quando si concederà la giustizia a tutti indistintamente.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.