Se eu tentar com arquivo txt vai porém se eu tento com outro arquivo mais nao vai.
import java.util.Date;
import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.MultiPartEmail;
public class EnviarEmail {
Configuracoes c = new Configuracoes();
Date data = new Date();
public void enviar(){
MultiPartEmail email = new MultiPartEmail();
email.setHostName("smtp.gmail.com");
email.setSslSmtpPort("465");
email.setStartTLSRequired(true);
email.setStartTLSEnabled(true);
email.setSSLOnConnect(true);
c.readFile();
email.setAuthenticator(new DefaultAuthenticator("backup*****@gmail.com","****"));
try {
email.setFrom("backup.mails.java@gmail.com");
email.setSubject(c.getTitulo());
email.addTo(c.getDestinatario());
email.setMsg("Teste");
//anexando
EmailAttachment attachment = new EmailAttachment();
attachment.setPath(c.getCaminho());
attachment.setDescription(EmailAttachment.ATTACHMENT);
attachment.setDescription("Arquivo 7z");
attachment.setName("backup " + data.getDate());
email.attach(attachment);
email.send();
} catch (Exception e) {
e.printStackTrace();
}
}
}
o Erro:
org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:465
Bom dia João, seja bem vindo ao fórum! Cara, eu uso o JavaMail, demorei um século pra conseguir fazer funcionar com qualquer anexo! Exemplo funcional:
usuario
e remetente
precisam ser o mesmo email.
nomeRemetente
é o nome da sua empresa ou o seu nome.
imagem
é o caminho do arquivo que você vai jogar para o anexo. Você pode colocar qualquer arquivo, como eu uso uma imagem, acabei colocando o nome da String de imagem.
Se quiser que ver todo o processo de envio, e bla bla bla, seta o sessionDebug como true
public void envioAnexo(String nomeRemetente, String assunto, String mensagem, String destinatario, String imagem) {
try {
ModeloEmail me = new ModeloEmail();
String host = "smtp.gmail.com";
String usuario = "email@gmail.com";
String senha = "senha";
String remetente = "email@gmail.com";
me.setAssunto(assunto);
me.setMensagem(mensagem);
boolean sessionDebug = false;
Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.required", "true");
props.put("mail.smtp.ssl.trust", "smtp.gmail.com");
java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
Session mailSession = Session.getDefaultInstance(props, null);
mailSession.setDebug(sessionDebug);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(remetente, nomeRemetente));
msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(destinatario));
msg.setSubject(assunto);
msg.setSentDate(new Date());
// cria a primeira parte da mensagem
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setContent(mensagem, "text/html;charset=UTF-8");
// cria a segunda parte da mensage
MimeBodyPart mbp2 = new MimeBodyPart();
// anexa o arquivo na mensagem
FileDataSource fds = new FileDataSource(imagem);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());
// cria a Multipart
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
// adiciona a Multipart na mensagem
msg.setContent(mp);
// configura a data: cabecalho
msg.setSentDate(new Date());
// envia a mensagem
Transport transport = mailSession.getTransport("smtp");
transport.connect(host, usuario, senha);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
System.out.println("Enviado com Sucesso");
} catch (MessagingException ex) {
ex.printStackTrace();
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
}
Deu certo Muito Obrigado.
Renomeei o conteúdo dos arquivos para “.remova” também dentro do zip para burlar o bloqueio. Mas seu método foi o unico q deu certo.
1 curtida