Jump to content

Como Enviar um Email em Java :).


Ruben_Barbosa
 Share

Recommended Posts

Conforme venho Aqui  e Expresso as minhas duvidas.

Tambem gosto de fazer o Contrario poder ajudar os outros que Têm duvidas.

Contudo deixo aqui uma Classe muito simples e Bem estruturada para poder enviarem um Email 😉.

Nota é preciso Sacar a APImail para Java.

Contudo deixo aqui o link --> http://java.sun.com/products/javamail/


package jlamieconomato;

import java.util.Date;
import java.util.Properties;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.JOptionPane;

public class Email {

    public Email() {
    }

    public void mandar_msg(String Email) {

        try {
            Properties p = new Properties();
            p.put("mail.host", "vosso SMTP ");
            Session session = Session.getInstance(p, null);
            MimeMessage msg = new MimeMessage(session);
            // de 
            msg.setFrom(new InternetAddress(Email));
            // para
            msg.setRecipient(RecipientType.TO, new InternetAddress("vosso Email"));

            // nao esquecer da data!
            // ou ira 31/12/1969 !!!
            msg.setSentDate(new Date());
            //Assunto
            msg.setSubject("Assunto");
            //Conteudo da Mensagem
            msg.setText("TESTE");
            // evniando mensagem (tentando)
            Transport.send(msg);
        } catch (AddressException e) {
          // nunca deixe catches vazios!
            e.getMessage();
        } catch (MessagingException e) {
            // nunca deixe catches vazios!
            e.getMessage();
        }

    }
[\code]
Link to comment
Share on other sites

Boas Ruben

Tive a usar esta tua classe e não a consegui meter a funcionar.  😄

Penso que o problema seja nesta linha de código:

  p.put("mail.google.com", "smtp.gmail.com");

Não tenho que colocar a porta do servidor smtp do google?

Um abraço...

Link to comment
Share on other sites

O objectivo do put é +/- atribuir um valor a uma variável, logo não alteres o 1º parametro...

E agora que me lembro, o 1º parametro acho que era mail.smtp.host

Experimenta (para emails gmail):

p.put("mail.smtp.host", "smtp.gmail.com");

ou

p.put("mail.host", "smtp.gmail.com");

Link to comment
Share on other sites

Ok.

Experimentei das duas formas e não funcionou...

Porque eu acho que tenho que adicionar a porta do servidor de SMTP do google que neste caso é a 465.

Como é que defino isso?  Se eu pretender utilizar autenticação? E utilizar SSL?

Link to comment
Share on other sites

Jarvas,

aqui deixo como enviar um email com conta Google é um bocado diferente  so na parte das propriedades 😄

import java.security.Security;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


public class SimpleMail 
{
private String mailhost = "smtp.gmail.com";

public synchronized void sendMail(String subject, String body, String sender, String recipients) 
																			   throws Exception 
{	

	Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

	Properties props = new Properties();
	props.setProperty("mail.transport.protocol", "smtp");
	props.setProperty("mail.host", mailhost);
	props.put("mail.smtp.auth", "true");
	props.put("mail.smtp.port", "465"); //adicionares a port 465
	props.put("mail.smtp.socketFactory.port", "465");
	props.put("mail.smtp.socketFactory.class",
	"javax.net.ssl.SSLSocketFactory");
	props.put("mail.smtp.socketFactory.fallback", "false");
	props.setProperty("mail.smtp.quitwait", "false");

	Session session = Session.getDefaultInstance(props,
			new javax.mail.Authenticator() 
	{
		protected PasswordAuthentication getPasswordAuthentication()
		{ return new PasswordAuthentication("username","password");	}
	});		

	MimeMessage message = new MimeMessage(session);
	message.setSender(new InternetAddress(sender));
	message.setSubject(subject);
	message.setContent(body, "text/plain");
	if (recipients.indexOf(',') > 0) 
				message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
	else
				message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));


	Transport.send(message);

}

}

Espero ter ajudado 👍

Link to comment
Share on other sites

Ou então tens ainda uma forma mais rapida de fazer 😄

import com.jscape.inet.smtpssl.*;
import com.jscape.inet.email.*;

public class SmtpGmail {
   
   public static void main(String[] args) {
     SmtpSsl smtp = null;
     
     // gmail username - CHANGE THIS
     String username = "username@gmail.com";
     
     // gmail password - CHANGE THIS
     String password = "password";
     
     // address to send mail to - CHANGE THIS
     String to = "user@domain.com";
     try {      
       // create a new SmtpSsl instance connecting securely via port 465 using implicit SSL
       smtp = new SmtpSsl("smtp.gmail.com",465);
       
       // establish secure connection
       smtp.connect();
       
       // login using gmail account details
       smtp.login(username,password);
       
       // create new email message
       EmailMessage message = new EmailMessage();
       message.setTo(to);
       message.setFrom(username);
       message.setSubject("Sending email via Gmail SMTP");
       message.setBody("This is the body of the message");
    
       // send message
       smtp.send(message);
       
       // disconnect      
       smtp.disconnect();      
     } catch(Exception e) {
       // capture any exception and print to console
       e.printStackTrace();
     } 
   }
}

tanto uma classe como a outra estão a funcionar 😄 pois eu testeias 👍 .

Não te esquecas da APIMAIL para java

Link to comment
Share on other sites

Em netbeans é:

Sacas a API.

Depois vais a Tools --> libaries

                    Depois Fazes New Libary --> E das-lhe o nome que queres 😉

                                    Depois nessa libary criada vais a classpath e metes o file mail.jar

                                    Depois vais a source se tiveres a pasta src colocas la senao nao colocas nada

Por fim na pasta Javadoc colocas o caminho da pasta doc da api e pronto

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.