Existe a possibilidade e eu autenticar com um email senha e smtp, e mandar com outro e-mail?
o setfrom só aceita o e-mail que eu autentico, eu queria enviar do meu proprio e-mail para que eu pudesse fazer um e-mail marketing mesmo sem saber o smtp login e senha dos meus clientes.
Tem como?
at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1873)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1120)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:124)
at Envio.Enviar(Envio.java:38)
at SendMailTLS.<init>(SendMailTLS.java:53)
... 1 more
Esse problema pode estar ocorrêndo por alguma restrição no servidor de e-mail quanto ao domínio do endereço de e-mail que está configurando, no caso hotmail.com, verifique se existe alguma regra para esse caso.
no mais, segue outro exemplo de envio de e-mail, agrupei tudo em um método só para facilitar o post, mas uma refatoração cai bem aí =D
public void enviaEmail(List<String> destinatarios) {
final Properties props = new Properties();
/*
* CONFIGURAÇÃO DO SERVIDOR DE EMAIL PARA CONEXÃO AO SERVIÇO
*/
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "IP do servidor de email");
props.setProperty("mail.smtp.port", "Porta em que o serviço de email está disponível");
props.setProperty("mail.mime.charset", "utf-8");
final Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("usuario_servidor", "senha_servidor");
}
};
Session session = Session.getInstance(props, auth);
final Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("remetente"));
boolean first = true;
final InternetAddress internetAddress = new InternetAddress();
/*
* A PARTIR DE UMA LISTA DE ENDEREÇOS DE E-MAILS ADICIONA-SE OS DESTINATÁRIOS DA MENSAGEM
*/
for (int cont = 0; cont < destinatarios.size(); cont++) {
if (first) {
internetAddress.setAddress((String) destinatarios.get(cont));
msg.addRecipient(Message.RecipientType.TO, internetAddress);
first = false;
} else {
internetAddress.setAddress((String) destinatarios.get(cont));
msg.addRecipient(Message.RecipientType.CC, internetAddress);
}
}
/*
* MONTA O CORPO DO E-MAIL
*/
msg.setSubject("Aqui o assunto da mensagem");
final MimeBodyPart corpoDaMensagem = new MimeBodyPart();
corpoDaMensagem.setContent("Aqui a o corpo da mensagem que será enviada", "aqui os tipos 'text/html' ou 'text/plain'");
final Multipart mps = new MimeMultipart();
mps.addBodyPart(corpoDaMensagem);
msg.setContent(mps);
}
Outra coisa…notei pela exceção que está abrindo uma conexão com um protocolo TLS de segurança, certifique-se também se o servidor de e-mail suporta conexões desse tipo.
TLS, caso não saiba, é uma camada de segurança para envio de informações pela rede.
tente nas propriedades da conexão setar false para não iniciar a conexão com protocolo tls
No exemplo que enviei ficaria assim:
/*
* CONFIGURAÇÃO DO SERVIDOR DE EMAIL PARA CONEXÃO AO SERVIÇO
*/
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "IP do servidor de email");
props.setProperty("mail.smtp.port", "Porta em que o serviço de email está disponível");
props;setProperty("mail.smtp.starttls.enable", "false");
props.setProperty("mail.mime.charset", "utf-8");
vamos lá… parece que da problema mesmo na king host, mas oque eu fiquei curioso é…
no hotmail funciona!
porem… mesmo funcionando ele ainda manda pelo e-mail que eu autentiquei… mesmo trocando o setFrom ele ainda envia pelo e-mail autenticado. O.o