public abstract class EmailType : Enumeration<EmailType, int>
{
    public static readonly EmailType AnythingElse = new AnythingElseType();
    public static readonly EmailType SpecialEmail = new SpecialEmailType();

    protected EmailType(int value, string displayName) : base(value, displayName)
    {
    }

    protected static string SendGridSmtp
    {
        get { return "smtp.sendgrid.net"; }
    }

    protected static int SendGridPort
    {
        get { return 587; }
    }

    public abstract SmtpSettings GetSmtpSettings();

    private class AnythingElseType : EmailType
    {
        public AnythingElseType() : base(0, "AnythingElse")
        {
        }

        public override SmtpSettings GetSmtpSettings()
        {
            return new SmtpSettings
                {
                    Port = SendGridPort,
                    Server = SendGridSmtp,
                    UseSsl = true,
                    Username = "some@user.com",
                    Password = "somePassword"
                };
        }
    }

    private class SpecialEmailType : EmailType
    {
        public SpecialEmailType() : base(1, "SpecialEmail")
        {
        }

        public override SmtpSettings GetSmtpSettings()
        {
            return new SmtpSettings
                {
                    Port = SendGridPort,
                    Server = SendGridSmtp,
                    UseSsl = true,
                    Username = "another@user.com",
                    Password = "anotherPassword"
                };
        }
    }
}