joe_pool_is
Contributor
In a background worker that will be running on our Server, I am listening for data in the form of a System.Net.Mail.MailMessage object (including attachments) to come from a client on our LAN. (The client PCs and operators on our manufacturing floor do not have an email program).
This is a work in progress, so the Client Side hasn't been written yet. The plan is to save the MailMessage object to a MemoryStream, and send the MemoryStream over the network using TCP.
My current obstical comes from finding a way to convert the received MemoryStream back into a MailMessage on the Server (the receiving end) so that the Server can send the message.
How do I convert a MemoryStream of data into a MailMessage object? I tried the code below, but the compile time error is "Cannot convert type 'byte[]' to 'System.Net.Mail.MailMessage'".
Server Side:
Any helpful tips on writing the Client Side portion are appreciated as well.
Regards,
~Joe
This is a work in progress, so the Client Side hasn't been written yet. The plan is to save the MailMessage object to a MemoryStream, and send the MemoryStream over the network using TCP.
My current obstical comes from finding a way to convert the received MemoryStream back into a MailMessage on the Server (the receiving end) so that the Server can send the message.
How do I convert a MemoryStream of data into a MailMessage object? I tried the code below, but the compile time error is "Cannot convert type 'byte[]' to 'System.Net.Mail.MailMessage'".
Server Side:
Code:
try {
SvrForm.Server.Start();
TcpClient client = SvrForm.Server.AcceptTcpClient(); // waits for data
if (worker.CancellationPending == true) return;
NetworkStream stream = client.GetStream();
try {
byte[] buf = new byte[client.ReceiveBufferSize];
using (MemoryStream ms = new MemoryStream(buf)) {
int len;
do {
len = stream.Read(buf, 0, client.ReceiveBufferSize);
ms.Write(buf, 0, len);
} while (len == client.ReceiveBufferSize);
byte[] byteFile = ms.GetBuffer();
try {
MailMessage email = (MailMessage)byteFile; <= ERROR HERE!!!
if (email.From.Address != string.Empty) {
SmtpClient client = new SmtpClient("172.16.8.200");
client.Send(email);
}
} catch (Exception er1) {
Console.WriteLine(er1.Message);
}
ms.Close();
}
} finally {
stream.Close();
client.Close();
SvrForm.Server.Stop();
}
} catch (SocketException) { // See MSDN:
// Windows Sockets V2 API Error Code Documentation
// for detailed description of error code
e.Cancel = true;
} catch (ThreadAbortException err) { // If I have to call Abort on this thread
eMsg = "Worker Thread Abort Exception:\r\n" + err.Message;
e.Cancel = true;
} catch (Exception err) {
eMsg = "General Error:\r\n" + err.Message;
e.Cancel = true;
} finally {
SvrForm.Server.Stop();
}
Regards,
~Joe