Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Maykel-ctba

Como setar porta SMTP?

Recommended Posts

Fala galera!

 

Não sou de me aventurar no ASP.NET, e infelizmente estou com este caso na mão.

O servidor terra agora exige que todos os envios de e-mails sejam autenticados pelo site.

 

Então, criei as variáveis SMTPHOST, SMTPAutenticado, SMTPLogin e SMTPSenha.

Testando no meu e-mail da locaweb, o e-mail funcionou com sucesso.

 

Porém, no Terra, é necessário especificar uma porta (587).

 

E não sei como fazer isso. Eu criei a variável abaixo no web.config (SMTPPorta), e na classe que envia os e-mails, a especifiquei de acordo. Mas mesmo assim não envia.

 

web.config

<appSettings>
	<!-- Definições de SMTP -->
	<add key="EmailDe" value="teste@teste.com.br"/>
	<add key="SMTPHost" value="smtp.terra.com.br"/>
	<!-- N: Não autenticado; S: Autenticado -->
	<add key="SMTPAutenticado" value="S"/>
	<add key="SMTPPorta" value="587"/>
	<add key="SMTPLogin" value="teste@teste.com.br"/>
	<add key="SMTPSenha" value="senha"/>
	<!-- E-mail para recebimento das mensagens de contato -->
	<add key="EmailContato" value="teste@teste.com.br"/>
	<!-- E-mail para recebimento dos currículos -->
	<add key="EmailCurriculo" value="teste@teste.com.br"/>
</appSettings>

 

Email.cs (Classe que faz o envio)

    public bool Enviar()
   {
       bool enviado = false;

       // * Criando o remetente do e-mail
       MailAddress de = new MailAddress(this.remetenteEmail, this.remetenteNome);
       // * Criando o destinatário do e-mail
       MailAddress para = new MailAddress(this.paraEmail, this.paraNome);

       // * Criando o objeto e-mail
       MailMessage email = new MailMessage(de, para);
       // * Definindo o assunto do e-mail
       email.Subject = this.assunto;
       // * Definindo HTML no corpo do e-mail
       email.IsBodyHtml = true;
       // * Definindo o corpo do e-mail
       email.Body = this.mensagem;
       // * Definindo a codificação do e-mail
       email.BodyEncoding = System.Text.Encoding.GetEncoding("ISO-8859-1");
       // * Definindo a prioridade do e-mail
       email.Priority = MailPriority.Normal;

       // * Definindo o servidor SMTP
       SmtpClient smtp = new SmtpClient(WebConfigurationManager.AppSettings["SMTPHost"]);

	// * Define a porta do SMTP
	smtp.Port = int.Parse(WebConfigurationManager.AppSettings["SMTPPorta"]);

       // * Definindo as credenciais do servidor SMTP
       if (WebConfigurationManager.AppSettings["SMTPAutenticado"].Equals("N"))
       {
           smtp.Credentials = CredentialCache.DefaultNetworkCredentials;
       }
       else
       {
           smtp.Credentials = new NetworkCredential(WebConfigurationManager.AppSettings["SMTPLogin"], WebConfigurationManager.AppSettings["SMTPSenha"]);
       }

       try
       {
           // * Enviando o e-mail
           smtp.Send(email);

           enviado = true;
       }
       catch (Exception ex) 
       {
           enviado = false;
       }
       finally
       {
           if (email != null) {
               // * Limpando a classe da memória
               email.Dispose();
           }
       }

       return enviado;
   }

 

Estou especificando certo na classe? Acredito que o erro possa estar alí, mas eu não sei mexer com ASP.NET direito <_<

Compartilhar este post


Link para o post
Compartilhar em outros sites

No construtor do SmtpClient como segundo parâmetro você pode informar a porta.

 

// * Definindo o servidor SMTP
SmtpClient smtp = new SmtpClient(WebConfigurationManager.AppSettings["SMTPHost"], AquiNumeroPorta);

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado @quintelab! Não sabia deste segundo parâmetro. Infelizmente não funcionou mas deve ser questões de configuração do servidor, já que com a Locaweb funciona normalmente, mas no Terra não.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.