Upload e envio de email não funciona!

0 respostas
D

: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 [email removido]
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=<a href="http://java.fckeditor.net">http://java.fckeditor.net</a>” 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

Criado 18 de dezembro de 2008
Respostas 0
Participantes 1