Skip to main content

Code to embed an image in e-mail

In this code we will learn how to embed an image in mail using VB.NET.


Public Sub SendMail(ByVal message As String)
        Dim vars As Variables
        Dim myHtmlMessage As MailMessage
        Dim mySmtpClient As SmtpClient
        Dim retVal As Int32 = -1
        myHtmlMessage = New MailMessage()
        Dim FromAddress As String
        Dts.VariableDispenser.LockOneForWrite("from", vars)
        FromAddress = vars("from").Value.ToString().Trim()
        vars.Unlock()
        Dim ToAddress As String
        Dts.VariableDispenser.LockOneForWrite("to", vars)
        ToAddress = vars("to").Value.ToString().Trim()
        vars.Unlock()
        Dim CCAddress As String
        Dts.VariableDispenser.LockOneForWrite("cc", vars)
        CCAddress = vars("cc").Value.ToString().Trim()
        vars.Unlock()
        Dim SmtpClient As String
        Dts.VariableDispenser.LockOneForWrite("smtpServer", vars)
        SmtpClient = vars("smtpServer").Value.ToString().Trim()
        vars.Unlock()

        myHtmlMessage.From = New Mail.MailAddress(FromAddress)
        Dim tt As String()
        If (ToAddress.ToString().Trim().Length > 0) Then
            If (ToAddress.IndexOf(";") > 0) Then
                tt = ToAddress.Split(";")
                Dim c As String
                If (tt.Length > 0) Then
                    For Each c In tt
                        myHtmlMessage.To.Add(c)
                    Next
                End If
            Else
                myHtmlMessage.To.Add(ToAddress.ToString().Trim())
            End If
        End If
        Dim cc As String()
        If (CCAddress.ToString().Trim().Length > 0) Then
            If (CCAddress.IndexOf(";") > 0) Then
                cc = CCAddress.Split(";")
                Dim c As String
                If (cc.Length > 0) Then
                    For Each c In cc
                        myHtmlMessage.CC.Add(c)
                    Next
                End If
            Else
                myHtmlMessage.CC.Add(CCAddress)
            End If
        End If
        Dim MailSubject As String = " Email scheduling process"
        Dim mailBody As String = "Hi, </BR>" + message + "</BR> Thanks, </BR> XXX"
        Dim ApplicationPath As String ' Physical path of an image. Example: C:/images/
        Dts.VariableDispenser.LockOneForWrite("ApplicationPath", vars)
        ApplicationPath = vars("ApplicationPath").Value.ToString().Trim()
        vars.Unlock()
        ' EMBEDING IMAGE
        Dim contentId As String = "image1" ' giving ID to an image content
        Dim path As String = ApplicationPath + "\\myLogo.JPG"
        Dim myImage As String = "<img src=""cid:image1""/><br />"
        Dim mybody As String = String.Empty
        Dim linkedResource As System.Net.Mail.LinkedResource = New System.Net.Mail.LinkedResource(path)
        Dim av1 As System.Net.Mail.AlternateView
        linkedResource.ContentId = contentId
        linkedResource.ContentType.Name = path
        av1 = System.Net.Mail.AlternateView.CreateAlternateViewFromString(mailBody + "</BR>" + myImage, Nothing, System.Net.Mime.MediaTypeNames.Text.Html)
        av1.LinkedResources.Add(linkedResource)
        myHtmlMessage.AlternateViews.Add(av1)
  
        myHtmlMessage.Subject = MailSubject
        myHtmlMessage.IsBodyHtml = True
        mySmtpClient = New SmtpClient(SmtpClient)
        mySmtpClient.Credentials = CredentialCache.DefaultNetworkCredentials
        mySmtpClient.Send(myHtmlMessage)
   
    End Sub

Comments

Popular posts from this blog

UML - Association, Aggregation, Composition, Generalization, Specialization, Realization and Dependency

Association Association is a simple relationship between two classes. For example A relationship between Professor Class and Student class is known as Association. Both Classes can exist without each other, so Professor and Student are two independent classes. In this kind of relationships there will not be any owner class. Both classes have their own life cycle. UML Notation:     Aggregation Aggregation is a special type of Association. It is known as “Has-A” relationship. For example A Department class can contain Professor Class. Here Department class is owner class. Here in this relationship even after deleting Department class, Professor Class can exits. UML Notation: Composition Composition is a special type of Aggregation. It is known as “Is-A” relationship. For example A University Class has many Department class. Here University and Department objects are dependent on each other. If we delete Univ...

C# Generic Factory

Implement Factory pattern using generics     public interface IDoWork   {       string DoWork();   }     Declare an Interface first by abstracting the common  functionality    Here I am taking the example of DoWork     public class Manager : IDoWork   {     public string DoWork()     {         return "Manager Manages School" ;     }   }     Implement the IDoWork in concrete classes as shown      public class Teacher : IDoWork     {         public string DoWork()         {             return "Teacher teaches student in school" ;         ...

SSIS package - set oledb connections at runtime

SSIS oledb connection manager does't allow user to connect to different oledb servers. If we store oledb connection sting in Config file then it will accepts server name, InitialCatalog and username. But it wont accept password. The is because oledb connection manager has not exposed the oledb password property. To over come this problem we have to override the OLEDB connection manager itself. So that it accepts connections to different oledb servers. Public Sub Main() Dim vars As Variables Dim oledbConnectionManager As ConnectionManager oledbConnectionManager = Dts.Connections("<oledb connection name>") ' ADDED TO MAKE oledb CONNECTION STRING DYNAMIC Dim oServerName As String Dim oUserName As String Dim oInitialCatalog As String Dim oPassword As String Dts.VariableDispenser.LockOneForWrite("oServerName", vars) oServerName = vars("oServerName").Value.ToString().Trim() vars.Unlock() Dts.VariableDispenser.LockOneForWrite("oInitia...