Sign in to follow this  
Followers 0
flappert87

email script not sending Attachments

2 posts in this topic

Hi everybody,

Script listed below sends emails with plain text just fine. but when i try to use the $attachfiles and send a attachments it doesnt work in the COMPILED emailscript.exe version, the script version within the editor sends the email with file without errors.

Some how the compiled emailscript.exe version can't handle the $attachfiles and gives a error on the : _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject & "", $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl) line. when i then take away the $AttachFiles and change it into a " " the .exe version works again but doesn't contain an attachment offcourse, very frustrating . Anyone an idea on this ?

#NoTrayIcon ; trayicon autoit wordt uitgeschakeld.

#include <INet.au3>
#include <File.au3>
#include <FileConstants.au3>

$SmtpServer = "mysmtp" ; address for the smtp-server to use - REQUIRED
$FromName = "USSU Unlimited email log" ; name from who the email was sent
$FromAddress = "myemail" ; address from where the mail should come
$ToAddress = "myemail@email.com" ; destination address of the email - REQUIRED
$Subject = "subject" ; subject from the email - can be anything you want it to be
$Body = "textinsidebody" ; the messagebody from the mail - can be left blank but then you get a blank mail
$AttachFiles = "myfilelocation" ; the file you want to attach- leave blank if not needed
$CcAddress = "" ; address for cc - leave blank if not needed
$BccAddress = "" ; address for bcc - leave blank if not needed
$Importance = "" ; Send message priority: "High", "Normal", "Low"
$Username = "myusername" ; username for the account used from where the mail gets sent - REQUIRED
$Password = "mypassword" ; password for the account used from where the mail gets sent - REQUIRED
$IPPort = 25 ; port used for sending the mail
$ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS
;##################################
; Script EMAIL
;##################################

Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

_INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject & "", $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error Then
MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc)
EndIf

; The UDF
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])
ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
If FileExists($s_AttachFiles) Then
$objEmail.AddAttachment($s_AttachFiles)
Else
ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
SetError(1)
Return 0
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
;Authenticated SMTP
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
;Update settings
$objEmail.Configuration.Fields.Update
; Set Email Importance
Switch $s_Importance
Case "High"
$objEmail.Fields.Item("urn:schemas:mailheader:Impo rtance") = "High"
Case "Normal"
$objEmail.Fields.Item("urn:schemas:mailheader:Impo rtance") = "Normal"
Case "Low"
$objEmail.Fields.Item("urn:schemas:mailheader:Impo rtance") = "Low"
EndSwitch
;$objEmail.Fields.Update
; Sent the Message
$objEmail.Send
If @error Then
SetError(2)
Return $oMyRet[1]
EndIf
$objEmail = ""
EndFunc ;==>_INetSmtpMailCom
;
;

Share this post


Link to post
Share on other sites



solved it by putting the .txt file into the body from the email.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0