Sign in to follow this  
Followers 0
JeromeB

Body in a mail.

12 posts in this topic

#1 ·  Posted (edited)

Hey,

I'm having some trouble with an email.

i'm using this :

#include <INet.au3>
#Include<file.au3>

$s_SmtpServer = "IP server SMTP"
$s_FromName = "jerome"
$s_FromAddress = blabla@gmail.com"
$s_ToAddress = "hoho@private.com"
$s_Subject = "My Test UDF"
Dim $as_Body[2]
$as_Body[0] = "Testing the new email udf"
$as_Body[1] = "Second Line"
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$Response = _INetSmtpMailCom ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body)

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 : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
            If FileExists($S_Files2Attach[$x]) Then
                ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)
                $objEmail.AddAttachment($S_Files2Attach[$x])
            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: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
    ; Sent the Message
    $objEmail.Send
    If @error Then
        SetError(2)
        Return $oMyRet[1]
    EndIf
    $objEmail=""
EndFunc   ;==>_INetSmtpMailCom
;
;
; Com Error Handler
Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    $oMyRet[0] = $HexNumber
    $oMyRet[1] = StringStripWS($oMyError.description, 3)
    ConsoleWrite("### COM Error !  Number: " & $HexNumber & "   ScriptLine: " & $oMyError.scriptline & "   Description:" & $oMyRet[1] & @LF)
    SetError(1); something to check for when this function returns
    Return
EndFunc

The thing is, i do not have any body in my mail xD

So i'm trying to pass by :

$as_Body = "data " & $aData[1][0] & @CRLF & "***************Info***************" & _
  "" & @crlf & "date : " & $date& _
  "" & @crlf & "Ye " & $Ye& _
  "" & @crlf & "Ye: " & $Ye& _
  "" & @crlf & "Ye" & $Ye& @CRLF & "*****************Info2*****************" & _
  "" & @crlf & "Ye: " &  $Ye& _
  "" & @crlf & "Ye " & $Ye& _
  "" & @crlf & "Ye " & $Ye& _
  "" & @crlf & "Ye" & _
  "" & @crlf & "_____________________________________________"  & _
  "" & @crlf & "" & $Ye& "" & _
  "" & @crlf & "_____________________________________________"  & _
  "" & @crlf & "Ye" & $Ye& _
  "" & @crlf & "Ye " & $Ye& $insert

Its nicely working, i got the email with the all body, execpt the fact that there is no @CRLF on the mail

Everything is on the same line ....

Any idea why ?

Maybe the object textbody got problem with that?

Edited by JeromeB

Share this post


Link to post
Share on other sites



The first issue makes sense as the UDF doesn't work with an Array for th Body content.

As to the second issue: Does your body contain any HTML codes? is so you should use "<br>" for newlines, else it should be working fine.

Jos


Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

hey,

Thanks for your fast reply.

I'm afraid that i do not use HTML, so no <br>

I have try to put all on a same line like that :

Maybe its an issue because i use date format on the body

Something return that : 07/04/2012 16:31:09

and after this, the string screw up

Share this post


Link to post
Share on other sites

hey,

i use this :

value under

$as_Body = "Ci-joint les détails du ticket numéro " & $aData[1][0] & _;& "***************Info sur l'utilisateur***************" & _
  "" & @crlf & "Date de création du ticket : " & $heure_creation_ticket & _
  "" & @crlf & "Nom de l'intervenant ou Emetteur du ticket : " & $intervenant  & _
  "" & @crlf & "Mail : " & $email_intervenant & _
  "" & @crlf & "Numéro de téléphone : " & $phone_intervenant & @CRLF & _; "*****************Info sur le ticket*****************" & _
  "" & @crlf & "Titre du ticket : " &  $ticket_title & _
  "" & @crlf & "Emetteur du problème : " & $appelant & _
  "" & @crlf & "Lieu de l'intervention : " & $lieu_intervention& _
  "" & @crlf & "Description de l'intervention : " & _
  "" & @crlf & "_____________________________________________"  & _
  "" & @crlf & "" & $ticket_description & "" & _
  "" & @crlf & "_____________________________________________"  & _
  "" & @crlf & "Date d'intervention : " & $date_intervention  & _
  "" & @crlf & "Temps d'intervention : " & $temp_intervention & $insert

return me in email :

Ci-joint les détails du ticket numéro 39 Date de création du ticket : 07/04/2012 16:46:13 Nom de l'intervenant ou Emetteur du ticket : gfdshgfd Mail : hgfd Numéro de téléphone : hgfd
Titre du ticket : hgfdhgfd
Emetteur du problème : hgdf
Lieu de l'intervention : gfdh
Description de l'intervention :
_____________________________________________
gfdhgfd
_____________________________________________
Date d'intervention : 16:46    07/04/2012
Temps d'intervention : 4 Minutes
Pour le moment, cette intervention n'est pas résolut / terminé

Share this post


Link to post
Share on other sites

Sorry,

He something not working

#include <INet.au3>
#Include<file.au3>

$s_SmtpServer = "myprivateexchangeserver"
$s_FromName = "jerome"
$s_FromAddress = "email@email.com"
$s_ToAddress = "fromtheexchange@server.com"
$s_Subject = "My Test UDF"
$aData= "18"
$heure_creation_ticket = "07/04/2012 14:45:20"
$intervenant = "gsdg"
$email_intervenant = "fdsgfds"
$phone_intervenant = "dsgfds"
$ticket_title = "gfds"
$appelant = "fdsgfd"
$lieu_intervention = "fdsg"
$ticket_description = "fdgsfdgfg"
$date_intervention = "07/04/2012 14:45:20"
$temp_intervention = "44 Minutes"
$date_resolution = "14:45    07/04/2012"
$insert = "" & @crlf & "Cette intervention à été résolue en date du : " & $date_resolution
$as_Body = "Ci-joint les détails du ticket numéro " & $aData & _;& "***************Info sur l'utilisateur***************" & _
  "" & @crlf & "Date de création du ticket : " & $heure_creation_ticket & _
  "" & @crlf & "Nom de l'intervenant ou Emetteur du ticket : " & $intervenant  & _
  "" & @crlf & "Mail : " & $email_intervenant & _
  "" & @crlf & "Numéro de téléphone : " & $phone_intervenant & @CRLF & _; "*****************Info sur le ticket*****************" & _
  "" & @crlf & "Titre du ticket : " &  $ticket_title & _
  "" & @crlf & "Emetteur du problème : " & $appelant & _
  "" & @crlf & "Lieu de l'intervention : " & $lieu_intervention& _
  "" & @crlf & "Description de l'intervention : " & _
  "" & @crlf & "_____________________________________________"  & _
  "" & @crlf & "" & $ticket_description & "" & _
  "" & @crlf & "_____________________________________________"  & _
  "" & @crlf & "Date d'intervention : " & $date_intervention  & _
  "" & @crlf & "Temps d'intervention : " & $temp_intervention & $insert
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$Response = _INetSmtpMailCom ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body)
$err = @error
If $Response = 1 Then
MsgBox(0, "Success!", "Mail sent")
Else
MsgBox(0, "Error!", "Mail failed with error code " & $err)
EndIf

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 : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
            If FileExists($S_Files2Attach[$x]) Then
                ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)
                $objEmail.AddAttachment($S_Files2Attach[$x])
            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: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
    ; Sent the Message
    $objEmail.Send
    If @error Then
        SetError(2)
        Return $oMyRet[1]
    EndIf
    $objEmail=""
EndFunc   ;==>_INetSmtpMailCom
;
;
; Com Error Handler
Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    $oMyRet[0] = $HexNumber
    $oMyRet[1] = StringStripWS($oMyError.description, 3)
    ConsoleWrite("### COM Error !  Number: " & $HexNumber & "   ScriptLine: " & $oMyError.scriptline & "   Description:" & $oMyRet[1] & @LF)
    SetError(1); something to check for when this function returns
    Return
EndFunc

Return me in the email :

Ci-joint les détails du ticket numéro 18 Date de création du ticket : 07/04/2012 14:45:20 Nom de l'intervenant ou Emetteur du ticket : gsdg Mail : fdsgfds Numéro de téléphone : dsgfds
Titre du ticket : gfds
Emetteur du problème : fdsgfd
Lieu de l'intervention : fdsg
Description de l'intervention :
_____________________________________________
fdgsfdgfg
_____________________________________________
Date d'intervention : 07/04/2012 14:45:20 Temps d'intervention : 44 Minutes
Cette intervention à été résolue en date du : 14:45    07/04/2012

Share this post


Link to post
Share on other sites

This is the output of your script when I send it to Gmail:

Ci-joint les détails du ticket numéro 18

Date de création du ticket : 07/04/2012 14:45:20

Nom de l'intervenant ou Emetteur du ticket : gsdg

Mail : fdsgfds

Numéro de téléphone : dsgfds

Titre du ticket : gfds

Emetteur du problème : fdsgfd

Lieu de l'intervention : fdsg

Description de l'intervention :

_____________________________________________

fdgsfdgfg

_____________________________________________

Date d'intervention : 07/04/2012 14:45:20

Temps d'intervention : 44 Minutes

Cette intervention à été résolue en date du : 14:45 07/04/2012


Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

Inded.

I have noticed that too.

Dunno why its not working on my compagny, using an exchange 2010 server.

Share this post


Link to post
Share on other sites

#10 ·  Posted (edited)

So, maybe try to use the <BR> suggestion in stead of the @CRLF to see if Exchange does the translation correctly?

$as_Body = "Ci-joint les détails du ticket numéro " & $aData & _;& "***************Info sur l'utilisateur***************" & _
  "<BR>" & "Date de création du ticket : " & $heure_creation_ticket & _
  "<BR>" & "Nom de l'intervenant ou Emetteur du ticket : " & $intervenant  & _
  "<BR>" & "Mail : " & $email_intervenant & _
  "<BR>" & "Numéro de téléphone : " & $phone_intervenant & @CRLF & _; "*****************Info sur le ticket*****************" & _
  "<BR>" & "Titre du ticket : " &  $ticket_title & _
  "<BR>" & "Emetteur du problème : " & $appelant & _
  "<BR>" & "Lieu de l'intervention : " & $lieu_intervention& _
  "<BR>" & "Description de l'intervention : " & _
  "<BR>" & "_____________________________________________"  & _
  "<BR>" & "" & $ticket_description & "" & _
  "<BR>" & "_____________________________________________"  & _
  "<BR>" & "Date d'intervention : " & $date_intervention  & _
  "<BR>" & "Temps d'intervention : " & $temp_intervention & $insert
Edited by Jos

Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

Dunno why its not working on my compagny, using an exchange 2010 server.

If you use Outlook as mail client you could send your mails using my OutlookEX UDF.

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

hey, i final get rid of this error

problem was the date, you need aparently to pass it with cotation like that : '13/12/13' else its not working.

Pretty thanks for your help ;)

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