SmtpClient.BeginSendRawMail Method


Sends email message with original raw content asynchronously.

[Visual Basic]
Public Function BeginSendMail( _
    server As SmtpServer, _
    mail() As Byte, _
    from As MailAddress, _
    recipients As AddressCollection, _
    callback As AsyncCallback, _
    state As Object _
) As SmtpClientAsyncResult
[C#]
public SmtpClientAsyncResult BeginSendMail(
    SmtpServer server,
    byte[] mail,
    MailAddress from,
    AddressCollection recipients,    
    AsyncCallback callback,
    Object state
);
[C++]
public: SmtpClientAsyncResult^ BeginSendMail(
    SmtpServer^ server,
    array<unsigned char>^ mail,
    MailAddress^ from,
    AddressCollection^ recipients,
    AsyncCallback^ callback,
    Object^ state
);
[JScript]
public function BeginSendMail( 
    server : SmtpServer, 
    mail : Byte[],
    from : MailAddress,
    recipients : AddressCollection,
    callback : AsyncCallback, 
    state As Object 
) : SmtpClientAsyncResult;

Parameters

server
A SmtpServer instances used to send email.
mail
A byte array instance which contains the email content to send.
from
A MailAddress instance represents the email sender.
recipients
A AddressCollection instance represents the email recipients.
callback
The AsyncCallback delegate.
state
An object containing state information for this request.

Return Value

An SmtpClientAsyncResult that references the asynchronous send.

Remarks

This method is used to send the customized email content. For example, you can use this method to forward an email without changing anything in the email. If from or recipients is null, EASendMail uses the from, recipient in orignal email file automatically.

Example

[Visual Basic, C#] To get the full samples of EASendMail, please refer to Samples section.

[VB - Forward Email]

Imports EASendMail
Imports System.IO

Sub ForwardEmailFile()

    Try
        Dim from As New MailAddress("from@adminsystem.com")
        Dim recipients As New AddressCollection("to@adminsystem.com")

        Dim fs As New FileStream("c:\test.eml", FileMode.Open, FileAccess.Read, FileShare.Read)
        Dim mailData(fs.Length - 1) As Byte
        fs.Read(mailData, 0, fs.Length)
        fs.Close()

        Dim oServer As SmtpServer = New SmtpServer("myserveraddress")
        ' SMTP user authentication
        oServer.User = "myusername"
        oServer.Password = "mypassword"

        ' Most mordern SMTP servers require SSL/TLS connection now.
        ' ConnectTryTLS means if server supports SSL/TLS, SSL/TLS will be used automatically.
        oServer.ConnectType = SmtpConnectType.ConnectTryTLS

        Dim oSmtp As SmtpClient = New SmtpClient
        Dim asyncResult As SmtpClientAsyncResult = oSmtp.BeginSendRawMail(oServer, mailData, from, recipients, Nothing, Nothing)
        Do While Not asyncResult.AsyncWaitHandle.WaitOne(5, False)
            ' do other thing
        Loop

        oSmtp.EndSendMail(asyncResult)
        
    Catch exp As Exception
        Console.WriteLine("Exception: {0}", exp.Message)
    End Try

End Sub


[C# - Forward Email] using System; using EASendMail; using System.IO; void ForwardEmailFile() { try { MailAddress from = new MailAddress("from@adminsystem.com"); AddressCollection recipients = new AddressCollection("to@adminsystem.com"); FileStream fs = new FileStream("c:\\test.eml", FileMode.Open, FileAccess.Read, FileShare.Read); byte[] mailRawData = new byte[fs.Length]; fs.Read(mailRawData, 0, mailRawData.Length); fs.Close(); SmtpServer oServer = new SmtpServer("myserveraddress"); // SMTP user authentication oServer.User = "myusername"; oServer.Password = "mypassword"; // Most mordern SMTP servers require SSL/TLS connection now. // ConnectTryTLS means if server supports SSL/TLS, SSL/TLS will be used automatically. oServer.ConnectType = SmtpConnectType.ConnectTryTLS; SmtpClient oSmtp = new SmtpClient(); SmtpClientAsyncResult asyncResult = oSmtp.BeginSendRawMail(oServer, mailRawData, from, recipients, null, null); while (!asyncResult.AsyncWaitHandle.WaitOne(5, false)) { // do other thing } oSmtp.EndSendMail(asyncResult); Console.WriteLine("the message was sent to {0} successfully", asyncResult.SmtpClientInstance.CurrentSmtpServer.Server); } catch (Exception exp) { Console.WriteLine("Exception: {0}", exp.Message); } }

See Also

SmtpClient.BeginSendMail Method
Work with EASendMail Service (Email Queuing)
SmtpClient.SendMailToQueue Method
SmtpClient.SendMailToQueueEx Method

Online Tutorials

Send Email in VB 6.0 - Tutorial
Send Email in C# - Tutorial
Send Email in VB.NET - Tutorial
Send Email in Visual C++ - Tutorial
Send Email in Managed C++/CLI - Tutorial
Send Email in Delphi - Tutorial
Send Email in MS SQL stored procedure - Tutorial