Non funziona nel senso che non mi maschera il mio indirizzo, la mail la manda correttamente...Ora ti posto un po di codice...
Qui viene costruito il messaggio e viene inviato:
codice:
public void inviaMessaggio(String modelloMail, String toAddress, String subject) {
try {
getMessage().setSubject(subject);
getMessage().addRecipient(Message.RecipientType.TO, new InternetAddress(toAddress));
MimeMultipart multipart = new MimeMultipart("related");
BodyPart messageBodyPart = new MimeBodyPart();
DataSource fds1 = new URLDataSource(new URL(modelloMail + toAddress));
messageBodyPart.setDataHandler(new DataHandler(fds1));
BodyPart messageBodyPart2 = new MimeBodyPart();
DataSource fds = new URLDataSource(new URL(JdkConf.getProperty("img.logo")));
messageBodyPart2.setDataHandler(new DataHandler(fds));
messageBodyPart2.setHeader("Content-ID", "<logo>");
multipart.addBodyPart(messageBodyPart);
multipart.addBodyPart(messageBodyPart2);
getMessage().setContent(multipart);
getMailSender().send(getMessage());
} catch (MalformedURLException ex) {
Logger.getLogger(MailManagerImpl.class.getName()).log(Level.SEVERE, null, ex);
} catch (MessagingException ex) {
Logger.getLogger(MailManagerImpl.class.getName()).log(Level.SEVERE, null, ex);
} catch (MailException ex) {
//log it and go on
System.err.println(ex.getMessage());
ex.printStackTrace();
}
}
Il messaggio viene costruito da una pagina jsp in cui vi è un logo e testo, ma questa parte si puo tralasciare, dato che il messaggio è inviato correttamente, ti serve sapere che toAddress è la destinazione, getMessage() torna una proprieta della classe, di tipo MimeMessage e getMailSender() trona un'altra proprieta JavaMailSenderImpl...qui ho provato a fare getMessag().setFrom(...) come avevi suggerito anche te, ma il risultato è che mi mette sia l'indirizzo fittizio che il mio vero indirizzo(che setto nell'applicationContext.xml nel bean "smtpAuthenticator").
L'autenticazione la faccio estendendo la classe javax.mail.Authenticator e implementando
codice:
public PasswordAuthentication getPasswordAuthentication();
e naturalmente con credenziali valide va a buon fine(invia la mail) con credenziali false fallisce.
Dentro l'ApplicationContext.xml di Spring setto gli atri dati(username, password, host ecc.) e creo la session dandogli il fil property e proprio l'autenticator:
codice:
<bean id="smtpAuthenticator" class="it.societa.mail.SmtpAuthenticator">
<constructor-arg value="xxx" />
<constructor-arg value="xxx" />
</bean>
<bean id="mailSession" class="javax.mail.Session"
factory-method="getInstance">
<constructor-arg>
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.socketFactory.port">465</prop>
<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
<prop key="mail.smtp.socketFactory.fallback">false</prop>
</props>
</constructor-arg>
<constructor-arg ref="smtpAuthenticator" />
</bean>
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host">
<value>smtp.gmail.com</value>
</property>
<property name="username">
<value>mioindirizzo@gmail.com</value>
</property>
<property name="session" ref="mailSession" />
</bean>
<bean id="message" class="javax.mail.internet.MimeMessage">
<constructor-arg>
<ref bean="mailSession" />
</constructor-arg>
</bean>
<bean id="mailManager" class="it.jdk.management.mail.MailManagerImpl">
<property name="mailSender">
<ref bean="mailSender"/>
</property>
<property name="message">
<ref bean="message"/>
</property>
</bean>
<bean id="entityService" class="it.societa.services.impl.EntityServiceImpl">
<property name="genericDAO" ref="genericDAO"/>
<property name="mailManager" ref="mailManager"/>
</bean>
Queste sono le parti fondamentali dell'invio della mail...Comunque ti ripeto non mi da errori, semplicemente non riesco a mascherare il mio indirizzo...Grazie ancora.
Cia cia