Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

crax15

Enviar email a varios contactos

Mensagens Recomendadas

crax15

Tenho o seguinte codigo para enviar um email a varios contactos que tenho numa base de dados:

Dim mMailMessage As New MailMessage()
Dim dados As New Data.DataSet
Dim adaptador As New SqlDataAdapter("Select E_Mail from Utilizadores", ligacao)

' Set the sender address of the mail message
 mMailMessage.From = New MailAddress("meu_email@gmail.com")

 ' Set the subject of the mail message
 mMailMessage.Subject = "Assunto"
 ' Set the body of the mail message
 mMailMessage.Body = "test"
 ' Secify the format of the body as HTML
 mMailMessage.IsBodyHtml = True
 ' Set the priority of the mail message to normal
 mMailMessage.Priority = MailPriority.Normal



 Dim n_email As Integer
 adaptador.Fill(dados, "Emails")
 ligacao.Open()
 comando.Connection = ligacao
 comando.CommandText = "SELECT count(*) AS maximo FROM Utilizadores"
 comando.ExecuteScalar()
 n_email = comando.ExecuteScalar
 ligacao.Close()

 For i = 1 To n_email
	 ' Set the recepient address of the mail message
	 mMailMessage.To.Add(New MailAddress(dados.Tables("Emails").Rows(i).Item(0)))
	 ' Instantiate a new instance of SmtpClient
	 Dim mSmtpClient As New SmtpClient()
	 ' Send the mail message
	 mSmtpClient.Send(mMailMessage)
 Next

Aparente mente parece que esta tudo bem, so que a conecçao exede o tempo e dá erro, nao sei o porque, alguem me poderia dar uma ajudinha? Obrigado!


Pedro'O

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

hmmmm, falta definir o servidor de SMTP

mSmtpClient.SmtpServer = "....."

E ja agora...

 For i = 1 To n_email
' Set the recepient address of the mail message
mMailMessage.To.Add(New MailAddress(dados.Tables("Emails").Rows(i).Item(0)))
' Instantiate a new instance of SmtpClient
Dim mSmtpClient As New SmtpClient()
' Send the mail message
mSmtpClient.Send(mMailMessage)
Next

Em cada ciclo repetes a lista anterior e acrescentas mais um email.

O mMailMessage.To tem de ser limpo antes de adicionares a conta de email, senão fica com os emails anteriores mais o atual.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
crax15

eu o servidor de SMTP tenho.o definido no webconfig assim:

<system.net>
<mailSettings>
 <smtp from="*******@gmail.com">
 <network host="smtp.gmail.com" port="465" userName="*******@gmail.com" password="******"/>
 </smtp>
</mailSettings>
</system.net>

Editado por crax15

Pedro'O

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Devias censurar esses dados.

E se enviares um só email funciona?

Já verificaste a situação de estar a adicionar emails ao To sem limpar em cada ciclo?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
crax15

Para limpar seria assim nao?

For i = 1 To n_email
	    mMailMessage.To.Clear()
	    ' Set the recepient address of the mail message
	    mMailMessage.To.Add(New MailAddress(dados.Tables("Emails").Rows(i).Item(0)))
	    ' Instantiate a new instance of SmtpClient
	    Dim mSmtpClient As New SmtpClient()
	    ' Send the mail message
	    mSmtpClient.Send(mMailMessage)
    Next


Pedro'O

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Leudassdf

Boas,

Eu tambem tive problemas ao tenter enviar emails pela porta 465. Eu para resolver o problema coloquei a porta 587.

Basicamente a 465 e uma porta com SSL e a 487 é com TLS.

Espero ter ajudado.

Já agora aparece-te algum erro? O que acontece?

Cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
crax15

Nao fiz dessa maneira, arranjei este codigo e funcionou, agora um problema que tive foi com alguns emails que dava erro, penso que seria por utilizar caracteres especiais no endereço de email, de resto esta a funcionar perfeitamente, até agora nao me tem dado problemas.

Dim cliente As New SmtpClient
    Dim remetente As New MailAddress("mail@gmail.com")

    Dim mensagem As New MailMessage
    'mensagem.To.Add(destinatário)

    For i = 0 To n_email - 1
	    ' Set the recepient address of the mail message
	    mensagem.Bcc.Add(New MailAddress(dados.Tables("Emails").Rows(i).Item(0)))

    Next
    mensagem.From = remetente
    mensagem.Subject = "Temos um novo filme para si!"
    mensagem.Body = "corpo"

    mensagem.IsBodyHtml = True
    cliente.Host = "smtp.gmail.com"
    cliente.Port = 587
    Dim credenciais As New System.Net.NetworkCredential
    credenciais.UserName = "username"
    credenciais.Password = pass
    cliente.EnableSsl = True
    cliente.UseDefaultCredentials = False
    cliente.Credentials = credenciais

    Try
	    cliente.Send(mensagem)
	    MsgBox("Envio", MsgBoxStyle.Information, "")
    Catch ex As Exception
	    MsgBox("Erro", MsgBoxStyle.Critical, "Falha de comunicação")
    End Try


Pedro'O

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.