Estoy haciendo una aplicación, que envíe e-mails.
Viendo que la función que escribí hace ya algún tiempo para tal efecto y que colgué en el foro no se lleva muy bien con los archivos adjuntos (no entiendo el por que), he buscado una librería o función en el foro inglés de autoit para enviar e-mails y encontré algo como esto.
Código: Seleccionar todo
#include <Array.au3>
#include <File.au3>
#include <String.au3>
Global $Server="servidor_smtp"
Global $Name="nombre"
Global $FromAddress="direcion_del_remitente"
Global $ToAddress="direccion_del_destinatario"
Global $Subject="asunto"
Global $Body="cuerpo del mensaje"
Global $Attach="aqui_archivos_adjuntos_si_se_desea"
Global $CCAddress="cc"
Global $BCCAddress="bcc"
Global $Importance="normal"
Global $User="usuario_para_loguearse_en_el_servidor"
Global $Password="contraseña_para_loguearse_en_el_servidor"
Global $Port=25
Global $Ssl=0
Global $MSend
Global $OMyRet[2]
Global $OMyError=ObjEvent("AutoIt.Error", "MyErrFunc")
$mSend=_INetSmtpMailCom($Server, $Name, $FromAddress, $ToAddress, $Subject, $Body, $Attach, $CCAddress, $BCCAddress, $Importance, $User, $Password, $Port, $Ssl)
msgbox(0, "", $MSend)
Exit
Func _INetSmtpMailCom($S_SmtpServer, $S_FromName, $S_FromAddress, $S_ToAddress, $S_Subject="", $As_Body="", $S_AttachFiles="", $S_CcAddress="", $S_BccAddress="", $S_Importance="Normal", $S_Username="", $S_Password="", $IPPort=25, $Ssl=0)
Local $ObjEmail=ObjCreate("CDO.Message")
$ObjEmail.From='"'&$S_FromName&'" <'&$S_FromAddress&'>'
$ObjEmail.To=$S_ToAddress
Local $I_Error=0
Local $I_Error_desciption=""
If $S_CcAddress<>"" Then $ObjEmail.Cc=$S_CcAddress
If $S_BccAddress<>"" Then $ObjEmail.Bcc=$S_BccAddress
$ObjEmail.Subject=$S_Subject
If StringInStr($As_Body, "<") And StringInStr($As_Body, ">") Then
$ObjEmail.HTMLBody=$As_Body
Else
$ObjEmail.Textbody=$As_Body&@CRLF
EndIf
If $S_AttachFiles<>"" Then
Local $S_Files2Attach=StringSplit($S_AttachFiles, ";")
For $X=1 To $S_Files2Attach[0]
$S_Files2Attach[$X]=_PathFull($S_Files2Attach[$X])
If FileExists($S_Files2Attach[$X]) Then
$ObjEmail.AddAttachment ($S_Files2Attach[$X])
Else
SetError(1)
Return "Archivo no encontrado: "&$S_Files2Attach[$X]
EndIf
Next
EndIf
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver")=$S_SmtpServer
If Number($IPPort)=0 then $IPPort=25
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=$IPPort
If $S_Username<>"" Then
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername")=$S_Username
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword")=$S_Password
EndIf
If $Ssl Then
$ObjEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl")=True
EndIf
$ObjEmail.Configuration.Fields.Update
Switch($S_Importance)
Case "High"
$ObjEmail.Fields.Item ("urn:schemas:mailheader:Importance")="High"
Case "Normal"
$ObjEmail.Fields.Item ("urn:schemas:mailheader:Importance")="Normal"
Case "Low"
$ObjEmail.Fields.Item ("urn:schemas:mailheader:Importance")="Low"
EndSwitch
$ObjEmail.Fields.Update
$ObjEmail.Send
If @Error Then
SetError(2)
Return $OMyRet[1]
EndIf
$ObjEmail=""
EndFunc
Func MyErrFunc()
$HexNumber=Hex($OMyError.number, 8)
$OMyRet[0]=$HexNumber
$OMyRet[1]=StringStripWS($OMyError.description, 3)
SetError(1)
Return $OMyRet[1]
EndFunc
El servidor que utilizo necesita autentificaicón (debe loguearse con usuario y contraseña codificados en Base64). no se si este código lo hará, pues hay muchas cosas que no entiendo... en cualquier caso lo he probado de todas las maneras:
codificando el usuario y la contraseña en Base64, pasando la dirección del servidor a ip (en vez de nombre de dominio) etc etc y nada, siempre obtengo el mismo error...
¿alguien sabe otro código que funcione bien y permita adjuntar archivos en un e-mail?
Porque ese es el único problema de la función que hice. Que misteriosamente no adjunta bien los archivos. Por lo demás funciona bien.
Gracias de antemano,
salu2!