Avatar of skyzipper
skyzipperFlag for Afghanistan

asked on 

SMTP Email wont send with attachments in VB.Net


I have a Window Service that creates an email with attachments at a specified time every day to a list of email recipients.    I am having problems when it comes to sending out PDF attachments to the SMTP relay.  When I send the mail object, the system takes about 60 to 70 seconds every time and acts like it sends the email, but I don't receive it.  There are four attachments that get sent with each one being anywhere from 70kb to 110kb in size.  The SMTP will send the email without any problem if I don't try and send the attachments.  This makes me believe that the attachments are the cause of the problem.  I contacted our Network guys and they haven't seen the emails in the SMTP mail queue and told me that the max size for attachments is 30MB.  

I have tried sending the information through Gmail and it works perfectly, but our business won't accept that as a permanent solution.

Below is a snippet of code that I am using to create the attachment.  Any idea on what I can try to make it work?

This is the email sending portion of code:

 Sub send_email()

        oMsg.From = New MailAddress("Do_Not_Reply@business.com", "Do Not Reply")
        oMsg.Subject = ("Business Downtime Reports")
        oMsg.IsBodyHtml = True

            'Delete out the old files from the reports folder
            'Add the attachments to the email object
            'Setup the message body for HTML
            Dim mbody As String = "<table width=600px border=1> " & _
                             "<tr> " & _
                                 "<td><img src='cid:Business_Logo' alt='Logo' width=150 height=75/></td> " & _
                             "</tr> " & _
                             "<tr> " & _
                                 "<td> " & _
                                     "<table> " & _
                                         "<tr> " & _
                                             "<td> " & _
                                                 "<p>Hello,</p> " & _
                                                 "<p>Attached are the business quality downtime reports for the previous day. </p> " & _
                                                 "<p>You are setup as a recipient of this automated email. If you wish to no longer receive the email, please submit a ticket to the  system using the following link:</p> " & _
                                                 "<p></p> " & _
                                                 "<p>Thank You,</p> " & _
                                                 "<p>Manufacturing Execution Team</p> " & _
                                                 "<p><strong></strong></p> " & _
                                                 "<p>&nbsp;</p> " & _
                                             "</td> " & _
                                             "<td> " & _
                                                 "<img src='cid:Business_Background' alt='Background Image' width=92 height=407/></td> " & _
                                         "</tr> " & _
                                     "</table> " & _
                                 "</td> " & _
                             "</tr> " & _
            'Create the alternate view for email images to appear
            Dim alternateView As AlternateView = alternateView.CreateAlternateViewFromString(mbody, Nothing, "text/html")

            'Create the linked resource for each image
            Dim logo As New LinkedResource(System.AppDomain.CurrentDomain.BaseDirectory & "Images\Business-Logo.jpg", "image/jpeg")
            logo.ContentId = "Business_Logo"
            logo.TransferEncoding = Net.Mime.TransferEncoding.Base64
            Dim logo2 As New LinkedResource(System.AppDomain.CurrentDomain.BaseDirectory & "Images\BusinessBackground.jpg", "image/jpeg")
            logo2.ContentId = "Business_Background"
            logo2.TransferEncoding = Net.Mime.TransferEncoding.Base64

            oMsg.Body = Nothing

            'Msg.Body = mbody.ToString

            'Configure the email server
            Dim client As New SmtpClient()
            client.Host = "smtprelay"

            'Add a comment to the event log
            myEventLog("Business Email was sent")
        Catch ex As Exception
            myEventLog("Error Sending the Email" & ex.ToString)
            myEventLog("Inner Exception is " & ex.InnerException.ToString)
            'Dispose of the mail object
        End Try
    End Sub

Open in new window

This is the section that creates the attachments.  I create the attachments from Crystal Report .rtp files and convert them into pdf's.  The files get created as designed so it appears that the problem doesn't stem from that.  I am curious if it may be the way I am adding the attachments to the the 'oMsg' mail object.

Sub add_attachment()
        'Function that will add the attachments to the email
        Dim cryRpt As New ReportDocument()
        Dim crtableLogoninfos As New TableLogOnInfos
        Dim crtableLogoninfo As New TableLogOnInfo
        Dim myConnectionInfo As New ConnectionInfo()
        Dim CrTables As Tables
        Dim CrTable As Table
        Dim files As String() = Directory.GetFiles(System.AppDomain.CurrentDomain.BaseDirectory & "CrystalSource\")
        With myConnectionInfo
            .UserID = "username"
            .ServerName = "SERVERNAME"
            .Password = "password"
        End With


            'Loop through the Reports folder
            For Each fileName In files
                'Load it to the Crystal Report Engine
                CrTables = cryRpt.Database.Tables
                For Each CrTable In CrTables
                    crtableLogoninfo = CrTable.LogOnInfo
                    crtableLogoninfo.ConnectionInfo = myConnectionInfo

                'Strip the name off the file fro the .rpt extension
                fileName = Path.GetFileName(fileName)
                If fileName.EndsWith(".rpt") Then
                    fileName = Left$(fileName, fileName.Length - 4)
                End If
                'Setup the Crystal Reports Exporter
                Dim crExportOptions As ExportOptions
                Dim CrDiskFileDestinationOptions As New DiskFileDestinationOptions()
                Dim CrFormatTypeOptions As New PdfRtfWordFormatOptions()
                CrDiskFileDestinationOptions.DiskFileName = System.AppDomain.CurrentDomain.BaseDirectory & "Reports\" & fileName & "-" & System.DateTime.Now.ToString("MM-dd-yyyy") & ".pdf"
                crExportOptions = cryRpt.ExportOptions
                With crExportOptions
                    .ExportDestinationType = ExportDestinationType.DiskFile
                    .ExportFormatType = ExportFormatType.PortableDocFormat
                    .DestinationOptions = CrDiskFileDestinationOptions
                    .FormatOptions = CrFormatTypeOptions
                End With


                Dim pdfFile As String = System.AppDomain.CurrentDomain.BaseDirectory & "Reports\" & fileName & "-" & System.DateTime.Now.ToString("MM-dd-yyyy") & ".pdf"

                oMsg.Attachments.Add(New Attachment(pdfFile, System.Net.Mime.MediaTypeNames.Application.Pdf))

                'oMsg.Attachments.Add(New Attachment(pdfFile))
                'Clear out the fileName and crptName variable
                fileName = ""
        Catch ex As Exception
            myEventLog("Failed to create the attachments" & ex.Message)
        End Try
    End Sub

Open in new window

Thanks in advance for your help,

.NET ProgrammingVisual Basic.NETWCF

Avatar of undefined
Last Comment
Avatar of Éric Moreau
Éric Moreau
Flag of Canada image

Blurred text
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
Avatar of Nasir Razzaq
Nasir Razzaq
Flag of United Kingdom of Great Britain and Northern Ireland image

Does it work if you add an existing test file as an attachment?
Avatar of skyzipper
Flag of Afghanistan image


I tried sending it with four attachments that were existing files and it did the same thing.
Avatar of Éric Moreau
Éric Moreau
Flag of Canada image

any exceptions?
Avatar of skyzipper
Flag of Afghanistan image


Hi Emoreau,

That is the weird part about it.  It will not return any exceptions at all.  It does run approximately 60 seconds every time and will continue on, acting like it went through.  In the past, the most it would take when I sent as Gmails SMTP would be about 10 seconds.  Do yo think timeout issue?

.NET Programming
.NET Programming

The .NET Framework is not specific to any one programming language; rather, it includes a library of functions that allows developers to rapidly build applications. Several supported languages include C#, VB.NET, C++ or ASP.NET.

Top Experts
Get a personalized solution from industry experts
Ask the experts
Read over 600 more reviews


IBM logoIntel logoMicrosoft logoUbisoft logoSAP logo
Qualcomm logoCitrix Systems logoWorkday logoErnst & Young logo
High performer badgeUsers love us badge
LinkedIn logoFacebook logoX logoInstagram logoTikTok logoYouTube logo