Enviando email com anexo

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?

Acho que é necessário setar a propriedade props.put(“mail.smtp.starttls.enable”, “true”)

Valeu romarcio, era isso que tu respondeu com mais outras coisas, to mandando o código caso alguém precise futuramente:

[code]

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";  
    String para = "joseph.sarmento@***.com";  
    String senha= "********";  
    String assunto = "Teste";  
    String texto = "nononono";  
    try {  
    	Properties props = System.getProperties();
    	 props.put("mail.smtp.host", "smtp.gmail.com");
    	 props.put("mail.smtp.starttls.enable", "true");
    	 
    	 props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "465");
        props.put("mail.smtp.user", "joseph.sarmento@***.com");
 
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.debug", "true");
 
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");

        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 transport = sessao.getTransport("smtp");
        transport.connect(de, senha);
        transport.sendMessage(m, m.getAllRecipients());
        transport.close(); 
    } catch (Exception ex) {  
        throw new Exception(ex.getMessage());  
    }  
}  

}[/code]