Masking email ids / phone no's in file along with obscene words

Hi,

I would like to know if there is a way to mask obscene words and other contents like email id's/phone numbers in the file. Below is the sample input /output.

Sample data :

cat smp.txt

The service is really bad . My email abc@gmail.com 
You can contact me at 4078909831

Output data

The service is really bad . My email ***@***.***
You can contact me at **********

Sometimes the phone numbers could be just be with a space also.

I can use a SED to mask a complete obscene word (like 'abc' with *** ) but i want to know if there is a better way for email and phone numbers.

One way to mask numbers is

tr [0-9] [**********] <filename

But this will mask all numbers irrespective of whether it is a phone number or not. Moreover with an unstructured text it may be hard to identify where phone numbers would appear.

Thanks for the response.

I can use translate but just want to know is there any better way to remove numbers alone along with email ids.