Início > Programação > Enviando E-mail Através de um Servidor SMTP

Enviando E-mail Através de um Servidor SMTP

Enviar um e-mail usando Gmail Java é bem simples:

		String from = "user@gmail.com";
		String to = "anotheruser@gmail.com";

		Properties props = new Properties();
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.host", "smtp.gmail.com");
		props.put("mail.smtp.port", "587");

		Session session = Session.getInstance(props,
				new javax.mail.Authenticator() {
					protected PasswordAuthentication getPasswordAuthentication() {
						return new PasswordAuthentication("user@gmail.com",
								"password");
					}
				});
		
		MimeMessage message = new MimeMessage(session);
		message.setSubject("Teste");
		message.setContent("Teste", "text/plain");

		message.setFrom(new InternetAddress(from));
		Address toAddress = new InternetAddress(to);
		message.addRecipient(Message.RecipientType.TO, toAddress);

		Transport.send(message);

Mas se sua rede conta com um servidor SMTP, é necessário fazer mais algumas configurações. Vou mostrar como habilitar o envio de e-mail em um servidor que utiliza Sendmail. Vou supor que o Sendmail já está configurado no servidor e que seu IP é conhecido na rede.

O Sendmail é um agente de transferência de e-mail de código aberto que suporta diversos tipos de de transferência de email e métodos de entrega como o SMTP. Para fazer com que seu host possa enviar e-mails através desse serviço, faça as seguintes alterações no servidor:

1. Edite o arquivo /etc/mail/access. O arquivo access é uma base de dados que mapeia ações de aceitar ou rejeitar e-mails à partir de domínios selecionados.

2. Insira a linha abaixo no arquivo:

Connect:{SEU_IP}                       RELAY

2.1. A ação RELAY indica que todos os e-mails endereçados ou recebidos do domínio indicado devem ser aceitos.

3. Execute o comando abaixo para criar o access database map:

[root@host]#makemap hash /etc/mail/access.db < /etc/mail/access

4. Levante o serviço do sendmail:

 
[root@host]#service sendmail restart

5. Adapte seu código para referenciar o servidor SMTP:

		String from = "user@mgmail.com";
		String to = "anotheruser@gmail.com";

		Properties props = new Properties();
		props.put("mail.smtp.host", {IP_SMTP_SERVER});
		props.put("mail.smtp.connectiontimeout", "10000");
		props.put("mail.smtp.timeout", "15000");
		props.put("mail.smtp.allow8bitmime", "false");

		Session session = Session.getInstance(props);
		
		MimeMessage message = new MimeMessage(session);
		message.setSubject("Teste");
		message.setContent("Teste", "text/plain");

		message.setFrom(new InternetAddress(from));
		Address toAddress = new InternetAddress(to);
		message.addRecipient(Message.RecipientType.TO, toAddress);

		Transport.send(message);

Referências:

http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/
http://stackoverflow.com/questions/2957299/how-do-i-configure-a-mail-server-for-use-with-javamail
http://stackoverflow.com/questions/1946032/how-to-configure-environment-to-use-javamail
http://dbaron.org/linux/sendmail

Anúncios
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: