publicvoidsendEmail()throwsEmailException{SimpleEmailemail=newSimpleEmail();//Utilize o hostname do seu provedor de emailSystem.out.println("alterando hostname...");email.setHostName("smtp.gmail.com");//Quando a porta utilizada não é a padrão (gmail = 465)email.setSmtpPort(465);//Adicione os destinatáriosemail.addTo("[email removido]","Jose");//Configure o seu email do qual enviaráemail.setFrom("[email removido]","Seu nome");//Adicione um assuntoemail.setSubject("Test message");//Adicione a mensagem do emailemail.setMsg("This is a simple test of commons-email");//Para autenticar no servidor é necessário chamar os dois métodos abaixoSystem.out.println("autenticando...");email.setSSL(true);email.setAuthentication("username","senha");System.out.println("enviando...");email.send();System.out.println("Email enviado!");}
O exemplo HtmlEmail email = new HtmlEmail(); não funciona.
publicSendMail()throwsException{System.out.println("foi pelo construtor");//email = new HtmlEmail();HtmlEmailemail=newHtmlEmail();enviarEmailNovoAtendimento("smtp.gmail.com","teste","[email removido]","senha");enviarMensagemHtml("[email removido]",6024);}
Usando o segundo exemplo
Essa linha não executa, na verdade não consigo fazer o new SimpleMail ser executado
SimpleEmailemail=newSimpleEmail();
G
gustavoa
importorg.apache.commons.mail.EmailException;importorg.apache.commons.mail.HtmlEmail;importorg.apache.commons.mail.MultiPartEmail;importorg.apache.commons.mail.SimpleEmail;importcom.sun.org.apache.bcel.internal.generic.NEW;publicclassSendMail{publicstaticHtmlEmailemail;@SuppressWarnings("deprecation")publicstaticvoidenviarEmailNovoAtendimento(StringnomeServidorSmtp,StringnomeRemetente,StringemailRemetente,StringsenhaRementente)throwsException{System.out.println("inicia html");email=newHtmlEmail();System.out.println("SSL");email.setSSL(true);System.out.println("TLS");email.setTLS(true);System.out.println("porta");email.setSmtpPort(465);System.out.println("porta smtp");email.setHostName(nomeServidorSmtp);System.out.println("authentication");email.setAuthentication(emailRemetente,senhaRementente);System.out.println("set from");email.setFrom(emailRemetente,nomeRemetente);}/*private static void anexarArquivoMensagem(String diretorioAnexo,String nomeArquivo) throws EmailException { EmailAttachment anexo = new EmailAttachment(); anexo.setPath(diretorioAnexo + File.separator + nomeArquivo); anexo.setDisposition(EmailAttachment.ATTACHMENT); anexo.setName(nomeArquivo); email.attach(anexo); }*/publicstaticvoidenviarMensagemHtml(StringemailDestinatario,IntegercodigoAtendimento)throwsEmailException{email.addTo(emailDestinatario);email.setSubject("teste");email.setMsg("<p>Segue em anexo o arquivo pdf do post sobre API <b>Commons-Email</b> da Apache.</p>");// email.setHtmlMsg("<p>Segue em anexo o arquivo pdf do post sobre API <b>Commons-Email</b> da Apache.</p>");email.send();System.out.println("Email enviado com sucesso!");}//SE EU RODAR ESSA CLASSE PELO JAVA APPLICATION//RODA BELEZApublicstaticvoidmain(String[]args)throwsException{try{System.out.println("foi pelo main");enviarEmailNovoAtendimento("smtp.gmail.com","teste","[email removido]","senha");enviarMensagemHtml("[email removido]",6024);//System.out.println("Email enviado com sucesso!");}catch(Exceptione){System.err.println(e.getMessage());}}//SE EU FOR RECEBER OS PARAMETROS PARA ENVIO DE OUTRA CLASSE//ESSA CLASSE NÃO CONSEGUE INICIAR O //email = new HtmlEmail();publicSendMail()throwsException{System.out.println("foi pelo construtor");//email = new HtmlEmail();HtmlEmailemail=newHtmlEmail();enviarEmailNovoAtendimento("smtp.gmail.com","teste","[email removido]","senha");enviarMensagemHtml("[email removido]",6024);}}
diogogama
Amigo, é o seguinte, vc precisa ver o que retorna o new HtmlEmail(), ele cria uma instancia de qual objeto? se for, por exemplo, uma extância de qualquerObjetoDeEmail, então vc deve instanciar um objeto desta instância, por exemplo:
Mas não entendo o que acontece quando chamo de outra classe o método construtor.
não roda.
diogogama
posta a classe para nós novamente… e posta a classe que esta chamando essa tmb…
G
gustavoa
Classe que chama é basicamente desta maneira
//chamaoconstrutorSendMailsm=newSendMail();
E a classe que eu chamo está no post ai pra cima
diogogama
qual erro ta dando??? posta ele pra gente…
Janerson
gustavoa:
Classe que chama é basicamente desta maneira
//chamaoconstrutorSendMailsm=newSendMail();
E a classe que eu chamo está no post ai pra cima
Amigo enviei com esse metodo usando a api JAVAMAIL
se vc quer apenas enviar texto puro acho que isso lhe serve
importjava.util.Properties;importjavax.mail.Address;importjavax.mail.Message;importjavax.mail.MessagingException;importjavax.mail.PasswordAuthentication;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeMessage;publicclassForumGuj{publicstaticvoidmain(String[]args){Propertiesprops=newProperties();/** Parâmetros de conexão com servidor Gmail */props.put("mail.smtp.host","smtp.gmail.com");props.put("mail.smtp.socketFactory.port","465");props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");props.put("mail.smtp.auth","true");props.put("mail.smtp.port","465");Sessionsession=Session.getDefaultInstance(props,newjavax.mail.Authenticator(){protectedPasswordAuthenticationgetPasswordAuthentication(){returnnewPasswordAuthentication("[email removido]","senha");}});/** Ativa Debug para sessão */session.setDebug(true);try{Messagemessage=newMimeMessage(session);message.setFrom(newInternetAddress("[email removido]"));//RemetenteAddress[]toUser=InternetAddress//Destinatário(s).parse("[email removido], [email removido]");message.setRecipients(Message.RecipientType.TO,toUser);message.setSubject("Enviando email com JavaMail");//Assuntomessage.setText("Enviei este email utilizando JavaMail com minha conta GMail!");/**Método para enviar a mensagem criada*/Transport.send(message);System.out.println("Feito!!!");}catch(MessagingExceptione){thrownewRuntimeException(e);}}}
G
gustavoa
Meu caro amigo, a forma que você fez seu código, claro que funciona, mas o meu também funciona desta maneira, pelo main.
Agora eu te peço, tenta fazer uma outra classe disparar esse envio de email usando o construtor.
Provavelmente, irá ocorrer o mesmo erro que o meu.
importjava.util.Properties;importjavax.mail.Address;importjavax.mail.Message;importjavax.mail.MessagingException;importjavax.mail.PasswordAuthentication;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeMessage;importorg.apache.commons.mail.EmailException;classEmail{Email(Stringenvia,Stringrecebe)throwsEmailException{Propertiesprops=newProperties();/** Parâmetros de conexão com servidor Gmail */props.put("mail.smtp.host","smtp.gmail.com");props.put("mail.smtp.socketFactory.port","465");props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");props.put("mail.smtp.auth","true");props.put("mail.smtp.port","465");Sessionsession=Session.getDefaultInstance(props,newjavax.mail.Authenticator(){protectedPasswordAuthenticationgetPasswordAuthentication(){returnnewPasswordAuthentication("seu email","sua_senha");}});/** Ativa Debug para sessão */session.setDebug(true);try{Messagemessage=newMimeMessage(session);message.setFrom(newInternetAddress(envia));//RemetenteAddress[]toUser=InternetAddress.parse(recebe);message.setRecipients(Message.RecipientType.TO,toUser);message.setSubject("Enviando email com JavaMail");//Assuntomessage.setText("Enviei este email utilizando JavaMail com minha conta GMail!");/**Método para enviar a mensagem criada*/Transport.send(message);System.out.println("Feito!!!");}catch(MessagingExceptione){thrownewRuntimeException(e);}}}