Pessoal, estou com um probleminha na hora de enviar e-mail com anexo, só estar dando erro na seguinte linha do código:
Seguinte erro:
[color=red]cannot find symbol
symbol: method attach(org.apache.commons.mail.EmailAttachment)[/color]
[code]
public void enviarMensagem(String l, String senha, String assunto, String area, String para, String endereco) throws EmailException{
EmailAttachment attachment = new EmailAttachment();
attachment.setPath(endereco); //caminho da imagem
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription("Anexo");
attachment.setName("ArquivoAnexo");
simpleEmail.setHostName(hostName);
simpleEmail.setAuthentication(l+"@gmail.com", senha);
simpleEmail.setSSL(true);
simpleEmail.setFrom(l+"@gmail.com");
simpleEmail.addTo(para);
simpleEmail.setSubject(assunto);
simpleEmail.setMsg(area);
simpleEmail.attach(attachment); //ERRO AQUI !!!!!!!!!!!
simpleEmail.send();
}[/code]
Alguém me ajuda?
Bom dia.
Vc usa o MailJava para o envio do e-mail?
sem o anexo ele envia o e-mail corretamente?
Abraços
Pelo que descreve na documentação, para mandar email com anexo, vc precisa usar a classe MultiPartEmail, e nao a SimpleEmail.
http://commons.apache.org/email/userguide.html
Eu utilizo o MailJava para poder enviar e-mails com anexo do meu sistema.
A única diferença para o seu pode ser que o meu também pode enviar uma lista de anexos.
Segue uma parte do código que eu utilizo:
MailJava mj = new MailJava();
String assunto = tela.getConteudoTxtAssunto();
String bodyMessage = tela.getConteudoMensagem();
//configuracoes de envio
mj.setSmtpHostMail("smtp.igrejabatistaviva.com");
//mj.setSmtpPortMail("587");
mj.setSmtpAuth("true");
mj.setSmtpStarttls("true");
mj.setUserMail("*******");
mj.setFromNameMail("Igreja Batista Viva");
mj.setPassMail("****");
mj.setCharsetMail("ISO-8859-1");
mj.setSubjectMail(assunto);
mj.setBodyMail(bodyMessage);
mj.setTypeTextMail(MailJava.TYPE_TEXT_HTML);
//sete quantos destinatarios desejar
Map<String, String> map = new HashMap<String, String>();
String [] mails = ControleTelaMembros.getMails();
String [] names = ControleTelaMembros.getNames();
for (int i=0;i<mails.length;i++){
map.put(mails[i], names[i]);
}
mj.setToMailsUsers(map);
//seta quatos anexos desejar
List<String> files = new ArrayList<String>();
List<AnexoMail> anexos = new ArrayList();
anexos = tela.getAllItems();
for(int i=0;i<anexos.size();i++){
files.add(anexos.get(i).getCaminho());
}
//files.add("C:\\Users\\Andre\\Pictures\\11.jpg");
//files.add("C:\\images\\hover_next.png");
//files.add("C:\\images\\hover_prev.png");
mj.setFileMails(files);
try {
new Mail().senderMail(mj);
JOptionPane.showMessageDialog(null,"E-mail enviado com sucesso!","SUCESSO",JOptionPane.INFORMATION_MESSAGE);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Model;
/**
*
* @author Andre
*/
public class AnexoMail {
private String caminho;
public String getCaminho() {
return caminho;
}
public void setCaminho(String caminho) {
this.caminho = caminho;
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Control;
import java.util.List;
import java.util.Map;
/**
*
* @author Andre
*/
public class MailJava {
//indica se o formato de texto será texto ou html
public static final String TYPE_TEXT_PLAIN = "text/plain";
public static final String TYPE_TEXT_HTML = "text/html";
//indica qual será o servidor de email(gmail, hotmail...)
private String smtpHostMail;
//indica a porta de acesso ao servidor
private String smtpPortMail;
//indica que a necessidade de autenticação no servidor(true ou false)
private String smtpAuth;
//indica ao servidor que ele está recebendo uma conexão segura
private String smtpStarttls;
//nome do remetente do email
private String fromNameMail;
//email do remetente
private String userMail;
//senha do email do remetente
private String passMail;
//assunto do email
private String subjectMail;
//corpo do email, onde estará o texto da mensagem
private String bodyMail;
//lista com email e nome dos destinatários
private Map<String, String> toMailsUsers;
//lista contendo os arquivos anexos
private List<String> fileMails;
//charset, no caso de html é necessário
private String charsetMail;
//tipo do formato da mensagem, texto ou html
private String typeTextMail;
// gere os métodos getters and setters
public String getBodyMail() {
return bodyMail;
}
public void setBodyMail(String bodyMail) {
this.bodyMail = bodyMail;
}
public String getCharsetMail() {
return charsetMail;
}
public void setCharsetMail(String charsetMail) {
this.charsetMail = charsetMail;
}
public List<String> getFileMails() {
return fileMails;
}
public void setFileMails(List<String> fileMails) {
this.fileMails = fileMails;
}
public String getFromNameMail() {
return fromNameMail;
}
public void setFromNameMail(String fromNameMail) {
this.fromNameMail = fromNameMail;
}
public String getPassMail() {
return passMail;
}
public void setPassMail(String passMail) {
this.passMail = passMail;
}
public String getSmtpAuth() {
return smtpAuth;
}
public void setSmtpAuth(String smtpAuth) {
this.smtpAuth = smtpAuth;
}
public String getSmtpHostMail() {
return smtpHostMail;
}
public void setSmtpHostMail(String smtpHostMail) {
this.smtpHostMail = smtpHostMail;
}
public String getSmtpPortMail() {
return smtpPortMail;
}
public void setSmtpPortMail(String smtpPortMail) {
this.smtpPortMail = smtpPortMail;
}
public String getSmtpStarttls() {
return smtpStarttls;
}
public void setSmtpStarttls(String smtpStarttls) {
this.smtpStarttls = smtpStarttls;
}
public String getSubjectMail() {
return subjectMail;
}
public void setSubjectMail(String subjectMail) {
this.subjectMail = subjectMail;
}
public Map<String, String> getToMailsUsers() {
return toMailsUsers;
}
public void setToMailsUsers(Map<String, String> toMailsUsers) {
this.toMailsUsers = toMailsUsers;
}
public String getTypeTextMail() {
return typeTextMail;
}
public void setTypeTextMail(String typeTextMail) {
this.typeTextMail = typeTextMail;
}
public String getUserMail() {
return userMail;
}
public void setUserMail(String userMail) {
this.userMail = userMail;
}
}
Bacana . Eu tenho usado essa solução da apache, até o momento tem funcionado sem problemas.
Ela tb tem suporte para vários anexos, mas pelo jeito tem que criar uma nova instancia da classe “EmailAttachment” para cada anexo, o que é mais trabalhoso do que MailJava.
O que realmente uso e gostei da solução da apache foi a opção de envio de texto em formato HTML.
Olá amigo.
É ficou bem legal essa forma de envio.
Ficou de fácil manutenção e entendimento.
Testem ae e qualquer coisa me avisem!
Abraços