|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
[JAVA] inviare E-Mail
ho provato a fare quanto in oggetto (per ora solo mail), ma trovo qualche difficoltà :P
dopo aver scaricato javamail-1_4.zip e jaf-1_1-fr.zip e aver aggiunto i jar alle libreria di sistema ho creato queste due clasis: Codice:
package tester;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SettaggioMail {
public static void inviaMail(String dest, String mitt, String oggetto,
String testoEmail) throws MessagingException {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
Session session = Session.getDefaultInstance(props);
MimeMessage message = new MimeMessage(session);
message.setSubject(oggetto);
message.setText(testoEmail);
InternetAddress fromAddress = new InternetAddress(mitt);
InternetAddress toAddress = new InternetAddress(dest);
message.setFrom(fromAddress);
message.setRecipient(Message.RecipientType.TO, toAddress);
Transport.send(message);
}
}
equesta che è di avvio: Codice:
package tester;
import javax.mail.MessagingException;
public class MailMain {
public static void main(String arg[]) {
String mitt = "[email protected]";
String dest = "[email protected]";
String oggetto = "Testing JavaMail";
String testo = "Testing JavaMailTesto";
try {
SettaggioMail.inviaMail(dest, mitt, oggetto, testo);
System.out.println("Invio messaggio OK!");
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("Invio messaggio FALLITO!");
}
}
}
però quando lo avvio mi dà questo errore: Codice:
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. d13sm7595797fka.32 Invio messaggio FALLITO! at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1668) at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1207) at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:735) at javax.mail.Transport.send0(Transport.java:191) at javax.mail.Transport.send(Transport.java:120) at tester.MailUtility.sendMail(MailUtility.java:32) at tester.MailMain.main(MailMain.java:14) e sincerametne non riesco a capire quale sia il problema.... poi, visto che ci siamo, avete una qualche guida per l'invio di sms?
__________________
My gaming placement |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Premettendo che non ho mai usato questa libreria, ma Transport dove l'hai istanziato ? Da una googlata veloce, ho trovato una cosa del genere, che nel tuo codice mi pare mancare
Codice:
Transport transport = mailSession.getTransport();
__________________
Il sole è giallo Ultima modifica di yorkeiser : 04-08-2009 alle 15:55. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
la guida che ho trovato io non lo istanziava...ora provo
__________________
My gaming placement |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
allora, 2 cose:
1) nel modo precedente è comunque fattibile. fatto in questo modo mi dà il seguente errore Invio messaggio FALLITO! javax.mail.NoSuchProviderException: Invalid protocol: null at javax.mail.Session.getProvider(Session.java:436) at javax.mail.Session.getTransport(Session.java:655) at javax.mail.Session.getTransport(Session.java:636) at javax.mail.Session.getTransport(Session.java:622) at tester.SettaggioMail.inviaMail(SettaggioMail.java:32) at tester.MailMain.main(MailMain.java:14)
__________________
My gaming placement |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
risolto:
Codice:
package tester;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SettaggioMail {
public static void inviaMail(String dest, String mitt, String oggetto,
String testoEmail) throws MessagingException {
// Creazione di una mail session
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() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("username",
"password");
}
});
// Creazione del messaggio da inviare
MimeMessage message = new MimeMessage(session);
message.setSubject(oggetto);
message.setText(testoEmail);
// Aggiunta degli indirizzi del mittente e del destinatario
InternetAddress fromAddress = new InternetAddress(mitt);
InternetAddress toAddress = new InternetAddress(dest);
message.setFrom(fromAddress);
message.setRecipient(Message.RecipientType.TO, toAddress);
// Invio del messaggio
Transport.send(message);
}
}
ora cerco per gli sms
__________________
My gaming placement |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
ragazzi, ho quasi finito la mia applicazione, volevo aggiungere la possibilità di inserire multyaccount, solo che non sò dove cercare i dati di accesso dei vari hosting
Codice:
this.props.setProperty("mail.transport.protocol", "smtp");
this.props.setProperty("mail.host", "smtp.gmail.com");
this.props.put("mail.smtp.auth", "true");
this.props.put("mail.smtp.port", "465");
this.props.put("mail.smtp.socketFactory.port", "465");
this.props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
this.props.put("mail.smtp.socketFactory.fallback", "false");
this.props.setProperty("mail.smtp.quitwait", "false");
__________________
My gaming placement |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
javax.mail.MessagingException: Could not connect to SMTP host: mail.libero.it, port: 25, response: 554
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1533) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:453) at javax.mail.Service.connect(Service.java:313) at javax.mail.Service.connect(Service.java:172) at javax.mail.Service.connect(Service.java:121) at javax.mail.Transport.send0(Transport.java:190) at javax.mail.Transport.send(Transport.java:120) at view.MailConfiguration.inviaMail(MailConfiguration.java:84) at tester.MailSplash.run(MailSplash.java:66) chi mi helpa?
__________________
My gaming placement |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Monza
Messaggi: 769
|
Ciao,
io ho scritto un programma per mandare mail in java che manda le mail solo all interno del dominio della mia mail in quanto probabilmente non ho implementato l' autenticazione del server. Gli ho abilitato però la funzione per allegare i files. Nel tuo programma come implementeresti questa funzione? Per il multy account hai provato ad usare magari un array? |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
Codice:
MimeMessage messaggioFinale = new MimeMessage(session);
messaggioFinale.setSubject(oggetto);
MimeBodyPart parteTesto = new MimeBodyPart();
parteTesto.setText(testoEmail);
MimeBodyPart parteFileClienti = new MimeBodyPart();
FileDataSource fileClienti = new FileDataSource("data/cliente.ktm");
parteFileClienti.setDataHandler(new DataHandler(fileClienti));
parteFileClienti.setFileName(fileClienti.getName());
MimeBodyPart parteFileFatture = new MimeBodyPart();
FileDataSource fileFatture = new FileDataSource("data/fatture.ktm");
parteFileFatture.setDataHandler(new DataHandler(fileFatture));
parteFileFatture.setFileName(fileFatture.getName());
Multipart corpoMessaggioTotale = new MimeMultipart();
corpoMessaggioTotale.addBodyPart(parteTesto);
corpoMessaggioTotale.addBodyPart(parteFileClienti);
corpoMessaggioTotale.addBodyPart(parteFileFatture);
messaggioFinale.setContent(corpoMessaggioTotale);
InternetAddress fromAddress = new InternetAddress(mitt);
InternetAddress toAddress = new InternetAddress(dest);
messaggioFinale.setFrom(fromAddress);
messaggioFinale.setRecipient(Message.RecipientType.TO, toAddress);
Transport.send(messaggioFinale);
il mio problema (ancora non risolto) è qeusto. se come account uso gmail va tutto bene, se inizio a cambiare sballa tutto. Suppongo che sia per il fatto che con Gmail uso queste proprierties Codice:
this.props.put("mail.smtp.host", "smtp.gmail.com");
this.props.put("mail.smtp.auth", "true");
this.props.put("mail.smtp.port", "465");
this.props.put("mail.smtp.socketFactory.port", "465");
this.props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
this.props.put("mail.smtp.socketFactory.fallback", "false");
this.props.setProperty("mail.smtp.quitwait", "false");
__________________
My gaming placement |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:49.




















