Upload e envio de email não funciona!

:smiley:
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;”%>

Mala Direta <%
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