Ola pessoal! estou de volta a programação java e estou tendo sérios problemas e gostaria da ajuda de vcs?!
É o seguinte estou fazendo uma mala direta web onde os emails estão dentro de um arquivo txt em q o usuario irá fazer um upload desse arquivo o sistema ira fazer uma varredura de todos os e-mail dentro desse arquivo e iria disparar os emails a todos com o mesmo assunto, mesmo texto e mesmo anexo informado pelo o usuario.
São 2 os problemas
1º Através de um Iterator eu leio os arquivos e o corpo do texto só q qndo ele le o arquivo txt ele só guarda o último e se eu colocar dentro de um loop ele não deixa enviar pq o corpo está vazio dá null. como faço para resolver isso?
2º qndo tento enviar somente 1 para ver se tá funcionando da erro na classe de envio : javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Unable to relay for fnebuloso@hotmail.com
o q estou fazendo de errado?!
segue os codigos:
jsp:
<?xml version="1.0" encoding="UTF-8" ?><%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8” import=“br.gov.esporte.editor.*” %>
<%@ taglib uri=“http://java.fckeditor.net” prefix=“FCK” %>
<%@page import=“br.gov.esporte.tags.EditorTag”%>
<%@page import=“br.gov.esporte.vo.MaladiretaVo;”%>
FCKeditor fckEditor = new FCKeditor(request, "EditorDefault");
%>
<body>
<center><h1>:: Mala Direta ::</h1></center>
<form name="formulario" id="formulario" action="../MalaDiretaServlet" method="post" target="_blank" enctype="multipart/form-data">
<% MaladiretaVo maladiretaVo = new MaladiretaVo(); %>
<div>De: <textarea rows="2" name="remetente" cols="185"></textarea>
<div>Para: <input type="file" name="email" value="Arquivo"/></div>
<br>
<br>
<div>Assunto: <textarea rows="2" name="assunto" cols="185"></textarea></div>
<input type="file" name="anexo" value="Anexo" />
<br>
<br>
<%
fckEditor.setValue("");
out.println(fckEditor);
%>
<br />
<input type="submit" value="Submit" /></form>
</body>
servlet:
package br.gov.esporte.servlet;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import br.gov.esporte.exception.NegocioException;
import br.gov.esporte.handlers.EnviaEmailComAnexoHandler;
public class MalaDiretaServlet extends javax.servlet.http.HttpServlet implements
javax.servlet.Servlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
File uploadFile = null;
DiskFileItemFactory factory;
String repositorio;
List fileItems;
ServletFileUpload upload;
PrintWriter out = response.getWriter();
response.setContentType("text/html");
try {
factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);
repositorio = getServletContext().getInitParameter("repositorio");
if (repositorio == null) {
throw new NegocioException(
"É preciso definir o parâmetro repositorio");
}
factory.setRepository(new File(repositorio));
upload = new ServletFileUpload(factory);
upload.setSizeMax(2560000l);
fileItems = upload.parseRequest(request);
// request.getRequestDispatcher("jsp/sample01.jsp").forward(request,
// response);
String receptora = "";
String assunto = "";
String editor = "";
String anexo = "";
String remetente = "";
// int tamanho;
// String email[] = new String[tamanho];
String email = “”;
for (Iterator i = fileItems.iterator(); i.hasNext();) {
FileItem fi = (FileItem) i.next();
String fileName;
if(fi.getFieldName().equals("anexo")){
fileName = fi.getName();
anexo = fi.getName();
}
else{
fileName = fi.getFieldName();
}
uploadFile = new File(repositorio, fileName);
fi.write(uploadFile);
System.out.println("filename: "+fileName);
out.println(fileName);
if (uploadFile == null || upload.equals("")) {
throw new NegocioException(
"Não foi possível obter o arquivo de lista de emails");
}
if (!fi.getFieldName().equals("anexo")) {
FileReader leitor = new FileReader(uploadFile);
BufferedReader buffer = new BufferedReader(leitor);
while ((receptora = buffer.readLine()) != null) {
System.out.println(receptora);
out.println(receptora);
out.println("<br>");
if(fi.getFieldName().equals("remetente")){
remetente = receptora;
}
if(fi.getFieldName().equals("email")){
// for(int j=0; j<tamanho;j++){
// email[tamanho] = receptora;
// tamanho++;
//
// }
email = receptora;
}
if(fi.getFieldName().equals(“assunto”)){
assunto = receptora;
}
if(fi.getFieldName().equals(“EditorDefault”)){
editor = receptora;
}
//Não pode colocar aqui pois ele le um por um!
}
}
}
EnviaEmailComAnexoHandler envia = new EnviaEmailComAnexoHandler();
envia.enviaEmailComAnexo(remetente,email,anexo,assunto,editor,repositorio);
out.close();
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
email:
package br.gov.esporte.handlers;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.servlet.jsp.tagext.TryCatchFinally;
public class EnviaEmailComAnexoHandler {
private static String strIPServidor = ""// o ip eu retirei para não causar problemas!!;
public static void enviaEmailComAnexo(String from, String to, String cc, String assunto, String mensagem, String caminhoArquivo) throws AddressException, MessagingException{
try{
Properties props = System.getProperties();
props.put("mail.smtp.host", strIPServidor);
Session session = Session.getInstance(props,null);
// create a message
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = { new InternetAddress(to) };
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(assunto);
// create and fill the first message part
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setContent(mensagem, "text/html");
// create the second message part
MimeBodyPart mbp2 = new MimeBodyPart();
// attach the file to the message
FileDataSource fds = new FileDataSource(caminhoArquivo);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());
// create the Multipart and add its parts to it
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);
// add the Multipart to the message
msg.setContent(mp);
// set the Date: header
msg.setSentDate(new Date());
// send the message
Transport.send(msg);
}catch(NullPointerException e){
e.printStackTrace();
}
}
}
valeu galera fico no aguardo