When you send an email with the Mail Task in a SSIS, you cannot specify the port for the connection.
The solution is to use a script task and set the specific port. Here is an example to send an email in HTML and Text/plain with an attachment. I've used variables for the recipient, cc, subject, port, ...
Try
Dim oViewPlain As AlternateView
Dim oViewHtml As AlternateView
Dim oMessage As New MailMessage()
oMessage.From = New MailAddress(Dts.Variables("User::varFromMailFile").Value.ToString())
'Separator for mail adresses
Dim sSep As String()
ReDim sSep(0)
sSep(0) = ";"
'Subject
oMessage.Subject = Dts.Variables("User::varSubjectMailFileAssogestione").Value.ToString()
'Recipients
If Not Dts.Variables("User::varToMailFile").Value.ToString().Equals("") Then
Dim strTO As String = Dts.Variables("User::varToMailFile").Value.ToString()
Dim oTO As String() = strTO.Split(sSep, StringSplitOptions.RemoveEmptyEntries)
For Each oTO_MailAdress As String In oTO
oMessage.To.Add(oTO_MailAdress)
Next
End If
'CC
If Not Dts.Variables("User::varCCMailFile").Value.ToString().Equals("") Then
Dim strCC As String = Dts.Variables("User::varCCMailFile").Value.ToString()
Dim oCC As String() = strCC.Split(sSep, StringSplitOptions.RemoveEmptyEntries)
For Each oCC_MailAdress As String In oCC
oMessage.CC.Add(oCC_MailAdress)
Next
End If
'BCc
If Not Dts.Variables("User::varBCCMailFile").Value.ToString().Equals("") Then
Dim strBCC As String = Dts.Variables("User::varBCCMailFile").Value.ToString()
Dim oBCC As String() = strBCC.Split(sSep, StringSplitOptions.RemoveEmptyEntries)
For Each oBCC_MailAdress As String In oBCC
oMessage.Bcc.Add(oBCC_MailAdress)
Next
End If
'Create an alternate view for your mail
'Message type plain/text
oViewPlain = AlternateView.CreateAlternateViewFromString("Hello," _
& Chr(10) & Chr(10) & "Here is the file " & strFile & "." _
& Chr(10) & Chr(10) & "------------------------------------------------------------------------" _
& Chr(10) & Chr(10) & "Yours sincerely." _
& Chr(10) & Chr(10) _
, Nothing, "text/plain")
'Message in HTML
oViewHtml = AlternateView.CreateAlternateViewFromString("" _
& "<p style=""font-family:Arial;font-size:12px;"">" _
& "Hello," _
& "<br /><br />Here is the file " & strFile & "." _
& "<br /><br />Yours sincerely.." _
& "</p><DIV> </DIV><BR>" _
, Nothing, "text/html")
'Add the views to the message
oMessage.AlternateViews.Add(oViewPlain)
oMessage.AlternateViews.Add(oViewHtml)
'Message priority : Hight = 2, Loaw = 1, Normal = 0
oMessage.Priority = MailPriority.Normal
oMessage.IsBodyHtml = True
'SMTP Server
Dim smtpServer As String = Dts.Connections("SMTP Connection Manager").ConnectionString.Replace("SmtpServer=", "").Substring(0, Dts.Connections("SMTP Connection Manager").ConnectionString.Replace("SmtpServer=", "").IndexOf(";"))
Dim oSmtpMail As New SmtpClient(smtpServer)
'Exchange Port
oSmtpMail.Port = CInt(Dts.Variables("User::varExchangePort").Value.ToString())
'Attachment
oMessage.Attachments.Add(New Attachment(strFilePath))
oSmtpMail.Send(oMessage)
'Succes Result
Dts.TaskResult = Dts.Results.Success
Catch ex As Exception
' post the error message we got back. This is the old error catch code that might work better with SSIS.
Dts.Events.FireError(0, "Script Task Error - SendMail", ex.Message.ToString(), String.Empty, 0)
'Failure result
Dts.TaskResult = Dts.Results.Failure
End Try
End Sub