More .NET libraries
-
Rebex Mail Pack
IMAP, MS Graph, EWS, POP3, SMTP, MIME, S/MIME, MSG
-
Rebex Total Pack
All Rebex .NET libraries together
Back to feature list...
Sending e-mails
On this page:
The sample code on this page assumes you have already connected and authenticated to an Exchange server.
Sending a simple mail message
To send a simple mail message, use one of Ews.SendMessage
method overloads.
// create EWS client instance, connect, log in
var ews = new Rebex.Net.Ews();
ews.Connect(hostname);
ews.Login(username, password);
// send plain text message (to/subject/body)
ews.SendMessage("john@example.org", "Test 1", "Hello world!");
// send HTML message (to/subject/body)
ews.SendMessage("john@example.org", "Test 2",
new EwsMessageBody("<strong>Hello world!</strong>", EwsBodyFormat.Html));
' create EWS client instance, connect, log in
Dim ews = New Rebex.Net.Ews()
ews.Connect(hostname)
ews.Login(username, password)
' send plain text message (to/subject/body)
ews.SendMessage("john@example.org", "Test 1", "Hello world!")
' send HTML message (to/subject/body)
ews.SendMessage("john@example.org", "Test 2",
New EwsMessageBody("<strong>Hello world!</strong>", EwsBodyFormat.Html))
Note: You don't need to specify the 'From' address unless you are sending e-mail on behalf of another user. The server will add the field for you.
Note: By default, sent messages are stored to the "Sent Items" folder at the Exchange server.
To store the message into a different folder, specify desired folder ID using the optional second argument.
Alternatively, to send the message without storing it, specifynull
(Nothing
in VB.NET) as the folder ID.
Sending a mail message
To send a more complex mail message, create an instance of MailMessage
class and use Ews.SendMessage
method to send it:
// prepare new mail
var mail = new MailMessage();
//mail.From = "joe@example.org"; // not needed
mail.To = "john@example.org";
mail.Subject = "Test";
mail.BodyText = "Hello world!";
mail.BodyHtml = "<strong>Hello world!</strong>";
// create EWS client instance, connect, log in
// ...
// send the message
ews.SendMessage(mail);
' prepare new mail
Dim mail = New MailMessage()
'mail.From = "joe@example.org" ' not needed
mail.To = "john@example.org"
mail.Subject = "Test"
mail.BodyText = "Hello World!"
mail.BodyHtml = "<strong>Hello World!</strong>"
' create EWS client instance, connect, log in
' ...
' send the message
ews.SendMessage(mail)
Note: You don't need to specify the 'From' address unless you are sending e-mail on behalf of another user. The server will add the field for you.
Note: By default, sent messages are stored to the "Sent Items" folder at the Exchange server.
To store the message into a different folder, specify desired folder ID using the optional second argument.
Alternatively, to send the message without storing it, specify null
(Nothing
in VB.NET) as the folder ID.
Sending existing message (a draft)
To send an e-mail message that is already stored at the Exchange server, determine its ID and use the
following Ews.SendMessage
overload:
// create EWS client instance, connect, log in
var ews = new Rebex.Net.Ews();
ews.Connect(hostname);
ews.Login(username, password);
// load message ID from a file, database, etc.
// (or find it on the server using 'Search' method)
EwsItemId messageId = GetMessageId();
// send existing message using the message ID
// message is moved to "Sent Items" afterwards
ews.SendMessage(messageId);
' create EWS client instance, connect, log in
Dim ews = New Rebex.Net.Ews()
ews.Connect(hostname)
ews.Login(username, password)
' load message ID from a file, database, etc.
' (or find it on the server using 'Search' method)
Dim messageId As EwsItemId = GetMessageId()
' send existing message using the message ID
' message is moved to "Sent Items" afterwards
ews.SendMessage(messageId)
null
(Nothing
in VB.NET) as the folder ID.
Sending from a file or stream
To send an e-mail message from a file or a stream, load the mail into MailMessage
and send it:
// create EWS client instance, connect, log in
// ...
// load message from a stream (or a file)
var mail = new MailMessage();
mail.Load(stream);
// send the message
ews.SendMessage(mail);
' create EWS client instance, connect, log in
' ...
' load message from stream (or a file)
Dim mail = New MailMessage()
mail.Load(stream)
' send the message
ews.SendMessage(mail)
Sending e-mail on behalf of another user
To send an e-mail on behalf of another address,
use MailMessage.From
to specify the desired `From` address.
The `Sender` address will reflect the currently authenticated user.
// prepare mail
mail.From = "joe@example.org";
// create EWS client instance, connect
// ...
// login under sender account
ews.Login("bob@example.org", password);
// Bob sends mail on behalf of Joe
ews.SendMessage(mail);
' prepare mail
mail.From = "joe@example.org"
' create EWS client instance, connect
' ...
' login under sender account
ews.Login("bob@example.org", password)
' Bob sends mail on behalf of Joe
ews.SendMessage(mail)
- No permissions - sender cannot impersonate anther address or send e-mail on its behalf.
- Send on behalf - sender can send an e-mail on behalf of another address.
- Send as - sender can impersonate the other address.
Instructing the receiver to send replies to another address
When you would like the replies to be delivered to an address different from the sender,
specify the MailMessage.ReplyTo
property:
// prepare mail message
mail.ReplyTo = "bob@example.org";
// create EWS client instance, connect, log in
// ...
// send mail from Joe, but request that replies go to Bob
ews.SendMessage(mail);
' prepare mail message
mail.ReplyTo = "bob@example.org"
' create EWS client instance, connect, log in
' ...
' send mail from Joe, but request that replies go to Bob
ews.SendMessage(mail)
Sending replies
To create a reply to a message, use the
MailMessage.CreateReply
method.
Then, send the message using Ews.SendMessage
method:
// download a message to reply to
MailMessage original = ews.GetMailMessage(messageId);
// reply to all
MailMessage reply = original.CreateReply("joe@example.org", ReplyBodyTransformation.None, true);
reply.BodyText = "Hello, I agree.\n" + original.BodyText;
// send the reply
ews.SendMessage(reply);
' download a message to reply to
Dim original As MailMessage = ews.GetMailMessage(messageId)
' reply to all
Dim reply As MailMessage = original.CreateReply("joe@example.org", ReplyBodyTransformation.None, True)
reply.BodyText = "Hello, I agree." & vbLf + original.BodyText
' send the reply
ews.SendMessage(reply)
Forwarding messages
To forward a message to another address, copy the required fields and add the original message as an attachment:
// download a message to forward
MailMessage original = ews.GetMailMessage(messageId);
// prepare forwarded message
MailMessage forward = new MailMessage();
forward.From = "joe@example.org";
forward.To = "john@example.org";
forward.Subject = "FW: " + original.Subject;
forward.BodyText = "Hello, I am forwarding this to you:\n\n" + original.BodyText;
// include original message as attachment
forward.Attachments.Add(new Attachment(original));
// send it
ews.SendMessage(forward);
' download a message to forward
Dim original As MailMessage = ews.GetMailMessage(messageId)
' prepare forwarded message
Dim forward As New MailMessage()
forward.From = "joe@example.org"
forward.To = "john@example.org"
forward.Subject = "FW: " & original.Subject
forward.BodyText = "Hello, I am forwarding this to you:" &
vbLf & vbLf & original.BodyText
' include original message as attachment
forward.Attachments.Add(New Attachment(original))
' send it
ews.SendMessage(forward)
Back to feature list...