Here in this Blog I am showing that how to
implement MailProcess application in F#. An Agent is defined in the code for
Reading Mail. Here Mail is a normal String which can be read from the Console
Application Window.
Example
module
EmailSendingProcedure =
open System
type Msg = string *
AsyncReplyChannel<string>
let textStr =
"Email {0} was received. Email contents: {1}"
let agent = MailboxProcessor<Msg>.Start(fun
mailbox ->
let rec
loop x =
async {
let! (message, replyChannel)
= mailbox.Receive();
if (message =
"Exit") then
replyChannel.Reply("Exitting.")
else
replyChannel.Reply(String.Format(textStr, x,
message))
do! loop (x + 1)
}
loop 0)
printfn "Email Sending Process"
printfn "Write Text and Press ENTER to
Send a Mail."
printfn "Write 'End' to Exit."
let mutable
exit = false
while (not exit)
do
printf "> "
let input = Console.ReadLine()
let reply = agent.PostAndReply(fun
replyChannel -> input, replyChannel)
if (reply = "Exitting.")
then
exit <- true
printfn "Reply: %s" reply
printfn "If you want to continue press
ENTER."
Console.ReadLine() |> ignore
Output