When you run code like that in a loop, you overwrite the string each time you loop round. Either use the "+=" operator instead:
for (int j = 0; j <= dsTotalQuantity.Tables["TotalUnitsRequired"].Rows.Count; j++)
{
MaterialDescpt += ds.Tables["TotalUnitsRequired"].Rows[j]["MaterialDesc"].ToString();
TotalUnitsRequired += ds.Tables["TotalUnitsRequired"].Rows[j]["TotalUnitsRequired"].ToString();
}
Send_Mail(MaterialDescpt,TotalUnitsRequired);
Or better, use a StringBuilder:
StringBuilder sbMat = new StringBuilder();
StringBuildersbTot = new StringBuilder();
for (int j = 0; j <= dsTotalQuantity.Tables["TotalUnitsRequired"].Rows.Count; j++)
{
sbMat.Append(ds.Tables["TotalUnitsRequired"].Rows[j]["MaterialDesc"].ToString());
sbTot.Append(ds.Tables["TotalUnitsRequired"].Rows[j]["TotalUnitsRequired"].ToString());
}
Send_Mail(sbMat.ToString(),sbTot.ToString());
You may also want to add some separator characters in there...