Mi spiego meglio: io ho un database, su cui ci sono i campi che devo usare per la generazione di un file pdf che deve essere mandato come allegato tramite email all'indirizzo che si trova sempre sul database, senza però memorizzare il file su disco e poi allegandolo all'email, ma facendo fluire direttamente il flusso di byte nell'allegato dell'email.
Quindi quello che mi dici non fa al mio caso.
Comunque ho provato ad usare il tuo codice per vedere se almeno in quelle condizioni l'email arrivava. Purtroppo però neanche così funziona. Di seguito il codice e l'errore:
codice:
package beans;
import com.lowagie.text.Document;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class EmailBean {
private static final String sender = "prova@alice.it";
private static final String host = "out.alice.it";
private static final String subject = "Scadenza periodo di prestito";
public String recipient = null; // da settare alla chiamata del bean da jsp
public void send(String recipient, Document doc) throws AddressException, MessagingException{
//String textmess = null;
Properties props = System.getProperties();
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth","true");
props.put("mail.smtp.port","30");
props.put("mail.smtp.host","out.alice.it");
Session session = Session.getInstance(props,null);
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(sender));
message.setSubject(subject);
message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("Università degli studi di Cassino\nFacoltà di ingegnria\nAmministrazione oggetti prestati\n\nIn allegato un avviso di scadenza!!");
MimeMultipart multipart = new MimeMultipart();
FileDataSource source = new FileDataSource("C:/Users/Luca/.personalDomain/personalDomain/config/Avviso.pdf");
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName("Avviso");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport t = session.getTransport("smtp");
try{
t.connect(host,"prova","password");
message.saveChanges();
t.send(message);
} finally { t.close();}
}
}
codice:
type Exception report
message
descriptionThe server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: javax.mail.MessagingException: Could not connect to SMTP host: out.alice.it, port: 30;
nested exception is:
java.net.ConnectException: Connection timed out: connect
root cause
javax.mail.MessagingException: Could not connect to SMTP host: out.alice.it, port: 30;
nested exception is:
java.net.ConnectException: Connection timed out: connect
root cause
java.net.ConnectException: Connection timed out: connect
Comunque rimane anche il problema iniziale.