Looks like you are trying to use a MailMessage object, but forgot to create one in your code where you reference $msg.body. In order to send an attachment through the smtpClient you need to use a System.Net.Mail.MailMessage object. It often helps to read the MSDN document, look at the C# or VB.NET code samples and translate them to Powershell.
http://msdn.microsoft.com/en-us/lib...ssage.aspxHere's what I came up with by doing just that. The code hasn't been tested...
$from = new-object System.Net.Mail.MailAddress 'JERPCOKER@RIL.COM'
$to = new-object System.Net.Mail.MailAddress 'ananda.murugesan@ril.com'
$msg New-Object System.Net.Mail.MailMessage ($from,$to)
$subject="Microsoft SQL Service & SQL Agent Service is down on " + $server
$msg.Subject = $subject
$attachment = New-Object System.Net.Mail.Attachment "D:\services\BodyMsg.txt"
$msg.Attachments.Add($attachment)
$smtp = new-object Net.Mail.SmtpClient("10.4.54.22")
$smtp.Send($msg