Jump to content

Body in a mail.


Recommended Posts

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
Link to comment
Share on other sites

  • Developers

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

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
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

Link to comment
Share on other sites

  • Developers

Give me an example that doesn't work for you that I can test with, so I can see what is happening.

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
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é
Link to comment
Share on other sites

  • Developers

Give me an example that doesn't work for you that I can test with, so I can see what is happening.

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
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
Link to comment
Share on other sites

  • Developers

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

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

  • Developers

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

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
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 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download
Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki
PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki
Task Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki

Standard UDFs:
Excel - Example Scripts - Wiki
Word - Wiki

Tutorials:
ADO - Wiki
WebDriver - Wiki

 

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...