Send messages to email

<< Click to Display Table of Contents >>

Navigation:  How to... > Scripting examples > Gateway scripting examples >

Send messages to email

Learn how to use a C# or Visual Basic .NET script with Diafaan SMS Server to send an email message. This simple script uses the System.Net.Mail namespace to send messages to the email address in the toAddress field of the message.

 

Script


The only adaptation to the skeleton script is in the headers and the OnMessageToSend event:

 

C# script:

 

using System.Net.Mail;

 

private void OnMessageToSend(string recordId, string toAddress, string fromAddress, 

                             string message, string messageType)

{

   string smtpHostName = "smtp.host.com";

   string defaultFromAddress = "name@host.com";

   string defaultFromName = "Sender Name";

   string[] messageLines;

   SmtpClient smtpClient;

   MailAddress from;

   MailAddress to;

   MailMessage emailMessage;

   

   try {

      smtpClient = new SmtpClient(smtpHostName);

      if (fromAddress == "") {

        from = new MailAddress(defaultFromAddress, defaultFromName, 

                System.Text.Encoding.UTF8);

      }

      else {

        from = new MailAddress(fromAddress, fromAddress, 

                System.Text.Encoding.UTF8);

      }

      to = new MailAddress(toAddress);

      emailMessage = new MailMessage(from, to);

      messageLines = message.Split(new char[] {'\n','\r'}, 

                StringSplitOptions.RemoveEmptyEntries);

      if (messageLines.Length > 0)   emailMessage.Subject = messageLines[0];

      emailMessage.SubjectEncoding = System.Text.Encoding.UTF8;

      emailMessage.Body = message;

      emailMessage.BodyEncoding =  System.Text.Encoding.UTF8;

      smtpClient.Send(emailMessage);

      PostSendResult(recordId, "", StatusCode.Sent, 

                     "Success: Message accepted by the SMTP server", 

                     "", "", false);

   }

   catch (Exception e) {

     PostSendResult(recordId, "", StatusCode.SendError, "Error: " + e.Message, 

                "", "", false);

   }         

}

 

Visual Basic .NET script:

 

Imports Microsoft.VisualBasic

Imports System.Net.Mail

 

Private Sub OnMessageToSend(recordId As String, toAddress As String, _

                            fromAddress As String, _

                            message As String, messageType As String)

   Dim smtpHostName As String = "smtp.host.com"

   Dim defaultFromAddress As String = "name@host.com"

   Dim defaultFromName As String = "Sender Name"

   Dim messageLines As String()

   Dim smtpClient As SmtpClient

   Dim from As MailAddress

   Dim [toAs MailAddress

   Dim emailMessage As MailMessage

 

   Try

      smtpClient = New SmtpClient(smtpHostName)

      If fromAddress = "" Then

         from = New MailAddress(defaultFromAddress, defaultFromName, _

                System.Text.Encoding.UTF8)

      Else

         from = New MailAddress(fromAddress, fromAddress, System.Text.Encoding.UTF8)

      End If

      [to] = New MailAddress(toAddress)

      emailMessage = New MailMessage(from, [to])

      messageLines = message.Split(New Char() {ControlChars.Lf, ControlChars.Cr}, _

         StringSplitOptions.RemoveEmptyEntries)

      If messageLines.Length > 0 Then

         emailMessage.Subject = messageLines(0)

      End If

      emailMessage.SubjectEncoding = System.Text.Encoding.UTF8

      emailMessage.Body = message

      emailMessage.BodyEncoding = System.Text.Encoding.UTF8

      smtpClient.Send(emailMessage)

      PostSendResult(recordId, "", StatusCode.Sent, _

                "Success: Message accepted by the SMTP server", _

                "", "", False)

   Catch e As Exception

      PostSendResult(recordId, "", StatusCode.SendError, "Error: " & e.Message, _

                "", "", False)

   End Try

End Sub

 

If you make any change to the script make sure that the PostSendResult is always called, even if an exception is caused. Otherwise the script will only continue with the next message after a timeout of several minutes.