Provides properties and methods for sending messages and testing recipients.
System.Object
EASendMail.SmtpClient
[Visual Basic] Public Class SmtpClient
[C#] public class SmtpClient
[C++] public __gc class SmtpClient
[JScript] public class SmtpClient
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Public Constructors
| SmtpClient Constructor | Initializes a new instance of the SmtpClient class. |
Public Properties
| BindEndPoint | Gets or sets the local binded IP address for sending email. |
| CurrentSmtpServer | Gets the latest smtp server that is used to send e-mail message. |
| DnsServerIP | Gets or sets the dns server IP address for sending email directly. |
| LogFileName | Gets or sets the log file name for smtp transaction. |
| SmtpConversation | Gets the latest smtp conversation beween smtp server and smtp client. |
| Tag |
Gets or sets an object that contains data to associate with the SmtpClient. |
| Timeout |
Gets or sets the maximum time interval(seconds) the object will wait for a response from server before returning an error. |
Public Methods
| BatchSendMail | Sends bulk e-mail messages with multiple threads. |
| BeginSendMail | Sends the e-mail message asynchronously. |
| BeginSendRawMail | Sends the e-mail message with raw content asynchronously. |
| BeginTestRecipients | Tests the e-mail address asynchronously. |
| Connect | Connects a smtp server. |
| EndSendMail | Ends a pending asynchronous send. |
| EndTestRecipients | Ends a pending asynchronous test. |
| Quit | Disconnects the smtp server. |
| Reset | Sends a RSET command to smtp server. |
| SendMail | Sends an e-mail message. |
| SendRawMail | Sends an e-mail message with raw content. |
| SendMailToQueue | Sends an e-mail message to EASendMail Service. |
| TestRecipients | Tests an e-mail address. |
Public Events
| OnAuthorized | Occurs when smtp server has authorized the user. |
| OnBatchSendMail | Occurs when an email was sent by BatchSendMail method. |
| OnConnected | Occurs when the client has connected to smtp server successfully. |
| OnIdle | Occurs when the client is connecting server or waiting response from smtp server. |
| OnQuit | Occurs when the client is disconnecting the smtp server. |
| OnRcptToError | Occurs when the smtp server rejected a recipient. |
| OnReceiveResponse | Occurs when the client has received a response from smtp server. |
| OnSecuring | Occurs when the client is establishing the SSL connection. |
| OnSendCommand | Occurs when the client has sent a command to the smtp server. |
| OnSendingDataStream | Occurs when the client is sending the e-mail data to the smtp server. |
Example
[Visual Basic, C#, C++, JScript.NET] The following example demonstrates how to send email with EASendMail SMTP Component, but it doesn't demonstrates the events usage. To get the full samples of EASendMail, please refer to Samples section.
[Visual Basic]
Imports EASendMail
Public Sub SendMail( sFrom As String, _
sTo As String, _
sCc As String, _
sServer As String, _
sUserName As String, _
sPassword As String, _
sSubject As String, _
sBodyText As String, _
bSSLConnection As Boolean )
Dim oMail As SmtpMail = New SmtpMail("TryIt")
Dim oSmtp As SmtpClient = New SmtpClient
'To generate a log file for SMTP transaction, please use
'oSmtp.LogFileName = "c:\smtp.log"
Dim errStr As String = ""
Try
'From is a MailAddress object, in c#, it supports implicit converting from string.
'The syntax is like this: "test@adminsystem.com" or "Tester<test@adminsystem.com>"
'The example code without implicit converting
' oMail.From = New MailAddress( "Tester", "test@adminsystem.com" )
' oMail.From = New MailAddress( "Tester<test@adminsystem.com>" )
' oMail.From = New MailAddress( "test@adminsystem.com" )
'To, Cc and Bcc is a AddressCollection object, in C#, it supports implicit converting from string.
' multiple address are separated with (,;)
' The syntax is like this: "test@adminsystem.com, test1@adminsystem.com"
'The example code without implicit converting
' oMail.To = New AddressCollection( "test1@adminsystem.com, test2@adminsystem.com" )
' oMail.To = New AddressCollection( "Tester1<test@adminsystem.com>, Tester2<test2@adminsystem.com>")
' You can add more recipient by Add method
' oMail.To.Add( New MailAddress( "tester", "test@adminsystem.com"))
oMail.From = New MailAddress( sFrom )
oMail.To = New AddressCollection(sTo)
oMail.Cc = New AddressCollection(sCc)
oMail.Subject = sSubject
oMail.TextBody = sBodyText
'If the sBodyText contains the html tag, please use
'oMail.HtmlBody = sBodyText
'Add attachment
'oMail.AddAttachment( "c:\test.gif" )
Dim oServer As SmtpServer = New SmtpServer(sServer)
If sUserName.Length > 0 And sPassword.Length > 0 Then
oServer.User = sUserName
oServer.Password = sPassword
End If
If (bSSLConnection) Then
oServer.ConnectType = SmtpConnectType.ConnectSSLAuto
End If
oSmtp.SendMail(oServer, oMail)
MessageBox.Show(String.Format("The message was sent to {0} successfully!", _
oSmtp.CurrentSmtpServer.Server))
Catch exp As SmtpTerminatedException
errStr = exp.Message
Catch exp As SmtpServerException
errStr = String.Format("Exception: Server Respond: {0}", exp.ErrorMessage)
Catch exp As System.Net.Sockets.SocketException
errStr = String.Format("Exception: Networking Error: {0} {1}", exp.ErrorCode, exp.Message)
Catch exp As System.ComponentModel.Win32Exception
errStr = String.Format("Exception: System Error: {0} {1}", exp.ErrorCode, exp.Message)
Catch exp As System.Exception
errStr = String.Format("Exception: Common: {0}", exp.Message)
End Try
If errStr.Length > 0 Then
MessageBox.Show(errStr)
End If
End Sub
[C#]
using System;
using System.Collections;
using EASendMail;
public void SendMail( string sFrom,
string sTo,
string sCc,
string sServer,
string sUserName,
string sPassword,
string sSubject,
string sBodyText,
bool bSSLConnection )
{
SmtpMail oMail = new SmtpMail("TryIt");
SmtpClient oSmtp = new SmtpClient();
//To generate a log file for SMTP transaction, please use
//oSmtp.LogFileName = "c:\\smtp.log";
string err = "";
try
{
//From is a MailAddress object, in c#, it supports implicit converting from string.
//The syntax is like this: "test@adminsystem.com" or "Tester<test@adminsystem.com>"
//The example code without implicit converting
// oMail.From = new MailAddress( "Tester", "test@adminsystem.com" );
// oMail.From = new MailAddress( "Tester<test@adminsystem.com>" );
// oMail.From = new MailAddress( "test@adminsystem.com" );
//To, Cc and Bcc is a AddressCollection object, in C#, it supports implicit converting from string.
// multiple address are separated with (,;)
//The syntax is like this: "test@adminsystem.com, test1@adminsystem.com"
//The example code without implicit converting
// oMail.To = new AddressCollection( "test1@adminsystem.com, test2@adminsystem.com" );
// oMail.To = new AddressCollection( "Tester1<test@adminsystem.com>, Tester2<test2@adminsystem.com>");
//You can add more recipient by Add method
// oMail.To.Add( new MailAddress( "tester", "test@adminsystem.com"));
oMail.From = sFrom;
oMail.To = sTo;
oMail.Cc = sCc;
oMail.Subject = sSubject;
oMail.TextBody = sBodyText;
//If the sBodyText contains the html tag, please use
//oMail.HtmlBody = sBodyText;
//Add attachment
//oMail.AddAttachment( "c:\\test.gif" );
SmtpServer oServer = new SmtpServer( sServer );
if( sUserName.Length != 0 && sPassword.Length != 0 )
{
oServer.User = sUserName;
oServer.Password = sPassword;
}
if( bSSLConnection )
oServer.ConnectType = SmtpConnectType.ConnectSSLAuto;
oSmtp.SendMail( oServer, oMail );
MessageBox.Show( String.Format( "The message was sent to {0} successfully!",
oSmtp.CurrentSmtpServer.Server ));
}
catch( SmtpTerminatedException exp )
{
err = exp.Message;
}
catch( SmtpServerException exp )
{
err = String.Format( "Exception: Server Respond: {0}", exp.ErrorMessage );
}
catch( System.Net.Sockets.SocketException exp )
{
err = String.Format( "Exception: Networking Error: {0} {1}", exp.ErrorCode, exp.Message );
}
catch( System.ComponentModel.Win32Exception exp )
{
err = String.Format( "Exception: System Error: {0} {1}", exp.ErrorCode, exp.Message );
}
catch( System.Exception exp )
{
err = String.Format( "Exception: Common: {0}", exp.Message );
}
if( err.Length > 0 )
{
MessageBox.Show( err );
}
}
[C++]
using namespace System;
using namespace System::Collections;
using namespace EASendMail;
System::Void SendMail( System::String *sFrom,
System::String *sTo,
System::String *sCc,
System::String *sServer,
System::String *sUserName,
System::String *sPassword,
System::String *sSubject,
System::String *sBodyText,
bool bSSLConnection )
{
SmtpMail *oMail = new SmtpMail(S"TryIt");
SmtpClient *oSmtp = new SmtpClient();
//To generate a log file for SMTP transaction, please use
//oSmtp->LogFileName = S"c:\\smtp.log";
System::String *err = S"";
try
{
//From is a MailAddress object, in c#, it supports implicit converting from string.
//The syntax is like this: "test@adminsystem.com" or "Tester<test@adminsystem.com>"
//The example code without implicit converting
// oMail->From = new MailAddress( S"Tester", S"test@adminsystem.com" );
// oMail->From = new MailAddress( S"Tester<test@adminsystem.com>" );
// oMail->From = new MailAddress( S"test@adminsystem.com" );
//To, Cc and Bcc is a AddressCollection object, in C#, it supports implicit converting from string.
// multiple address are separated with (,;)
//The syntax is like this: "test@adminsystem.com, test1@adminsystem.com"
//The example code without implicit converting
// oMail->To = new AddressCollection( S"test1@adminsystem.com, test2@adminsystem.com" );
// oMail->To = new AddressCollection( S"Tester1<test@adminsystem.com>, Tester2<test2@adminsystem.com>");
// You can add more recipient by Add method
// oMail->>To->Add( new MailAddress( S"tester", S"test@adminsystem.com"));
oMail->From = new EASendMail::MailAddress(sFrom);
oMail->To = new EASendMail::AddressCollection(sTo);
oMail->Cc = new EASendMail::AddressCollection(sCc);
oMail->Subject = sSubject;
oMail->TextBody = sBodyText;
//If the sBodyText contains the html tag, please use
//oMail->HtmlBody = sBodyText;
//Add attachment
//oMail->AddAttachment( S"c:\\test.gif" );
SmtpServer *oServer = new SmtpServer( sServer );
if( sUserName->Length != 0 && sPassword->Length != 0 )
{
oServer->User = sUserName;
oServer->Password = sPassword;
}
if( bSSLConnection )
oServer->ConnectType = SmtpConnectType::ConnectSSLAuto;
oSmtp->SendMail( oServer, oMail );
MessageBox::Show( String::Format( S"The message was sent to {0} successfully!",
oSmtp->CurrentSmtpServer->Server ));
}
catch( EASendMail::SmtpTerminatedException *exp )
{
err = exp->Message;
}
catch( EASendMail::SmtpServerException *exp )
{
err = String::Format( S"Exception: Server Respond: {0}", exp->ErrorMessage );
}
catch( System::Net::Sockets::SocketException *exp )
{
err = String::Format( S"Exception: Networking Error: {0} {1}", exp->ErrorCode.ToString(S"d"), exp->Message );
}
catch( System::ComponentModel::Win32Exception *exp )
{
err = String::Format( S"Exception: System Error: {0} {1}", exp->ErrorCode.ToString(S"d"), exp->Message );
}
catch( System::Exception *exp )
{
err = String::Format( S"Exception: Common: {0}", exp->Message );
}
if( err->Length > 0 )
{
MessageBox::Show( err );
}
}
[JScript.NET]
public function SendMail( sFrom:String,
sTo:String,
sCc:String,
sServer:String,
sUserName:String,
sPassword:String,
sSubject:String,
sBodyText:String,
bSSLConnection:Boolean )
{
var oMail:SmtpMail = new SmtpMail("TryIt");
var oSmtp:SmtpClient = new SmtpClient();
//To generate a log file for SMTP transaction, please use
//oSmtp.LogFileName = "c:\\smtp.log";
var err:String = "";
try
{
//From is a MailAddress object, in c#, it supports implicit converting from string.
//The syntax is like this: "test@adminsystem.com" or "Tester<test@adminsystem.com>"
//The example code without implicit converting
// oMail.From = new MailAddress( "Tester", "test@adminsystem.com" );
// oMail.From = new MailAddress( "Tester<test@adminsystem.com>" );
// oMail.From = new MailAddress( "test@adminsystem.com" );
//To, Cc and Bcc is a AddressCollection object, in C#, it supports implicit converting from string.
// multiple address are separated with (,;)
//The syntax is like this: "test@adminsystem.com, test1@adminsystem.com"
//The example code without implicit converting
// oMail.To = new AddressCollection( "test1@adminsystem.com, test2@adminsystem.com" );
// oMail.To = new AddressCollection( "Tester1<test@adminsystem.com>, Tester2<test2@adminsystem.com>");
//You can add more recipient by Add method
// oMail.To.Add( new MailAddress( "tester", "test@adminsystem.com"));
oMail.From = new MailAddress(sFrom);
oMail.Subject = sSubject
oMail.To = new AddressCollection(sTo);
oMail.Cc = new AddressCollection(sCc);
oMail.TextBody = sBodyText;
//If the sBodyText contains the html tag, please use
//oMail.HtmlBody = sBodyText;
//Add attachment
//oMail.AddAttachment( "c:\\test.gif" );
var oServer:SmtpServer = new SmtpServer(sServer);
if( sUserName.Length != 0 && sPassword.Length != 0 )
{
oServer.User = sUserName;
oServer.Password = sPassword;
}
if( bSSLConnection )
{
oServer.ConnectType = SmtpConnectType.ConnectSSLAuto;
}
oSmtp.SendMail( oServer, oMail );
MessageBox.Show( String.Format("The message was sent to {0} successfully!", oServer.Server ));
}
catch( exp:SmtpTerminatedException )
{
err = exp.Message;
}
catch( exp:SmtpServerException )
{
err = String.Format( "Exception: Server Respond: {0}", exp.ErrorMessage );
}
catch( exp:System.Net.Sockets.SocketException )
{
err = String.Format( "Exception: Networking Error: {0} {1}", exp.ErrorCode, exp.Message );
}
catch( exp:System.ComponentModel.Win32Exception )
{
err = String.Format( "Exception: System Error: {0} {1}", exp.ErrorCode, exp.Message );
}
catch( exp:System.Exception )
{
err = String.Format( "Exception: Common: {0}", exp.Message );
}
if( err.Length > 0 )
{
MesageBox.Show( err );
}
}