Enviando email usando a Api java mail

0 respostas
P

Pessoal fiz uma classe para envio de email com a API java mail, mas estou com um problema necessito enviar o anexo no corpo do email, mas o anexo é em html ou em alguns casos em JPG, algém conhece como posso fazer isso. Grato

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package automaticnewsletter.emailserver;

import java.io.File;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
//"javax.net.ssl.SSLSocketFactory"

public class SendMail 
{
    private String mailSMTPServer;
    private String mailSMTPServerPort;
    private Properties props;
    transient SimpleAuth auth;
    private transient Session session;
    private transient Message msg;
    transient Transport tr;
    public transient String login, passwd;
    
     public SendMail() 
    { //Para o [email removido]
		mailSMTPServer = "smtp. xxxxx.com";
		mailSMTPServerPort = "25";
    }
    
    public void setSendMail(String mailSMTPServer, String mailSMTPServerPort) 
    { //Para outro Servidor
		this.mailSMTPServer = mailSMTPServer;
		this.mailSMTPServerPort = mailSMTPServerPort;
    }
    
    public void sendMail(String from)
    {
         props = new Properties();
         props.setProperty("proxySet","true");
         props.setProperty("socksProxyHost","192.168.15X.X"); // IP do Servidor Proxy
         props.setProperty("socksProxyPort","10X0");  // Porta do servidor Proxy             
	 props.put("mail.transport.protocol", "smtp"); //define protocolo de envio como SMTP
	 props.put("mail.smtp.starttls.enable","true"); 
	 props.put("mail.smtp.host", mailSMTPServer); //server SMTP 
	 props.put("mail.smtp.auth", "true"); //ativa autenticacao
	 props.put("mail.smtp.user", from); //usuario ou seja, a conta que esta enviando o email (tem que ser do GMAIL)
	 props.put("mail.debug", "true");
         props.put("mail.smtp.starttls.enable=true", "true");
	 props.put("mail.smtp.port", mailSMTPServerPort); //porta
	 props.put("mail.smtp.socketFactory.port", mailSMTPServerPort); //mesma porta para o socket
	//use para o yahoomail //props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");//"javax.net.ssl.SSLSocketFactory"
	 props.put("mail.smtp.socketFactory.fallback", "false");
    }
    
    public void setUser( String login,String passwd)
    {
        this.passwd =passwd;
        this.login=login;
    }
    
    public void Authentication()
    {
        //Cria um autenticador que sera usado a seguir	
	auth = new SimpleAuth (login,passwd);
        session = Session.getInstance(props, auth);      
	session.setDebug(true); //Habilita o LOG das ações executadas durante o envio do email       
        msg=new MimeMessage(session);
        
    }
    
    public void setMessage(String from, String to, String assunto)
    {
        try {
		//Setando o destinatário
		msg.setRecipient(Message.RecipientType.BCC, new InternetAddress(to));
		//Setando a origem do email
		msg.setFrom(new InternetAddress(from));
		//Setando o assunto
		msg.setSubject(assunto);
		//Setando o conteúdo/corpo do email
		//msg.setContent(message,"text/html");             

	} catch (Exception e)
        {
		System.out.println(">> Erro: Completar Mensagem"+" "+e);
	}
    
    }
    
    public void setAttachment(String file,String message) throws MessagingException    
    {
        BodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setText(message);  
        Multipart multipart = new MimeMultipart();    
        multipart.addBodyPart(messageBodyPart);
        messageBodyPart = new MimeBodyPart();    
        DataSource source = new FileDataSource(new File(file));    
        messageBodyPart.setDataHandler(new DataHandler(source));    
        messageBodyPart.setFileName("newsletter");    
        multipart.addBodyPart(messageBodyPart);           
        msg.setContent(multipart);
    }
    
    public void Envia()
    {
        try {
		tr = session.getTransport("smtp"); //define smtp para transporte                
		/*
		*  1 - define o servidor smtp
		*  2 - seu nome de usuario do
		*  3 - sua senha do 
			 */
		tr.connect(mailSMTPServer, login, passwd);
		msg.saveChanges(); // don't forget this
		//envio da mensagem
		tr.sendMessage(msg, msg.getAllRecipients());
		tr.close();
	   } 
           catch (Exception e)
           {
		// TODO Auto-generated catch block
		System.out.println(">> Erro: Envio Mensagem"+" "+e);
	   }
    }
    
    
    
}
Criado 10 de julho de 2012
Respostas 0
Participantes 1