Product:
Planning Analytics 2.0.9.19
Microsoft Windows 2019 server
Issue:
How send mail with powershell from Tm1?
Solution:
Create a folder on your tm1 server called d:\script\ , and in there create a file SENDMAIL.PS1 in Notepad++ with this content:
# Define the paths to your text files $messageFilePath = "d:\script\message.txt" $recipientFilePath = "d:\script\recipient.txt" # Read the content of the text files $messageBody = Get-Content -Path $messageFilePath -Raw $recipient = Get-Content -Path $recipientFilePath -Raw # Define the email parameters $smtpServer = "smtp.yourserver.com" $from = "your-email@domain.com" $subject = "Your Subject Here" # Send the email Send-MailMessage -From $from -To $recipient -Subject $subject -Body $messageBody -SmtpServer $smtpServer
Update the $messageFilePath and $recipientFilePath variables with the paths to your text files.
Make sure to replace “smtp.yourserver.com” and “your-email@domain.com” with your actual SMTP server and email address.
Create a file “message.txt” with the text you want to send as body.
Create a file “recipient.txt” with the email person with the receiver of the mail.
Then create a TM1 TI process with above prompt, and below code:
#Section Prolog #--- set variables ---- vFileMessage = 'd:\script\message.txt' ; vFileRecipient = 'd:\script\recipient.txt' ; toPerson = 'tm1@company.com' ; toMessage = 'This is a test - something went wrong' ; #--- check the prompts ----------- isMail = scan ( '@' , pReciver) ; IF ( isMail <> 0 ) ; toPerson = pReciver ; ENDIF ; IF ( LONG (pMessage) <> 0 ) ; toMessage = pMessage ; ENDIF ; # --- Change to get clean text in the text file DatasourceASCIIQuoteCharacter=''; DatasourceASCIIDelimiter = ','; #--- try change this value to support other characters than english ------ setOutputCharacterSet (vFileMessage, 'TM1CS_ISO_8859_1'); #-------write the files------------- TextOutput( vFileRecipient, toPerson ) ; TextOutput( vFileMessage, toMessage ) ; #Section Metadata #Section Data #Section Epilog # call the powershell file to send the mail ExecuteCommand( 'Powershell -ExecutionPolicy ByPass -file "D:\script\sendmail.ps1" ', 1 );
Run the process, to test it.
More Information:
https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=attf-setinputcharacterset-1
https://edu.cubewise.com/functions-library/tm1-function-for-ti-setoutputcharacterset
https://www.ibm.com/docs/en/planning-analytics/2.0.0?topic=tf-ascii-text-turbointegrator-functions