aí gente, eu estou implementando uma classe que envia emails com anexos na memória no tipo byte[]
, eu andei dando uma olhada aqui e outra ali e acabei ficando com isso:
import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.InternetHeaders;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
public class MailAnexo {
public void enviarEmail(byte[] bytes) throws Exception {
String de = "joseph.sarmento@***.com.br";
String para = "joseph.sarmento@***.com";
String assunto = "Teste";
String texto = "nononono";
try {
Properties props = System.getProperties();
props.put("mail.smtp.host", "smtp.gmail.com");
Session sessao = Session.getInstance(props,null);
MimeMessage m = new MimeMessage(sessao);
m.setFrom(new InternetAddress(de));
Address[] to = new InternetAddress[] {new InternetAddress(para)};
m.setRecipients(Message.RecipientType.TO, to);
m.setSubject(assunto);
m.setSentDate(new java.util.Date());
m.setText(texto);
Multipart corpo = new MimeMultipart();
InternetHeaders headers = new InternetHeaders();
headers.addHeader("Content-Type", "application/pdf");
MimeBodyPart partPhoto = new MimeBodyPart();
partPhoto.setDataHandler(new DataHandler(new ByteArrayDataSource(bytes, "aplication/pdf")));
partPhoto.setFileName("PDF.pdf");
corpo.addBodyPart(partPhoto);
m.setContent(corpo);
Transport.send(m);
} catch (Exception ex) {
throw new Exception(ex.getMessage());
}
}
}
o problema é que tá dando o seguinte erro:
java.lang.Exception: 530 5.7.0 Must issue a STARTTLS command first. v20sm38360948anv.17
A minha pergunta é óbvia: Alguém tem idéia do que ou do porque disto?