E-mail desde formulario

Quiero mandar desde un botón de un formulario, un e-mail con un informe adjunto.
El correo remitente y destinatario es Lotus Notes del trabajo.
Con el código que pongo más abajo (encontrado en internet) no he conseguido hacerlo ya que me sale el siguiente mensaje:

"el servidor rechazo una o mas direcciones de destinatarios. Respuesta del servidor: xxx y.y.y <xx.Red-xx-xxx-xxx.dynamicIP.rima-tde.net[xx.xxx.xxx.xx]>: Client
Host rejected: Your message was rejected due to a spam filtering.
Please see http://www.sophos.com/security/ip-lookup?ip=xx.xxx.xxx.xx"


Probé a cambiar el correo remitente por uno de terra y me envió el mensaje (aunque en la bandeja de enviados de terra no constaba).
¿Me podrías orientar para solucionar el mensaje de error?
Ya puestos... ¿Podría aparecer en la bandeja de enviados?
Si te parece mejor otra manera de hacerlo, perfecto.
Gracias de antemano y discúlpame porque mis conocimientos son bastante limitados.

El código al que me refería es el siguiente:
Private Sub Comando29_Click()
On Error GoTo sol_err
'Definimos dos constantes, donde introduciremos la cuenta de correo, el password y el smtp
Const miMail As String = "[email protected]"
Const miPass As String = "xxxxxxx"
Const miSmtp As String = "smtp.terra.es"
'Definimos las variables
Dim elAsunto As String, elMsg As String
Dim mailA As String, mailCC As String, mailCCO As String
'Inicializamos las variables
elAsunto = Nz(Me.TxtAsunto.Value, "")
elMsg = Nz(Me.txtMsg.Value, "")
mailA = Nz(Me.MailCont.Value, "")
mailCC = Nz(Me.cboCC.Value, "")
mailCCO = Nz(Me.cboCCO.Value, "")
'Si no hay destinatario avisamos y salimos del proceso
If mailA = "" Then
MsgBox "¡Debe existir un destinatario!", vbCritical, "SIN DESTINATARIO"
Exit Sub
End If
'Exportamos el informe a la carpeta donde está la BD en formato snapshot
Dim ruta As String, miInforme As String
ruta = Application.CurrentProject.Path & "\"
miInforme = ruta & "Informe.snp"
DoCmd.OutputTo acOutputReport, "RDatos", acFormatTXT, miInforme, False
'Configuramos el bloque CDO
Dim cdoConfig
Dim msgOne
Set cdoConfig = CreateObject("CDO.Configuration")
With cdoConfig.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = 465
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = miSmtp
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = miMail
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = miPass
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Update
End With
'Configuramos el mensaje
Set msgOne = CreateObject("CDO.Message")
Set msgOne.Configuration = cdoConfig
msgOne.To = mailA
msgOne.CC = mailCC
msgOne.BCC = mailCCO
msgOne.From = miMail
msgOne.Subject = elAsunto
msgOne.TextBody = elMsg
'Configuramos el adjunto
Dim miAdjunto As String
miAdjunto = "file://" & miInforme
If Not IsMissing(miInforme) Then
msgOne.AddAttachment (miAdjunto)
End If
msgOne.Send
'Avisamos de que el envío ha ido bien
MsgBox "Mensaje enviado con éxito", vbInformation, "CORRECTO"
'Eliminamos el informe de nuestra carpeta
Kill miInforme
Salida:
Exit Sub
sol_err:
MsgBox Err.Number & ": " & Err.Description
Resume Salida
End Sub

2 Respuestas

Respuesta
2

El tema de mandar e-mails no es mi fuerte, pero te remito a uno que sí sabe, neckkito. En su web tiene 3 ejemplos de como mandar emails desde access, muy bien explicados. Seguro que encuentras una solución a tu pregunta.

Te dejo los enlaces a los ejemplos:

<a>http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/codigo/95-ejemplos-explicados/ejemplos-de-codigo/140-y-una-de-mail</a>

<a>http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/codigo/95-ejemplos-explicados/ejemplos-de-codigo/141-y-dos-de-mail</a>

<a>http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/codigo/95-ejemplos-explicados/ejemplos-de-codigo/142-y-tres-de-mail</a>

Respuesta
1

Hay formas más fáciles de enviar un correo en Access y puede ser a través de una macro o código vba.

Macro, utiliza el comando EnviarObjeto, en esta propiedad puedes seeleccinar el informe a enviar. Luego en el evento clic del botón solo debes seleccionar la macro que has creado.

Para el envío, debes configurar una cuenta en outlook, si deseas que se envíe inmediatamente te recomiendo outlook express porque tiene la posibilidad de enviar correos desde otras aplicaciones automáticamente, no asó Outlook 2007 que te abrirá la ventana para escribir el detalle del correo y deberás abrir outlook para que salga de la bandeja de salida, en outlook express esto no sucede solo se envía automáticamente.

Vía código VBA también se puede hacer, pero también debes configurar outlook express o 2007.

El código sería:

DoCmd.SendObject acSendTable, "Nombre del Informe", acFormatPDF, _
"Destinatario; CC", "CCO", , _
"Subjet","Detalle del Correo" , False

AcFormatPDF es el formato de salida del informe, puede ser acFormatRTF, acFormatXLS, acFormatTXT. AcFormatXLS.

Para el uso de PDF debes instalar el complemento PDF XPS que lo puedes descargar en el siguiente vinculo para Access. <a>http://www.microsoft.com/es-es/download/details.aspx?id=7</a>

Y eso sería. Así quedarás con una copia de envío de tu correo en la bandeja de elementos enviados. Y podrás desde outlook solicitar revisión de entrega y lectura de correo.

Si usas outlook express o 2007 y no deseas que aparezca el mensaje de permitir el envío de un correo puedes usar un programita llamado ClicYes. Lo puedes ver en el siguiente enlace:

<a>http://www.contextmagic.com/express-clickyes/</a>

Bueno amigo espero haber contibuido con una solución a tu problema. Espero todo marche bien, y bueno, demás esta decir que si requieres de ayuda adicional puedes contactarte a [email protected]

Sinceramente muy agradecido por tu interesante respuesta, pero quizá debí dejar más claro que necesito que el correo se envíe no desde outlook, sino desde el correo que tengo en trabajo que es Lotus Notes.

Además la versión de Access que tengo es la 2000, de manera que no puedo instalar el complemento pdf xps, que según creo es para la 2007.

De nuevo muchas gracias por tu ayuda.

El primer error que te da es por que el servidor de correo que estas usando detecta este tipo de envíos como un spam. Y por eso lo descarta.

La segunda opción si lo enviará pero como la conexión es a trabas de smtp indirecto no quedará un correo en los elementos enviados.

La solución sería esta.

Podrás enviarte un correo con BCC a tu correo así podrás tener respeldo del correo que estas enviando.

Luego podrás crear una rebla en tu correo no se si lo permita que todo los correos que lleguen desde tu mismo correo se vayan a la bandeja de enviados.

La única forma que al enviar un correo aparezca en la bandeja de enviados tanto para tu sistema como para el servidor externo es una conexión IMAP, estas conexiones sincronizan tanto clientes como servidor.

Yo en una oportunidad hice un sistema para el envío de correos directamente desde access. Incluso podrías adjuntar un archivo para su envío.

Disculpa primero por la tardanza en contestar.

No se porqué ya no me sale el mensaje de error del servidor de correo detectándolo como spam.

Una vez "solucionado" ese problema, he seguido tu consejo de "autoenviarme" el correo, (aunque todavía tengo que mirar lo de la regla para que vaya a la carpeta de enviados).

De nuevo agradecerte enormemente el compartir tu tiempo y tus conocimientos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas