Enviar email proxy

3 respostas
J
Boa tarde, pessoal estou a alguns dias tentando enviar email atravéz de uma App WEB, porém não funcionava... então decidi testar em casa e FUNCIONOU, ou seja, preciso setar o proxy e a porta, pois acho que é isso que esta me empedindo de enviar o email. Como que faço para inserir o proxy e porta nessa classe abaixo?;
public class GmailMailer {

    // Host do Gmail
    private String SMTP_HOST_NAME;
    // Login do usuário
    private String SMTP_AUTH_USER;
    // Senha do usuário
    private String SMTP_AUTH_PWD;
    // E-mail do remetente
    private String emailFromAddress;
    // Título do e-mail
    private String emailSubjectTxt;
    // Conteúdo do e-mail
    private String emailMsgTxt;
    // E-mails dos destinatários
    private String[] emailList;

    public GmailMailer() {
        SMTP_HOST_NAME = "smtp.gmail.com";
        SMTP_AUTH_USER = "[email removido]";
        SMTP_AUTH_PWD = "xxxxx";
    }

    public void enviarEmails() {
        try {
            String[] listaEmails = {"[email removido]"};
            sendEmail("[email removido]", listaEmails, "Teste de envio de email", "Isso é um teste");
        } catch (Exception ex) {
            Logger.getLogger(GmailMailer.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void sendEmail(String fromAddress, String[] toAddress, String subjectTxt, String messageTxt) throws Exception {
        emailFromAddress = fromAddress;
        emailList = toAddress;
        emailSubjectTxt = subjectTxt;
        emailMsgTxt = messageTxt;

        boolean debug = false;
        java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

        // Configurando o endereço SMTP do host
        Properties props = new Properties();
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", SMTP_HOST_NAME);
        props.put("mail.smtp.auth", "true");

        // Caso o e-mail precise de autenticação
        Authenticator auth = new SMTPAuthenticator();
        Session session = Session.getDefaultInstance(props, auth);

        session.setDebug(debug);

        // Criando a mensagem
        Message msg = new MimeMessage(session);

        // Adicionando o e-mail do remetente
        InternetAddress addressFrom = new InternetAddress(emailFromAddress);
        msg.setFrom(addressFrom);

        // Adicionando os e-mails dos destinatários
        InternetAddress[] addressTo = new InternetAddress[emailList.length];
        for (int i = 0; i < emailList.length; i++) {
            addressTo[i] = new InternetAddress(emailList[i]);
        }
        msg.setRecipients(Message.RecipientType.TO, addressTo);

        // Adicionando o título do e-mail
        msg.setSubject(emailSubjectTxt);

        // Adicionando o conteúdo do e-mail
        msg.setContent(emailMsgTxt, "text/plain");
        Transport.send(msg);
    }

    /**
     * Autentica o usuário quando o servidor SMTP requisita
     */
    private class SMTPAuthenticator extends javax.mail.Authenticator {

        public PasswordAuthentication getPasswordAuthentication() {
            String username = SMTP_AUTH_USER;
            String password = SMTP_AUTH_PWD;
            return new PasswordAuthentication(username, password);
        }
    }
}
Obrigado.

3 Respostas

DeGuedes

CAra para o proxy nao sei te dizer… mas para a porta faça o seguinte:

props.setProperty("mail.smtp.port", "25");

[]'s

R

Para fazer a autenticação via proxy da uma olhda na classe ProxyAutenticator que criei, utilizei ela pra outra finalidade (Gmaps), mas acredito que servirá pra você também.

URL url = new URL("http://maps.google.com/maps/geo?q=" + query
				+ "&output=json&oe=utf8&sensor=false");

		Authenticator
				.setDefault(new ProxyAuthenticator("user", "password"));
		SocketAddress proxySocket = new InetSocketAddress("192.124.112.144",
				3128);
		Proxy proxy = new Proxy(Type.HTTP, proxySocket);

		HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);
		conn.connect();

Classe ProxyAutenticator

static class ProxyAuthenticator extends Authenticator {
		private String user, password;

		public ProxyAuthenticator(String user, String password) {
			this.user = user;
			this.password = password;
		}

		protected PasswordAuthentication getPasswordAuthentication() {
			return new PasswordAuthentication(user, password.toCharArray());
		}
	}
J

não consegui…teria outra maneira de adaptar minha classe acima? obrigado

Criado 14 de fevereiro de 2011
Ultima resposta 16 de fev. de 2011
Respostas 3
Participantes 3