Hola... Mirá, voy por partes:
1- No se puede usar el smtp de gmail así como así.
2- Lo que vos necesitas es tener un MailServer TUYO, o bien, que uses el MailServer del hosting que uses.
3- Ningún SMTP de ninguna empresa te va a permitir enviar mails desde cualquier casilla, si esas casillas no te pertenecen y no tenés la información de autenticación correspondiente. Por lo que por ejemplo no podrías mandar un mail de un usuario tuyo a otro usuario tuyo, sino de TU mail o el de tu empresa, a un usuario.
Yo pasé por el mismo problema un buen tiempo, MESES!!!. Y tras bastante investigación llegué a instalar mi propio MailServer. El que yo uso me solucionó todos los problemas y es MUY bueno. Se llama Mercury Mail Server, y acá tenes un tutorial junto con los links de descarga de la aplicación. Te explican como instalarlo, y como usarlo tanto en intranets como en internet... Si tenes dudas mandame un mail a
[email protected]
Y lo que harías ahora con este mailServer, es cambiar el host a localhost o a la ip del equipo en que corras el server. Ej.:
Código :
Ver originalprivate static final String SMTP_HOST_NAME = "localhost";
private static final Integer SMTP_PORT = 25;
public static void main(String args[]) throws Exception {
try {
} catch (MailException e) {
}
}
public static void sendMail(String from, String recipient, String subject, String message) {
Properties props = new Properties();
props.put("mail.smtp.host", SMTP_HOST_NAME);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", SMTP_PORT);
Authenticator auth = new SMTPAuthenticator();
Session session = Session.getDefaultInstance(props, auth);
Message msg = new MimeMessage(session);
try {
InternetAddress addressFrom = new InternetAddress(from);
msg.setFrom(addressFrom);
InternetAddress addressTo = new InternetAddress(recipient);
msg.setRecipient(Message.RecipientType.TO, addressTo);
msg.setSubject(subject);
msg.setContent(message, "text/plain");
Transport.send(msg);
} catch (MessagingException me) {
logger.error("Se produjo un error al enviar Mail from<"+from+"> to<"+recipient+">",me);
throw new MailException(me);
}
}
public static void secureSendMail(String from, String recipient, String subject, String message) {
Properties props = new Properties();
props.put("mail.smtp.host", SMTP_HOST_NAME);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", SMTP_PORT);
Authenticator auth = new SMTPAuthenticator();
Session session = Session.getDefaultInstance(props, auth);
Message msg = new MimeMessage(session);
try {
InternetAddress addressFrom = new InternetAddress(from);
msg.setFrom(addressFrom);
InternetAddress addressTo = new InternetAddress(recipient);
msg.setRecipient(Message.RecipientType.TO, addressTo);
msg.setSubject(subject);
msg.setContent(message, "text/plain");
Transport.send(msg);
} catch (MessagingException me) {
logger.error("Se produjo un error al enviar Mail from<"+from+"> to<"+recipient+">",me);
}
}
Y otro tema no menos importante.. Para usar cualquier mailServer en internet, vas a tener que contar con IP Fija, o bien la que te dan en un hosting, dado que como medida de seguridad anti spam, TODOS los smtp de las empresas, bloquean la recepción de mails desde IPs dinámicas.
Slds!