Enviando email com java

Galera estou tendo problema em meu código de envio d email

[quote]import java.awt.;
import java.awt.event.
;
import java.util.;
import javax.swing.
;
import java.io.;
import javax.mail.
;
import javax.mail.internet.*;

public class Boletim implements ActionListener
{ private Frame f;
private JButton btCadastrar;
private JTextField tfCliente;
private TextArea taCodigo;
private JLabel lb1, lb2;

public Boletim() {
f = new Frame(“Boletim”);

 lb1 = new JLabel("Cliente:");
 lb2 = new JLabel("Código HTML:");
 tfCliente = new JTextField(30);
 taCodigo = new TextArea();
 btCadastrar = new JButton("Enviar");
 
 Panel p1=new Panel();
 Panel p3 = new Panel();
 Panel p2=new Panel();
 
 p2.setLayout(new GridLayout(4,1));
 
 p1.add(btCadastrar); 
 p2.add(lb1);
 p2.add(tfCliente);
 p2.add(lb2);
 p3.add(taCodigo);
 
 f.add(p2,BorderLayout.NORTH);
 f.add(p3,BorderLayout.CENTER);
 f.add(p1,BorderLayout.SOUTH);

}

public void actionPerformed(ActionEvent e) {

if (e.getSource()== btCadastrar)
 { 
	Properties p = new Properties();
	p.put("mail.host", "smtp2.locaweb.com.br");

	Session session = Session.getInstance(p, null);
	MimeMessage msg = new MimeMessage(session);

	try {
	    // "de" e "para"!!
	    msg.setFrom(new InternetAddress("nos@guj.com.br"));
	    msg.setRecipient(Message.RecipientType.TO, new InternetAddress("voces@guj.com.br"));

	    // nao esqueca da data!
	    // ou ira 31/12/1969 !!!
	    msg.setSentDate(new Date());

	    msg.setSubject("assunto da mensagem");

	    msg.setText("corpo da mensagem");

	    // evniando mensagem (tentando)
	    Transport.send(msg);
	}
	catch (AddressException e) {
	    // nunca deixe catches vazios!
	}
	catch (MessagingException e) {
	    // nunca deixe catches vazios!
	}

 } 
}

public void launchFrame() {

 f.addWindowListener(new WindowAdapter() {
	public void windowClosing(WindowEvent ev)
	{ f.dispose();
    }

});
f.pack();
f.setVisible(true);
}
}[/quote]

o primeiro erro é na importação das classes import javax.mail.;
e import javax.mail.internet.
;

e em seguida em diversos pontos do codigo de envio, que acho que seja pelo erro na importação.

alguem sabe o que esta acontecendo de errado ?

ps.: baixei o arquivo javamail-1_4.zip e coloquei ele dentro da pasta bin como vi em um tutorial.

Você tinha de ter extraído os arquivos .jar em vez de usar o .zip direto.

Nesse arquivo (javamail-1_4.zip) existem os seguintes arquivos .jar:

dsn.jar
imap.jar
mailapi.jar
pop3.jar
smtp.jar

Normalmente você precisa de pôr mailapi.jar, pop3.jar e smtp.jar. Se for trabalhar com IMAP, acrescente também imap.jar.

ok, mas como vai ficar minha varialvel de ambiente? tenho que alterar ela também não tenho ?

Provavelmente vai.

Você pode tentar baixar uma versão mais antiga da JavaMail (1.3.2 ou 1.3.3), que tem um único arquivo “mail.jar”, que é o que provavelmente você viu no exercício.

vendo dentro do aquivo zip achei todos os arquivos que você me falou, eles estão na pasta lib dentro do zip, e fora dela tem o mail.jar.

além de colocar estes arquivos na pasta o que mais devo fzer?

Nossa, não tinha visto que havia um arquivo javamail-1.4/mail.jar.

Desculpe - no seu caso, basta copiar apenas “mail.jar” no seu diretório de bibliotecas (por exemplo, no caso do Eclipse costuma ser em “lib”, e você tem de pôr esse cara no “build path”. )

Se você não está usando o Eclipse, então veja como pôr mail.jar no seu CLASSPATH.

estou ultilizando o eclipse msm, mas aonde esta o build path, eu achei em projetct --> build all, buid project, build workin set.

mas o build path ainda não achei

Digamos que você esteja usando o Eclipse e tenha posto mail.jar (não se esqueça do arquivo activation.jar!) no diretório lib (não ponha em “bin” porque o Eclipse vai apagar esse arquivo quando você for recompilar o programa!)
Veja com o Package Explorer os arquivos do seu projeto.
Dê um “refresh” no seu projeto, clique com o botão direito sobre o arquivo mail.jar (e o activation.jar) e escolha no menu: Build Path, Add to Build Path
Aí ele deve ir para um outro lugar no Package Explorer, com um ícone um pouco diferente (parece com um jarro com uma tampinha amarela em cima).

blza consegui importar o javax.mail.*;
mas agora o erro esta quando eu tento executar o codigo

[quote]import java.awt.;
import java.awt.event.
;
import java.util.*;

import javax.mail.;
import javax.mail.internet.
;
import javax.swing.*;

public class Boletim implements ActionListener
{ private Frame f;
private JButton btCadastrar;
private JTextField tfCliente;
private TextArea taCodigo;
private JLabel lb1, lb2;

public Boletim() {
f = new Frame(“Boletim”);

 lb1 = new JLabel("Cliente:");
 lb2 = new JLabel("Código HTML:");
 tfCliente = new JTextField(30);
 taCodigo = new TextArea();
 btCadastrar = new JButton("Enviar");
 
 Panel p1=new Panel();
 Panel p3 = new Panel();
 Panel p2=new Panel();
 
 p2.setLayout(new GridLayout(4,1));
 
 p1.add(btCadastrar); 
 p2.add(lb1);
 p2.add(tfCliente);
 p2.add(lb2);
 p3.add(taCodigo);
 
 f.add(p2,BorderLayout.NORTH);
 f.add(p3,BorderLayout.CENTER);
 f.add(p1,BorderLayout.SOUTH);

}

public void actionPerformed(ActionEvent e) {

if (e.getSource()== btCadastrar)
 { 
	Properties p = new Properties();
	p.put("mail.host", "smtp2.locaweb.com.br");

	Session session = Session.getInstance(p, null);
	MimeMessage msg = new MimeMessage(session);

	try {
	    // "de" e "para"!!
	    msg.setFrom(new InternetAddress("nos@guj.com.br"));
	    msg.setRecipient(Message.RecipientType.TO, new InternetAddress("voces@guj.com.br"));

	    // nao esqueca da data!
	    // ou ira 31/12/1969 !!!
	    msg.setSentDate(new Date());

	    msg.setSubject("assunto da mensagem");

	    msg.setText("corpo da mensagem");

	    // evniando mensagem (tentando)
	    Transport.send(msg);
	}
	catch (AddressException ex) {
	    // nunca deixe catches vazios!
	}
	catch (MessagingException ex) {
	    // nunca deixe catches vazios!
	}

 } 
}

public void launchFrame() {

 f.addWindowListener(new WindowAdapter() {
	public void windowClosing(WindowEvent ev)
	{ f.dispose();
    }

});
f.pack();
f.setVisible(true);
}
}[/quote]

ele retorna os erros:
Exception in thread “AWT-EventQueue-0” java.lang.NoClassDefFoundError: javax/activation/DataSource
at Boletim.actionPerformed(Boletim.java:53)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

qual é o problema?

[quote=thingol]não se esqueça do arquivo activation.jar!
[/quote]

Como havia dito, não se esqueça de arranjar o activation.jar! Ele deve estar disponível na mesma página que você pegou o JavaMail ( http://java.sun.com/products/javamail )

não estou conseguindo enviar email para o gmail…
o erro q da eh o seguinte
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first h20sm4602348wxd

[quote=afdestro]não estou conseguindo enviar email para o gmail…
o erro q da eh o seguinte
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first h20sm4602348wxd[/quote]

Estou com este mesmo erro : com.sun.mail.smtp.SMTPSendFailedException: 530

Como vc resolveu???

e eu também…

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first l22sm5843784wrl

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1515)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1054)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:634)
at javax.mail.Transport.send0(Transport.java:189)
at javax.mail.Transport.send(Transport.java:118)
at email.enviandoEmail(email.java:29)
at email.main(email.java:37)

[quote=Psvtec]e eu também…

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first l22sm5843784wrl

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1515)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1054)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:634)
at javax.mail.Transport.send0(Transport.java:189)
at javax.mail.Transport.send(Transport.java:118)
at email.enviandoEmail(email.java:29)
at email.main(email.java:37)

[/quote]

ACRESCENTE NO CODIGO

    //LINHA ADICIONADA PARA RESOLVER O PROBLEMA : com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. 7sm2916430ywo.7
    props.put("mail.smtp.starttls.enable","true");

QUE RESOLVE.

[quote=emanuelcd][quote=Psvtec]e eu também…

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first l22sm5843784wrl

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1515)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1054)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:634)
at javax.mail.Transport.send0(Transport.java:189)
at javax.mail.Transport.send(Transport.java:118)
at email.enviandoEmail(email.java:29)
at email.main(email.java:37)

[/quote]

ACRESCENTE NO CODIGO

    //LINHA ADICIONADA PARA RESOLVER O PROBLEMA : com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. 7sm2916430ywo.7
    props.put("mail.smtp.starttls.enable","true");

QUE RESOLVE.[/quote]

valeu muito obrigadooooooooooooooooooo

[quote=emanuelcd][quote=Psvtec]e eu também…

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first l22sm5843784wrl

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1515)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1054)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:634)
at javax.mail.Transport.send0(Transport.java:189)
at javax.mail.Transport.send(Transport.java:118)
at email.enviandoEmail(email.java:29)
at email.main(email.java:37)

[/quote]

ACRESCENTE NO CODIGO

    //LINHA ADICIONADA PARA RESOLVER O PROBLEMA : com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. 7sm2916430ywo.7
    props.put("mail.smtp.starttls.enable","true");

QUE RESOLVE.[/quote]

Resolveu o problema que eu tinha com o Gmail, demorei até achar uma dica que funcionasse. Valeu.

Esse:

props.put("mail.smtp.starttls.enable","true");

funfou lindamente aqui!

Muito obrigado

Anderson

Quando estou usando uma conta corporativa do gmail, retorno o seguinte erro :

javax.mail.MessagingException: Can’t send command to SMTP host;
nested exception is:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
javax.mail.MessagingException: Can’t send command to SMTP host;

alguém tem idéia do que pode ser ?

Resolveu cara … valeu d++ !

ainda não resolvi.