2009-10-03 5 views
8

Come posso archiviare i messaggi che ho scritto con javamail nella tabella MySQL? Ho già configurato James server di file di configurazione per la connessione al server MySQL (con origine dati nome dell'elemento maildb), e ho cambiato l'elemento <inboxRepository> nel file di configurazione del server James aMemorizzazione dei dati nella tabella MySql tramite Javamail non riuscito

<inboxRepository> 
    <repository destinationURL="db://maildb/spammer/" 
    type="MAIL"/>  
</inboxRepository> 

Ma io non sono ancora in grado di leggere i messaggi dalla colonna Posta in arrivo della tabella spammer della tabella nel database di posta in MySql.

Ecco la mia classe JavaMail:

import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.Properties; 
import javax.mail.*; 
import javax.mail.internet.*; 

public class mail{ 

    public static void main(String[] argts){ 
    String to = "[email protected]"; 
    String from = "[email protected]"; 
    String subject = "jdk"; 
    String body = "Down to wind"; 

    if ((from != null) && (to != null) 
     && (subject != null) && (body != null)) 
    // we have mail to send 
    { 
     try { 
     Properties props = new Properties(); 

     props.put("mail.host", "127.0.0.1 "); 
     props.put("mail.smtp.auth","true"); 

     Session session = 
      Session.getInstance(props, new javax.mail.Authenticator() { 

      protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication("blue", "blue"); 
      } 
     }); 
     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress(from)); 
     Address[] add={ new InternetAddress(to) }; 
     message.setRecipients(Message.RecipientType.TO,add); 
     message.setSubject(subject); 
     message.setContent(body, "text/plain"); 
     message.setText(body); 
     Transport.send(message); 

     System.out.println 
      ("<b>Thank you. Your message to "+to+" was successfully sent.</b>"); 

     } catch (Throwable t) { 
     t.printStackTrace(); 
     } 
    } 
    } 
} 

Che cosa sto facendo male qui, e come posso leggere il messaggio dal tavolo spammer in MySQL?

+0

Quando si esegue l'applicazione: l'applicazione inviata viene mantenuta nel database? Raccolgo dal tuo post che vuoi che una copia del messaggio inviato rimanga nella tabella degli spammer, ma non riesco a vedere alcun codice di persistenza con il tuo esempio in esecuzione: questo significa che james esegue automaticamente la persistenza? – Bitmap

risposta

1

Forse si utilizza URL sbagliato database: destinationUrl = "db: // maildb/spammer /" propongo modifica destinationUrl = "mysql: // maildb/spammer /" se la destinazione è il database mysql di corso.