|
Hi,
I am using the following code to generate a bitmap:
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(panelControl1.Width, panelControl1.Height);
panelControl1.DrawToBitmap(bmp, panelControl1.ClientRectangle);
I would like t ask how can I embed the bmp in my MailMessage's email body?
Thanks,
Jassim[^]
Technology News @ www.JassimRahma.com
|
|
|
|
|
It would need to be encoded and part of a MIME message[^]. Also part of .NET[^] and I'm sure CodeProject has some articles on the subject too.
Try this; send yourself an email and open in outlook. Now right-click and select "view source".
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
There's an example here[^].
There's also an example of creating attachments from a stream[^]. (The LinkedResource class works in a similar way.)
Combining the two would give you something like this:
using (MailMessage mail = new MailMessage())
{
mail.From = new MailAddress("me@mycompany.com");
mail.To.Add("you@yourcompany.com");
mail.Subject = "This is an email";
AlternateView plainView = AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable by those clients that don't support html", null, "text/plain");
AlternateView htmlView = AlternateView.CreateAlternateViewFromString("<p>Here is an embedded image: <img src=\"cid:myimage\"></p>", null, "text/html");
MemoryStream stream = new MemoryStream();
theImage.Save(stream, ImageFormat.Jpeg);
stream.Seek(0L, SeekOrigin.Begin);
LinkedResource imageResource = new LinkedResource(stream, MediaTypeNames.Image.Jpeg);
imageResource.ContentId = "myimage";
htmlView.LinkedResources.Add(imageResource);
mail.AlternateViews.Add(plainView);
mail.AlternateViews.Add(htmlView);
SmtpClient smtp = new SmtpClient("127.0.0.1");
smtp.Send(mail);
}
You just need to make sure that each embedded resource has a ContentId which is unique within the message, and refer to the resource within the view as cid:ContentId .
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
When a hidden form was shown again, after I clicked on the Cancel button in the form, the change in the TextBox of the form was kept.
I am new in C#. Any advise will be appreciated.
modified 10-Mar-15 11:52am.
|
|
|
|
|
Your program needs to respond to the Cancel button event and actually do something.
|
|
|
|
|
The application does not "remember" the previous value; you'd have to write that. Save the content of the textbox when you show it, and overwrite it with that value when the cancel-event fires.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Are you showing the "hidden" Form using 'ShowDialog ? ... or ? More details, please.
«To kill an error's as good a service, sometimes better than, establishing new truth or fact.» Charles Darwin in "Prospero's Precepts"
|
|
|
|
|
Hello ,
I want to display just a part of a JPEG image (from ofsset 1 to offset 2). I use a pictureBox to display the hole image.
Help please
|
|
|
|
|
|
Hello ,
I want to display just a part of a JPEG image (from ofsset 1 to offset 2). I use a pictureBox to display the hole image.
Help please
|
|
|
|
|
i am looking for the knowledge regarding pushing database change notification. i know that people will tell me to use sql dependency class but i used that it has some problem.
if sql dependency class is monitoring table for long time and if no data change occurred for that table then sql dependency class throw exception. we can create max 100 instance of sql dependency class.
i am looking for something which i can use in a situation where many user changing data in a table constantly and all change notification will send message to front end application. again i do not like to use polling technique rather i want to use push technique.
it will be very helpful if someone discuss how advance developed handle this situation where sql server and c# is used. please guide me in details. thanks
tbhattacharjee
|
|
|
|
|
A database is not "live" data; it should not report each and every change.
The best option would be polling. For a decent push, there's SqlDependency, but it is not meant to update each and every client of each and every notification in the model. If that is what you need, consider syncing with the client-database.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
what technology people use in share trading application because each share price frequently goes up and down. if the same trading win apps is using 1000 user and if we use polling technology then database will be hit again and again. so discuss if you were in that kind of situation.
tbhattacharjee
|
|
|
|
|
You can always cache the results on a fixed expiry. So for each stock quote cache on 3 mins (or whatever) so that subsequent apps all get their value from the cache and your database is only hit once every 3 mins. If you need the data to be more dynamic than that then you can use sqldependency etc to kick off a task that clears the quote from the cache so that your cache is always up-to-date.
|
|
|
|
|
thanks for your time. suppose if i cached data and web service will pull data from cache and push those data to all connected clients. if i design that way then after every certain interval my web service need to pull data and push data to all connected clients. i guess web service constantly do the polling to hit the cache.
i want a good mechanism like that i need to push only change data not all data from cache.
really looking for details information that how people manage to developed this kind of apps with good scaling.
tbhattacharjee
|
|
|
|
|
All in all, it seems you are looking for a solution with "good scaling" that only involves software.
You need to accept that software alone will only get you so far; and that at some point, you may need to throw more / better hardware at the problem; i.e. multiple application servers / server farms. One does not have to "host" either; one can buy as many "cloud cycles" as one needs without any long-term obligation.
A solution that includes additional hardware may be cheaper, easier and quicker to implement than agonizing over the "best" software solution for who knows how long (and then trying to "optimize" it).
I think you should start with a (small) prototype and go from there; simply because some of your assumptions are wrong or poorly defined:
- Is this a Windows client or browser-based client-server app?
- Do all the clients have to same bandwidth?
- What sort of client "devices" are we talking about?
- What is the client going to do with a given "notification"?
- Even if an SqlDependency instance "threw an exception", why do you think this is a problem? (Just create a mechanism to restart it)
- Why do you think that "100 SqlDependency instances" is a limitation? Or put another way, why do you think you need that many or even more?
- What kind of response times are you thinking you need? Can notifications be "interleaved" among clients? If not, why not?
- etc.
(Do the prototype).
|
|
|
|
|
thanks for your time. here i am giving answer for your question point wise.
1) Is this a Windows client or browser-based client-server app?
yes Windows client.
2)Do all the clients have to same bandwidth?
not necessarily and not known.
3) What sort of client "devices" are we talking about?
a win client will run on normal pc at client side
4)What is the client going to do with a given "notification"?
then moment notification comes at client side then client will insert or update that data in its gridview.
5) Even if an SqlDependency instance "threw an exception", why do you think this is a problem? (Just create a mechanism to restart it)
- Why do you think that "100 SqlDependency instances" is a limitation? Or put another way,
yes i can handle exception and start. i did it this way. here i am going to put a small code just to show how i am handling the exception but not sure that am i on right path? here is the code
void OnDataChange(object sender, SqlNotificationEventArgs e)
{
((SqlDependency)sender).OnChange -= OnDataChange;
if (e.Source == SqlNotificationSource.Timeout)
{
var template = new MailTemplate()
.WithBody("HI,<br><br>Part Indexer Service Exception Timeout occur " + DateTime.Now.ToLongDateString())
.WithSubject("Part Indexer Service Exception Timeout occur")
.WithSender("bba-india@bba-reman.com")
.WithRecepient("tridip@bba-reman.com")
.Send();
RegisterNotification();
return;
}
else if (e.Source != SqlNotificationSource.Data)
{
var template = new MailTemplate()
.WithBody("HI,<br><br>Part Indexer Service Exception SqlNotificationSource.Data " + DateTime.Now.ToLongDateString())
.WithSubject("Part Indexer Service Exception SqlNotificationSource.Data")
.WithSender("bba-india@bba-reman.com")
.WithRecepient("tridip@bba-reman.com")
.Send();
Environment.Exit(1);
}
StartIndex();
RegisterNotification();
}
i guess some where i read that sql dependency support upto 100 instance. so if more client need to run my win apps then problem may occur. so guide me how to handle this situation.
why do you think you need that many or even more? this is not clear that what you are asking !!!
6) What kind of response times are you thinking you need?
response time need to be real time & faster as much as possible.
7) Can notifications be "interleaved" among clients? If not, why not?
- etc. this question is not clear....so discuss it again.
please answer my all question point wise.
thanks
tbhattacharjee
|
|
|
|
|
Quote: please answer my all question point wise.
My points were intended to get you thinking. Anyway …
1) If they are Windows clients, then you have more architectural possibilities: e.g. async callbacks; message queues; etc.
2) If they are all “Windows clients”, we can assume (hopefully) that bandwidth is not an issue.
3) OK; no “watches” then.
4) I see … “real-time” gridviews … with a person sitting there watching it change? With updates “as fast as possible”. Sounds like a bogus requirement.
5) I’m not writing your code for you … Do the prototype. You said yourself that it was only possible to run 100 instances of the SQLDependency … Why do “you” think this is a problem? You can have “one” running on the server; which then communicates with “all” clients … Why do you think you need more than one?
6) “As fast as possible” is a non-answer; how will you know if it is ever “fast enough”?
7) Instead of “broadcasting” to all clients at any given time, one or more clients can be notified on a rotating basis; spreading out the load.
Do the prototype.
|
|
|
|
|
Tridip Bhattacharjee wrote: what technology people use in share trading application You'd have to be more specific than "share trading application". Doing buying/selling/orders in a database is not HFT.
Tridip Bhattacharjee wrote: because each share price frequently goes up and down Yes, but if you blow each fact (out of, say 10.000 shares?) to all 1000 users, your network would likely be down, without an up in sight.
Tridip Bhattacharjee wrote: o discuss if you were in that kind of situation. They'd get a webpage where they can hit F5 until the requirements dictate they need something else.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
i have notice that u have signature in your post like "Bastard Programmer from Hell" how you can dare to use vulgar words in public forum. codeproject site has good reputation. remove vulgar words ASAP.
tbhattacharjee
|
|
|
|
|
Tridip Bhattacharjee wrote: how you can dare to use vulgar words in public forum What vulgar word?
Tridip Bhattacharjee wrote: remove vulgar words ASAP. I don't do commands.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
the word Bastard is consider very nice pleasing word in your locality?
tbhattacharjee
|
|
|
|
|
It's just an old english word to describe a child born out of wedlock.
|
|
|
|
|
Sorry i was not aware of. thanks
tbhattacharjee
|
|
|
|
|
Did you just use the 'B' word in your post?
How very dare you - I am currently holding up my handbag with two hands with a shocked look on my face.
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
|
|
|
|