how to mock non virtual methods
===

        [TestMethod]
        public void TestMethod1()
        {
            var mock = new Mock<EmailService>();
            mock.Setup(x => x.SendEmail()).Returns(true);
            var cus = new Customer();
            var result = cus.AddCustomer(mock.Object);
            Assert.IsTrue(result);
        }
        public class Customer
        {
            public bool AddCustomer(EmailService emailService)
            {
                emailService.SendEmail();
                Debug.WriteLine("new customer added");
                return true;
            }
        }
        public class EmailService
        {            
            public virtual bool SendEmail()
            {
                throw  new Exception("send email failed cuz bla bla bla");
            }
        }

the EmailService.SendEmail method must be virtual to mock it,<br/>
is there any way to mock non virtual methods