Send Plaintext Message
This application demonstrates how:
- How to logon to an EWS Session using a profile.
- How to create and send a plaintext email.
- How to add attachments to email messages.
- How to send email from a different address
- How to set a replyto recipient
- How to use the addressbook dialog to select recipients
- How to verify recipients
Example code:
procedure TFrmMain.actSendExecute(Sender: TObject);
var
MsgStore: IRwEWSMsgStore;
Folder: IRwEWSFolder;
NewMessage: IRwEWSEMail;
RecipTableTo, RecipTableCC: IRwEWSRecipients;
i: Integer;
begin
if Trim(edtTo.Text) = '' then
raise Exception.Create('No recipients specified');
if Trim(edtSubject.Text) = '' then
if RwMsgBoxYesNo('There is no subject. Do you want to send the message anyway?') = mrNO then
raise EAbort.Create('');
// Check if all recpients are valid
RecipTableTo := EWSSession.CreateRecipients;
RecipTableTo.Add(edtTo.Text);
if not EWSSession.ResolveNames(RecipTableTo, False) then
raise EAbort.Create('One ore more recipients are invalid.');
if edtCC.Text <> '' then
begin
RecipTableCC := EWSSession.CreateRecipients;
RecipTableCC.Add(edtCC.Text);
if not EWSSession.ResolveNames(RecipTableCC, False) then
raise EAbort.Create('One ore more recipients are invalid.');
end;
if FSelectedAccountID = FDefaultAccountID then
MsgStore := EWSSession.OpenDefaultMsgStore {create the new message in the drafts folder of the default messagestore}
else
MsgStore := EWSSession.OpenMsgStore(EWSSession.MsgStores.Names[FSelectedAccountID]); {use impersonation to open the store}
Folder := MsgStore.GetFolder(dfindrafts);
NewMessage := Folder.CreateItem(tMessage) as IRwEWSEMail;
NewMessage.ToRecipients.AsString := edtTo.Text;
NewMessage.CcRecipients.AsString := edtCC.Text;
NewMessage.Subject := edtSubject.Text;
NewMessage.BodyText := msgBody.Lines.Text;
// add the attachments
for i := 0 to lvAttachments.Items.Count - 1 do
NewMessage.Attachments.AddAttachment(TAttachment(lvAttachments.Items[i].Data).FileName);
if Assigned(FOnBehalfOf) then
begin
NewMessage.From.Name := FOnBehalfOf.Name; // to do: NewMessage.From.Assign(FOnBehalfOf) where FOnBehalfOf is of type IRwEWSRecipient
NewMessage.From.EmailAddress := FOnBehalfOf.EmailAddress;
NewMessage.From.RoutingType := FOnBehalfOf.RoutingType;
NewMessage.From.MailboxType := FOnBehalfOf.MailboxType;
end;
// Set a custom header for potential tracking purpuses
NewMessage.SubmitMessage(True);
ClearMessage;
RwMsgBoxInfo('The message is submitted.');
end;
Screenshot: