Enviar e-mail atributo FROM

Boa tarde a todos

Estou, apenas para testes, codificando um formulário em .jsp que envia e-mail para uma conta do Hotmail.

Está quase tudo certo, porém ao receber o e-mail noto que o remetente não vem o que foi cadastrado na hora do envio de e-mail. Acaba pegando o destinatário como se fosse o remetente.

Segue código-fonte usado:

mail.jsp:

<%-- 
    Document   : index
    Created on : 01/04/2013, 14:48:52
    Author     : sidmar.rodrigues
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form action="enviaremail.jsp" method="post">  
            <table border="0" align="center" bgcolor="gray">  
                <tr>  
                <tr>  
                    <td>  
                        <font color="orange"><b>Nome..:</b></font></td>  
                    <td><input name="nome" type="Text"><font color="orange"></td>  
                </tr>  
                <tr>
                <td>  
                    <font color="orange"><b>E-mail..:</b> </font></td>  
                <td><input type="Text" name="de"><font color="orange"></td>  
                </tr>
                <tr>
                <td>  
                    <font color="orange"><b>Fone..:</b> </font></td>  
                <td><input type="Text" name="fone"><font color="orange"></td>  
                </tr>  
                <tr>  
                    <td><font color="orange"><b>Assunto..:</b></font></td>  
                    <td><select name="assunto">  
                            <option>Chamados</option>  
                            <option>Contato</option>  
                            <option>Informações</option>  
                        </select><font color="orange"></td>  
                </tr>  
                <tr>  
                    <td colspan="2">  
                        <textarea name="obs" rows=10 cols=45>  
                        </textarea>
                    </td>
                </tr>
                <tr>
                    <td><input type="submit" value="Enviar"/></td>
                </tr>
            </table>
        </form>  
    </body>
</html>

enviaremail.jsp:

       <%-- 
    Document   : enviaremail
    Created on : 01/04/2013, 15:25:24
    Author     : sidmar.rodrigues
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%@page import="mail.Email" %>   
        <jsp:useBean id="email" class="mail.Email"/>   

        <%

            String mailServer = "smtp.live.com";
            String assunto = request.getParameter("assunto");
            String para = "meuemail@hotmail.com";
            String de = request.getParameter("de");
            String mensagem;
            mensagem = request.getParameter("obs")+ "\n";  
            email.sendMail(mailServer, assunto, para, de, mensagem);
            response.sendRedirect("ok.html");
        %>   
    </body>
</html>

Email.java:

      /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mail;

import java.util.Date;  
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;  
import javax.servlet.http.HttpServletRequest;
  
public class Email {  
  
public void sendMail (String mailServer, String subject,String to,String from, String mensagem)throws AddressException, MessagingException {  
     
      Properties props = System.getProperties();  
      
      
      props.put("mail.smtp.host",mailServer);   
      props.put("mail.smtp.auth", "true");   
      props.put("mail.debug", "true");   
      props.put("mail.smtp.debug", "true");   
      props.put("mail.mime.charset", "ISO-8859-1");   
      props.put("mail.smtp.port", "25");   
      props.put("mail.smtp.starttls.enable", "true");   
      props.put("mail.smtp.socketFactory.port", "587");   
      props.put("mail.smtp.socketFactory.fallback", "true");   
      props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");  
      
      
      Session session = Session.getDefaultInstance(props,  new javax.mail.Authenticator() {
          @Override
                             protected PasswordAuthentication getPasswordAuthentication() 
                             {
                                   return new PasswordAuthentication("meuemail@hotmail.com", "senha");
                             }
                        });
      
      InternetAddress destinatario = new InternetAddress (to);  
      InternetAddress remetente = new InternetAddress (from);  
      
      session.setDebug(true);

            

	  Message message = new MimeMessage(session);
	  message.setFrom(remetente); //Remetente

	  message.setRecipients(Message.RecipientType.TO, 
						InternetAddress.parse(to)); //Destinatário(s)
	  message.setSubject(subject);//Assunto
	  //message.setText("Enviei este email utilizando JavaMail com minha conta Hotmail!");
	  message.setContent(mensagem.toString(), "text/HTML");
	  /**Método para enviar a mensagem criada*/
	  Transport.send(message);

	  System.out.println("Feito!!!");

             
           // return  "<center><h2>email enviado com sucesso!!</h2></center>";  
      }
}
  
      
      
   }  
}  
      
      

Alguma sugestão para não estar encontrando ou atribuindo o remetente para a mensagem enviada?

Desde já obrigado a todos

eu tenho uma implementação muito parecida com a sua…mas isso não acontece comigo…o remetente continua sendo o que eu informo

a única diferença é a ordem em que eu configuro

	private void enviar(String subject, String message, String recipient) {
		session = Session.getInstance(props);
		Message msg;
		Transport tr;
		try {
			msg = new MimeMessage(session);
			msg.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
			msg.setFrom(new InternetAddress(from));
			msg.setSubject(subject);
			msg.setContent(message, "text/html");
			tr = session.getTransport("smtp");
			tr.connect();
			msg.saveChanges();
			tr.sendMessage(msg, msg.getAllRecipients());
			tr.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

Se eu fosse o administrador do mailserver mail.live.com (que é o que você está usando), eu ativaria uma opção do software que reescreve o atributo “from” para que seja exatamente o da conta usada para enviar o email, não permitindo mudar o remetente, como você está tentando fazer.

Pense bem: imagine se você quisesse fingir que é um email do seu banco preferido e ficasse mandando spam pelo live.com dizendo para confirmar a senha da conta do banco…

Boa noite

Lembrando que preciso que o remetente mude, pois pretendo implementar esse código, e não posso fixar o remetente. Fixei o destino pois isso é importante na aplicação.

Então você precisa usar um outro provedor de email que não o live.com.
Note que quase 100% dos provedores gratuitos de email usam essa política (de não deixar mexer no “from”, porque evita que o provedor seja usado para spam. ). Talvez pagando você consiga mudar o remetente…

ok… no caso voce precisa ter um dominio. voce tem total acesso pra trocar se voce colocar o seu provedor, login e senha, ele identifica e voce faz oque voce quiser…
CUIDADO que se for um disparador de e-mail para email marketing, precisa as vezes tomar alguns cuidados.

Sao “regras”, da uma pesquisada em regras de email marketing