|
Well, your template will just be a string. Your keys will be things that a user won't ever type otherwise, so I presented it looking like a node: <mailto>, but it could be $MAILTO, or even MAILTO if you like. The point is to come up with something consistent, and the user will just type a template into a textbox, such as
$POSTALADDRESS
Dear $MAILTO,
Thank you for downloading a demo version of $THEPROGRAM. As you're aware, this demo will expire on $EXPIREDATE. We hope you've enjoyed the demo, if you have any questions, don't hestitate to ask us, your designated contact at $COMPANYNAME is $CONTACTEMAIL.
Regards,
$MAILFROM
And so, you just load that into a string, and for each email, make a copy, then call the replace method on the string class to replace each of the keys with the value for that email.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
ok man thanks a lot,
one more question please
am i able to insert a background picture or a logo or something like that.
thanks a lot
|
|
|
|
|
Well, you're rendering it, so you can render it over a bitmap if you want to. I expect you can also insert a bitmap into an email, although I'm not exactly sure.
Christian Graus - C++ MVP
'Why don't we jump on a fad that hasn't already been widely discredited ?' - Dilbert
|
|
|
|
|
I suppose he wants to send an html formated mail message with a custom background.
You can use the approach above, but if you need preview you will need to use something like BrowserControl to render how the html formatted message will look like.
If this is the question you can follow the steps below :
1. Present the user with some relevant interface to create the templates.
2. Define some kind of macro language so you can insert the variables you need in the text.
3. Make the text html, save it temporarly (or not temporarly) on the hard drive and load it to an WebBrowse control so the user can see the result, before save the template.
Hope it helps.
|
|
|
|
|
Hi friends,
In my C#.Net application i am trying to sort the gridview contents by using the following line.
dgAddressBook.Sort(dgAddressBook.Columns[23], ListSortDirection.Ascending);
but i am receiving the following error. Please help me to resolve this problem.
Error:
The original exception is: DataGridView control must be bound to an IBindingList object to be sorted. at System.Windows.Forms.DataGridView.SortDataBoundDataGridView_PerformCheck(DataGridViewColumn dataGridViewColumn)"
Thanks in Advance,
Regards,
Prya
|
|
|
|
|
|
Firing a DataGridView.Sort() on an unbound column generates an error.
Try use a bound column which is used to calculate the unbound one and fire the sort on that column. If you do not have one, create a dummy one.
SkyWalker
|
|
|
|
|
hi,
Thanks a lot. but i didnt understand bound and unbound columns. i am providing my code. can u pls. help me.
Code:
ICollection userDetails = new ArrayList();
//Here GetAllUsers is a function which used to get all the details of the users in domain
userDetails=GetAllUsers(DEFAULTDOMAIN, domainUser, domainPassword);
dgAddressBook.DataSource = userDetails;
dgAddressBook.Sort(dgAddressBook.Columns[23], ListSortDirection.Ascending);
if (userDetails != null)
{
dgAddressBook.Columns["Initials"].Visible = false;
dgAddressBook.Columns["PhysicalDeliveryOfficeName"].Visible = false;
dgAddressBook.Columns["GivenName"].Visible = false;
dgAddressBook.Columns["Country"].Visible = false;
dgAddressBook.Columns["Result"].Visible = false;
dgAddressBook.Columns["Enabled"].Visible = false;
dgAddressBook.Columns["HomePage"].Visible = false;
dgAddressBook.Columns["DisplayName"].Visible = false;
dgAddressBook.Columns["Id"].Visible = false;
dgAddressBook.Columns["UserName"].Visible = false;
dgAddressBook.Columns["IsTotallyLoaded"].Visible = false;
dgAddressBook.Columns["IsDistributed"].Visible = false;
dgAddressBook.Columns["dbReturnCode"].Visible = false;
dgAddressBook.Columns["dbReturnMessage"].Visible = false;
dgAddressBook.Columns["ManagerName"].Visible = false;
dgAddressBook.Columns["EmpType"].Visible = false;
dgAddressBook.Columns["PostOfficeBox"].Visible = false;
dgAddressBook.Columns["State"].Visible = false;
dgAddressBook.Columns["FirstName"].DisplayIndex = 0;
dgAddressBook.Columns["LastName"].DisplayIndex = 1;
dgAddressBook.Columns["Description"].DisplayIndex = 2;
dgAddressBook.Columns["TelephoneNumber"].DisplayIndex = 3;
dgAddressBook.Columns["StreetAddress"].DisplayIndex = 4;
dgAddressBook.Columns["City"].DisplayIndex = 5;
dgAddressBook.Columns["FirstName"].HeaderText = "First Name";
dgAddressBook.Columns["LastName"].HeaderText = "Last Name";
dgAddressBook.Columns["Description"].HeaderText = "Designation";
dgAddressBook.Columns["StreetAddress"].HeaderText = "Street";
dgAddressBook.Columns["TelephoneNumber"].HeaderText = "Mobile Phone";
dgAddressBook.Columns["AdditionalPhoneNumbers"].Width = 130;
dgAddressBook.Columns["DateOfJoin"].HeaderText = "Date of Join";
dgAddressBook.Columns["PersonalEmail"].HeaderText = "Personal E-mail";
dgAddressBook.Columns["Email"].HeaderText = "Office E-mail";
Thanks in Advance,
Regards,
Prya
|
|
|
|
|
I'm able to connect to a pop3 email using the tcpclient and i'm also able to get the email, i'm having problem when someone send me an attachment like an image or a .doc file. How can i decode the attachment from the email and save it to my computer?
|
|
|
|
|
I think you should consider using regular expressions to identify the image / doc or whatever comes with the mail.
You will however need to read some rfc's before starting ...
|
|
|
|
|
I can do the regular expression since the email tells you what type of mime is, and what is rfc's? do you have any example that I can follow?
|
|
|
|
|
hi all,
how to get the browser's status bar control in asp.net
thanking u
bye
|
|
|
|
|
kalyan_2416 wrote: how to get the browser's status bar control in asp.net
You don't.
Use the window.status property in Javascript to set the text of the status bar.
---
Year happy = new Year(2007);
|
|
|
|
|
|
|
This should be an easy on but I can't seem to find the answer. How do you return the index of an item selected by a user from the ListView control?
Thanks
|
|
|
|
|
.SelectedIndices[0]
/ravi
|
|
|
|
|
Thanks, this works but when the first item in the listview is selected I get the following.
InvalidArgument=Value of '0' is not valid for 'index'.
Parameter name: index
???
|
|
|
|
|
karl1701 wrote: InvalidArgument=Value of '0' is not valid for 'index'.
Parameter name: index
That implies no item is selected. Try this (intentionally verbose) example:
int GetFirstSelectedItem
(ListView theListView)
{
int nIndexOfFirstSelectedItem = -1;
SelectedListViewItemCollection selectedItems = theListView.SelectedItems;
if (selectedItems.Count > 0) {
ListViewItem firstSelectedItem = selectedItems[0];
nIndexOfFirstSelectedItem = firstSelectedItem.Index;
}
return nIndexOfFirstSelectedItem;
} /ravi
|
|
|
|
|
Thanks, it seems that the problem was I was checking the index when the SelectedIndexChanged was fired. Whenever I made another selection I would receive the error. I switched the code to the Click event and now it works fine.
Thanks for your help
Karl
|
|
|
|
|
listView1.SelectedItems
-> listView1.SelectedItems[0].Index
^^ lg
|
|
|
|
|
Thanks, this works but when the first item in the listview is selected I get the following.
InvalidArgument=Value of '0' is not valid for 'index'.
Parameter name: index
???
|
|
|
|
|
Hi every body ,
(sorry for my english...)
Suppose we have a text box (textBox1).
If we "leave" this text box by pressing the TAB key, the order of the following events is:
textBox1_Validated
textBox1_LostFocus
But, if we leave this text box using the mouse, that is by pressing on another control on the Form using the mouse, the order of these events is:
textBox1_LostFocus
textBox1_Validated
This is strange behavior in my opinion.
May anyone explain me this behavior?
Thanks in advanced, elaj
|
|
|
|
|
When you change the focus by using the keyboard, focus events occur in the following order:
- Enter
- GotFocus
- Leave
- Validating
- Validated
- LostFocus
When you change the focus by using the mouse or by calling the Focus method, focus events occur in the following order:
- Enter
- GotFocus
- LostFocus
- Leave
- Validating
- Validated
There is nothing strange in that, is it?
-- modified at 5:22 Monday 22nd January, 2007
SkyWalker
|
|
|
|
|
Hi SkyWalker,
There is nothing strange if your code does not depend on it.
However, i wrote a code that that register to control's "LostFocus" event and do some job there.
If the user call some other method - i unregister the event handler, but it should be done only after the "LostFocus" occurred.
Because the the user traditionally will call my method in the "Validate" event, you may understand why this behavior raise some problems.
However to overcome it i do the following:
I registered to the "GotFocus" event, and within this event handler i registered to the "LostFocus" event.
When the "LostFocus" event occurred, i do my job and unregistered the handler when it completed.
Elaj
|
|
|
|