PDA

Visualizza la versione completa : [JAVA] Inviare email con JavaMail


edark
24-06-2005, 15:48
HO provato questo codice preso da questo link (http://www.mokabyte.it/2002/02/javamail.htm)



/* esempio di codice */
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SimpleMailAttach {

public static void main (String args[]) throws Exception {
String smtpHost = args[0];
String from = args[1];
String to = args[2];
String filename = args[3];

// Get system properties
Properties props = System.getProperties();

// Setup mail server
props.put("smtp.mail.it", smtpHost);

// Get session
Session session = Session.getDefaultInstance(props, null);

// Define message
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
message.setSubject("Hello this is a mail message");

// Create the multi-part
Multipart multipart = new MimeMultipart();

// Create part one
BodyPart messageBodyPart = new MimeBodyPart();

// Fill the message
messageBodyPart.setText("Here's the file");

// Add the first part
multipart.addBodyPart(messageBodyPart);

// Part two is attachment

messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);

// Add the second part
multipart.addBodyPart(messageBodyPart);

// Put parts in message
message.setContent(multipart);

// Send message
Transport.send(message);
}
}



Compilo...passo i parametri cosi:
java SimpleMailAttach smtp.email.it prima@email.it seconda@email.it file_da_allegare

Non ricevo nessun errore, niente di niente, ma non ricevo neanche nessuna email...
Che ne dite?
GRAZIE 1000

edark
24-06-2005, 15:49
logicamente ho scaricato JavaMail e Jaf
:dhò:

edark
24-06-2005, 17:42
uppettino

edark
24-06-2005, 23:57
nessuno? :(

Andrea1979
25-06-2005, 08:47
import javax.mail.*;
import java.util.*;
import javax.mail.internet.*;
import javax.activation.*;

public class javamaildemo {
String host = "..."; //tuo smtp
String from = "..."; //tuo indirizzo email
String to = "..."; //destinatario
String filename = "..."; //percorso-nome file da allegare

public javamaildemo() {
try {
// Get system properties
Properties props = System.getProperties();

// Setup mail server
props.put("mail.smtp.host", host);

// Get session
Session session = Session.getDefaultInstance(props, null);

// Define message
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("Ciao da Javamail");

BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("Prova di invio allegato");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);

// Part two is attachment
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
multipart.addBodyPart(messageBodyPart);

// Put parts in message
message.setContent(multipart);



// Send message
Transport.send(message);
}
catch (Exception e) {
System.out.println(e.toString());
}
}

public static void main(String[] args) {
javamaildemo jv = new javamaildemo();
}
}

Questo funziona (lo uso), controlla la tua riga


props.put(....)

Il codice che ho postato sopra l'ho preso dall'articolo

http://java.sun.com/developer/onlineTraining/JavaMail/

Ciao

edark
25-06-2005, 12:41
Originariamente inviato da Andrea1979


import javax.mail.*;
import java.util.*;
import javax.mail.internet.*;
import javax.activation.*;

public class javamaildemo {
String host = "..."; //tuo smtp
String from = "..."; //tuo indirizzo email
String to = "..."; //destinatario
String filename = "..."; //percorso-nome file da allegare

public javamaildemo() {
try {
// Get system properties
Properties props = System.getProperties();

// Setup mail server
props.put("mail.smtp.host", host);

// Get session
Session session = Session.getDefaultInstance(props, null);

// Define message
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("Ciao da Javamail");

BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("Prova di invio allegato");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);

// Part two is attachment
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
multipart.addBodyPart(messageBodyPart);

// Put parts in message
message.setContent(multipart);



// Send message
Transport.send(message);
}
catch (Exception e) {
System.out.println(e.toString());
}
}

public static void main(String[] args) {
javamaildemo jv = new javamaildemo();
}
}

Questo funziona (lo uso), controlla la tua riga


props.put(....)

Il codice che ho postato sopra l'ho preso dall'articolo

http://java.sun.com/developer/onlineTraining/JavaMail/

Ciao

Ti ringrazio andrea ora lo provo, infatti non riesco a capire cosa devo mettere su quella riga,
se nella variabile host metto il mio server smtp quel smtp.email.it (props.put(...))cosa è?lo devo cambiare?
grazie mille

edark
25-06-2005, 13:02
mi da errore


javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
class com.sun.mail.smtp.SMTPAddressFailedException: 553 <damiano85@email.it>: Sender address rejected: not logged in as owner


Mi sa che richiede l'autenticazione...
come posso fare?
grazie ancora :ciauz:

edark
25-06-2005, 13:05
mah sembra che ho risolto, ho messo il server smtp in quella riga props.put e tutto è andato per il meglio, l'email è arrivata subito con l'allegato...
ma cmq non capisco una cosa perchè lo devo ripetere il server smtp??
Grazie ancora

Andrea1979
25-06-2005, 13:27
l'errore stava nel nome della proprietà di sistema, credo

tu cercavi di settare la proprietà smtp.mail.it al valore smtpHost

Nel codice che ho postato io invece, settano la proprietà mail.smtp.host al valore passato.

Per quanto riguarda gli errori con gli smtp e l'eventuale richiesta di autenticazione, sempre al link, c'è un esempio con autenticazione: non ne ho avuto bisogno e non ho esplorato ulteriormente, visto che il server che uso non richiede autenticazione.
Ciao

edark
25-06-2005, 14:23
ok, comunque io in quel comando props.put gli ho passato due host uguali...
cioè:
props.put("smtp.email.it", host);
dove anche la variabile host ha lo stesso valore quindi "smtp.email.it"
cosi facendo l'email viene inviata, cmq non ho capito bene ancora il suo funzionamento.
Anche email.it dovrebbe richiedere l'autenticazione, ma sembra andare...boh,
cmq nel link che hai postato non riesco a trovare l'esempio con l'autenticazione, puoi indicarmelo?
grazie per il tuo aiuto

Loading