Sri Lanka .NET 
                Forum Member
Showing posts with label .NET Code. Show all posts
Showing posts with label .NET Code. Show all posts

Tuesday, November 13, 2007

Sending Newsletters using C# 2.0

1.Without using MSMQ

using System.Net.Mail;
using System.Data.SqlClient;
using System.Messaging;



2.With using MSMQ

//This function will send the message to the msmq if the server
//fails to send the email
private void sendNewsletterMSMQ()
{
if (MessageQueue.Exists(@".\private$\Newsletter") == false)
{
MessageQueue.Create(@".\private$\Newsletter");
}

MessageQueue objQue = new MessageQueue(@".\private$\Newsletter");

SqlConnection conn = new SqlConnection("server=localhost;uid=sa;pwd=password;database=Newsletters;");
SqlCommand comm = new SqlCommand("SELECT DISTINCT Email FROM NewsletterEmails", conn);

SqlDataReader dr;

MailAddress from;
MailAddress to;

SmtpClient objClient = new SmtpClient();

objClient.Host = "host";
objClient.Credentials = new System.Net.NetworkCredential("user name", "password");

try
{

conn.Open();

dr = comm.ExecuteReader(CommandBehavior.CloseConnection);

while (dr.Read())
{
from = new MailAddress("admin@admin.com");
to = new MailAddress(dr[0].ToString());

MailMessage objMail = new MailMessage(from, to);

objMail.Subject = "Newsletter";
objMail.IsBodyHtml = true;
objMail.Body = "HTML CODE";

try
{
objClient.Send(objMail);
}
catch
{
objQue.Send(objMail.To[0].Address.ToString());
}
}

dr.Close();
}
catch (SqlException sqlEx)
{
Response.Write("Database error: " + sqlEx.Message);
}
catch (Exception ex)
{
Response.Write("General error: " + ex.Message);
}
}


//This function will start reading the msmq
private void readMSMQ()
{
MessageQueue objQue = new MessageQueue(@".\private$\Newsletter");

string[] types = { "System.String" };
((XmlMessageFormatter)objQue.Formatter).TargetTypeNames = types;

objQue.ReceiveCompleted += new ReceiveCompletedEventHandler(queue_ReceiveCompleted);

objQue.BeginReceive();
}


//Event handler for the ReceiveCompleted event
private void queue_ReceiveCompleted(object sender, ReceiveCompletedEventArgs e)
{
try
{
string toAddress = e.Message.Body.ToString();

sendNewsletterMSMQ(toAddress);

AyuviQue.BeginReceive();

}
catch
{

}

}


//This function will send the email to the specified address
private void sendNewsletterMSMQ(string toAddress)
{
if (MessageQueue.Exists(@".\private$\Newsletter") == false)
{
MessageQueue.Create(@".\private$\Newsletter");
}

MessageQueue objQue = new MessageQueue(@".\private$\Newsletter");

MailAddress from;
MailAddress to;

SmtpClient objClient = new SmtpClient();

objClient.Host = "host";
objClient.Credentials = new System.Net.NetworkCredential("user name", "password");

try
{
from = new MailAddress("admin@admin.com");
to = new MailAddress(toAddress);

MailMessage objMail = new MailMessage(from, to);

objMail.Subject = "Newsletter";
objMail.IsBodyHtml = true;
objMail.Body = "HTML CODE";

try
{
objClient.Send(objMail);
}
catch
{
objQue.Send(objMail.To[0].Address.ToString());
}
}
catch (Exception ex)
{
Response.Write("General error: " + ex.Message);
}
}

Tuesday, October 10, 2006

Create Graphs

UDraw(Graph) is a free software which we can use to generate graphs.After creating a graph it creates a file call fileName.udg with a specific format.

Example Image :



Download Software

We can use a XML file to create above graph through C# code.

Sample XML File :



FlooringSaw
Flooring
Saw
FlooringDry
1
1/1/1900 12:00:00 AM


FlooringDry
Flooring
Dry
FlooringPlane
2
1/1/1900 12:00:00 AM


FlooringPlane
Flooring
Plane
FlooringSize
3
1/1/1900 12:00:00 AM


FlooringSize
Flooring
Size
FlooringAssemble
4
1/1/1900 12:00:00 AM


FlooringAssemble
Flooring
Assemble
FlooringFinish
5
1/1/1900 12:00:00 AM


FlooringFinish
Flooring
Finish
ROOT
6
1/1/1900 12:00:00 AM



Code to display the graph :

DataSet dsUDG = new DataSet();
dsUDG.ReadXml("Services.xml");

DataRow []servOprs = dsUDG.Tables["ServiceOperation"].Select("ServiceName = 'Flooring'");

StreamWriter sw = new StreamWriter("servOprs.udg");

sw.WriteLine("[l");

for(int i = 0;i < servOprs.Length;i++)
{
if(servOprs[i]["ParentServOprsID"].ToString() != "ROOT")
{
DataRow []temp = dsUDG.Tables["ServiceOperation"].Select("ServOprsID = '"+servOprs[i]["ParentServOprsID"].ToString()+"'");

if(i != 0)
{
sw.WriteLine("l("+va+"_"+servOprs[i]["OperationName"].ToString()+va+",n("+va+"node"+va+",[a("+va+"_GO"+va+","+va+"ellipse"+va+"),a("+va+"OBJECT"+va+","+va+servOprs[i]["OperationName"].ToString()+va+"),a("+va+"COLOR"+va+","+va+"lightred"+va+"),a("+va+"INFO"+va+","+va+va+")],");
}
else
{
sw.WriteLine("("+va+"_"+servOprs[i]["OperationName"].ToString()+va+",n("+va+"node"+va+",[a("+va+"_GO"+va+","+va+"ellipse"+va+"),a("+va+"OBJECT"+va+","+va+servOprs[i]["OperationName"].ToString()+va+"),a("+va+"COLOR"+va+","+va+"lightred"+va+"),a("+va+"INFO"+va+","+va+va+")],");
}

if(temp.Length != 0)
{
sw.WriteLine("[l("+va+"@"+servOprs[i]["OperationName"].ToString()+va+",e("+va+"edge"+va+",[a("+va+"EDGEPATTERN"+va+","+va+"single;solid;1;0"+va+"),a("+va+"OBJECT"+va+","+va+va+"),a("+va+"FONTSTYLE"+va+","+va+"bold"+va+"),a("+va+"INFO"+va+","+va+va+")],");
}
}
else
{
sw.WriteLine("l("+va+"_"+servOprs[i]["OperationName"].ToString()+va+",n("+va+"node"+va+",[a("+va+"_GO"+va+","+va+"ellipse"+va+"),a("+va+"OBJECT"+va+","+va+servOprs[i]["OperationName"].ToString()+va+"),a("+va+"COLOR"+va+","+va+"lightblue"+va+"),a("+va+"INFO"+va+","+va+va+")],[]");
}
}

for(int k = 0;k < servOprs.Length-1;k++)
{
sw.WriteLine("))))]");
}

sw.WriteLine("))]");

sw.Close();

Thursday, October 05, 2006

Generate Gantt Project 2.0.2 File

Gantt Project 2.0.2 is a open source project scheduling application written in Java and featuring gantt chart, resource management, calendaring, import/export (MS Project, HTML, PDF, spreadsheets).

Download Gantt Project

After creating a plan when you save it it saves the file as an XML file.There is a specific format to that file and we can generate that file through code using C#.NET.

Below is a sample code for the file generation.

XmlTextWriter tw = new XmlTextWriter("Plan.xml", System.Text.Encoding.UTF8);

tw.Formatting = Formatting.Indented;

tw.WriteStartDocument();

tw.WriteStartElement("project");
tw.WriteAttributeString("name","");
tw.WriteAttributeString("company","");
tw.WriteAttributeString("webLink","");
tw.WriteAttributeString("view-date","year-month-day");
tw.WriteAttributeString("view-index","0");
tw.WriteAttributeString("gantt-divider-location","316");
tw.WriteAttributeString("resource-divider-location","301");
tw.WriteAttributeString("version","2.0");

tw.WriteStartElement("view");
tw.WriteAttributeString("zooming-state","default:2");
tw.WriteEndElement();

tw.WriteStartElement("calendars");
tw.WriteStartElement("day-types");
tw.WriteStartElement("day-type");
tw.WriteAttributeString("id","0");
tw.WriteEndElement();

tw.WriteStartElement("day-type");
tw.WriteAttributeString("id","1");
tw.WriteEndElement();

tw.WriteStartElement("calendar");
tw.WriteAttributeString("id","1");
tw.WriteAttributeString("name","default");

tw.WriteStartElement("default-week");
tw.WriteAttributeString("sun","1");
tw.WriteAttributeString("mon","0");
tw.WriteAttributeString("tue","0");
tw.WriteAttributeString("wed","0");
tw.WriteAttributeString("thu","0");
tw.WriteAttributeString("fri","0");
tw.WriteAttributeString("sat","1");
tw.WriteEndElement();

tw.WriteStartElement("overriden-day-types");
tw.WriteEndElement();

tw.WriteStartElement("days");
tw.WriteEndElement();

tw.WriteEndElement(); // end calendar
tw.WriteEndElement(); // end day types
tw.WriteEndElement(); // end calendars

tw.WriteStartElement("description");
tw.WriteEndElement();

tw.WriteStartElement("tasks");
tw.WriteAttributeString("color","#8cb6ce");

tw.WriteStartElement("taskproperties");

tw.WriteStartElement("taskproperty");

tw.WriteAttributeString("id","tpd0");
tw.WriteAttributeString("name","type");
tw.WriteAttributeString("type","default");
tw.WriteAttributeString("valuetype","icon");

tw.WriteEndElement();

tw.WriteStartElement("taskproperty");

tw.WriteAttributeString("id","tpd1");
tw.WriteAttributeString("name","priority");
tw.WriteAttributeString("type","default");
tw.WriteAttributeString("valuetype","icon");

tw.WriteEndElement();

tw.WriteStartElement("taskproperty");

tw.WriteAttributeString("id","tpd2");
tw.WriteAttributeString("name","info");
tw.WriteAttributeString("type","default");
tw.WriteAttributeString("valuetype","icon");

tw.WriteEndElement();

tw.WriteStartElement("taskproperty");

tw.WriteAttributeString("id","tpd3");
tw.WriteAttributeString("name","name");
tw.WriteAttributeString("type","default");
tw.WriteAttributeString("valuetype","text");

tw.WriteEndElement();

tw.WriteStartElement("taskproperty");

tw.WriteAttributeString("id","tpd4");
tw.WriteAttributeString("name","begindate");
tw.WriteAttributeString("type","default");
tw.WriteAttributeString("valuetype","date");

tw.WriteEndElement();

tw.WriteStartElement("taskproperty");

tw.WriteAttributeString("id","tpd5");
tw.WriteAttributeString("name","enddate");
tw.WriteAttributeString("type","default");
tw.WriteAttributeString("valuetype","date");

tw.WriteEndElement();

tw.WriteStartElement("taskproperty");

tw.WriteAttributeString("id","tpd6");
tw.WriteAttributeString("name","duration");
tw.WriteAttributeString("type","default");
tw.WriteAttributeString("valuetype","int");

tw.WriteEndElement();

tw.WriteStartElement("taskproperty");

tw.WriteAttributeString("id","tpd7");
tw.WriteAttributeString("name","completion");
tw.WriteAttributeString("type","default");
tw.WriteAttributeString("valuetype","int");

tw.WriteEndElement();

tw.WriteStartElement("taskproperty");

tw.WriteAttributeString("id","tpd8");
tw.WriteAttributeString("name","coordinator");
tw.WriteAttributeString("type","default");
tw.WriteAttributeString("valuetype","text");

tw.WriteEndElement();

tw.WriteStartElement("taskproperty");

tw.WriteAttributeString("id","tpd9");
tw.WriteAttributeString("name","predecessors");
tw.WriteAttributeString("type","default");
tw.WriteAttributeString("valuetype","text");

tw.WriteEndElement();

tw.WriteEndElement();

tw.WriteStartElement("task");
tw.WriteAttributeString("id","13");
tw.WriteAttributeString("name","creating xml file");
tw.WriteAttributeString("shape","0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0");
tw.WriteAttributeString("meeting","false");
tw.WriteAttributeString("start","2005-11-04");
tw.WriteAttributeString("duration","1");
tw.WriteAttributeString("complete","50");
tw.WriteAttributeString("fixed-start","false");
tw.WriteAttributeString("priority","1");
tw.WriteAttributeString("expand","true");

tw.WriteStartElement("notes");
tw.WriteEndElement();

tw.WriteStartElement("depend");
tw.WriteAttributeString("id","");
tw.WriteAttributeString("type","2");
tw.WriteEndElement();

tw.WriteEndElement(); // end task
tw.WriteEndElement(); // end tasks

tw.WriteStartElement("resources");

tw.WriteStartElement("resource");
tw.WriteAttributeString("id","1");
tw.WriteAttributeString("name","Pasan");
tw.WriteAttributeString("function","SoftwareDevelopment");
tw.WriteAttributeString("contacts","pasan_yasantha@yahoo.co.uk");
tw.WriteAttributeString("phone","0722 133 702");
tw.WriteEndElement();

tw.WriteEndElement(); //end resources

tw.WriteStartElement("allocations");

tw.WriteStartElement("allocation");
tw.WriteAttributeString("task-id","13");
tw.WriteAttributeString("resource-id","1");
tw.WriteAttributeString("load","100.0");
tw.WriteEndElement();

tw.WriteEndElement(); //end allocations

tw.WriteStartElement("vacations");
tw.WriteEndElement();

tw.WriteStartElement("taskdisplaycolumns");

tw.WriteStartElement("displaycolumn");
tw.WriteAttributeString("property-id","tpd3");
tw.WriteAttributeString("order","0");
tw.WriteAttributeString("width","75");
tw.WriteEndElement();

tw.WriteStartElement("displaycolumn");
tw.WriteAttributeString("property-id","tpd4");
tw.WriteAttributeString("order","1");
tw.WriteAttributeString("width","75");
tw.WriteEndElement();

tw.WriteStartElement("displaycolumn");
tw.WriteAttributeString("property-id","tpd5");
tw.WriteAttributeString("order","2");
tw.WriteAttributeString("width","75");
tw.WriteEndElement();

tw.WriteEndElement();

tw.WriteStartElement("previous");
tw.WriteEndElement();

tw.WriteStartElement("roles");
tw.WriteAttributeString("roleset-name","Default");
tw.WriteEndElement();

tw.WriteStartElement("roles");
tw.WriteAttributeString("roleset-name","SoftwareDevelopment");
tw.WriteEndElement();

tw.WriteStartElement("roles");
tw.WriteAttributeString("roleset-name","Operator");
tw.WriteEndElement();

tw.WriteEndElement(); //end project
tw.WriteEndDocument();

tw.Flush();
tw.Close();