Estou utilizando a seguinte classe para enviar email:
[code]import javax.mail.;
import javax.mail.internet.;
import java.util.Properties;
public class Email {
public class SMTPAuthenticator extends Authenticator {
public PasswordAuthentication getPasswordAuthentication() {
String username = "meuemail@gmail.com";
String password = “******”;
return new PasswordAuthentication(username, password);
}
}
public void sendSimpleMail(
String mailServer,
String subject,
String to,
String from,
String mensagem)
throws AddressException, MessagingException {
Properties mailProps = new Properties();
//definição do mailserver
mailProps.put("mail.smtp.host", mailServer);
Authenticator auth = new SMTPAuthenticator();
Session mailSession = Session.getDefaultInstance(mailProps, auth);
mailProps.put("mail.smtp.auth", "true");
mailProps.put("mail.debug", "true");
mailProps.put("mail.smtp.debug", "true");
mailProps.put("mail.mime.charset", "ISO-8859-1");
mailProps.put("mail.smtp.port", "465");
mailProps.put("mail.smtp.starttls.enable", "true");
mailProps.put("mail.smtp.socketFactory.port", "465");
mailProps.put("mail.smtp.socketFactory.fallback", "false");
mailProps.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
//As duas linhas seguintes de código, colocam no
//formato de endereços,
//supostamente válidos, de email os dados
//passados pelos parâmetros to e from.
InternetAddress destinatario = new InternetAddress(to);
InternetAddress remetente = new InternetAddress(from);
//As duas linhas de código a seguir, são
//responsáveis por setar os atributos e
//propriedas necessárias do objeto message
//para que o email seja enviado.
//inicialização do objeto Message
Message message = new MimeMessage(mailSession);
//Definição de quem está enviando o email
message.setFrom(remetente);
//define o(s) destinatário(s) e qual o tipo do
//destinatário.
//os possíveis tipos de destinatário: TO, CC, BCC
message.setRecipient(Message.RecipientType.TO, destinatario);
//definição do assunto do email
message.setSubject(subject);
//definição do conteúdo da mesnagem e do
//tipo da mensagem
message.setContent(mensagem.toString(), "text/html");
//a linha de código seguinte é a responsável
//pelo envio do email
Transport.send(message);
}
public static void main(String args[]) throws AddressException, MessagingException{
Email email = new Email();
email.sendSimpleMail(“smtp.gmail.com”, “Olá!”, "meuemail@gmail.com",
"meuemai@gmail.com", “Oi, tudo bem??”);
}
} [/code]
Na minha máquina funciona perfeitamente, mas na máquina onde ele terá que ficar acontece o seguinte erro:
[quote]Exception in thread “main” javax.mail.MessagingException: IOException while sending message;
nested exception is:
javax.activation.UnsupportedDataTypeException: no object DCH for MIME type text/html
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:625)
at javax.mail.Transport.send0(Transport.java:169)
at javax.mail.Transport.send(Transport.java:98)
at Email.sendSimpleMail(Email.java:75)
at Email.main(Email.java:79)
Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type text/html
at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:851)
at javax.activation.DataHandler.writeTo(DataHandler.java:305)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1683)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:585)
… 4 more[/quote]
A única explicação que eu vejo, não sei se estou falando besteira, mas é que o MIME type da máquina que dá esse erro está diferente da minha máquina. Será que tem como colocar alguma coisa no código para não dar esse erro ou tenho que mudar a configuração de alguma coisa no windows?? Conferi todas as bibliotecas e classpath e está tudo igual nas 2 máquinas.