public static String getFormattedNumber(String telephoneNumber, String email) {
		PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
		String defaultRegion = "ZZ";
		if (email != null) {
			defaultRegion = CountryUtil.getCountryCode(email);
		}
		try {
			PhoneNumber numberObj = phoneUtil.parse(telephoneNumber, defaultRegion);
			if (phoneUtil.isValidNumber(numberObj)) {
				return phoneUtil.format(numberObj, PhoneNumberFormat.INTERNATIONAL);
			}
		} catch (NumberParseException e) {
		}

		// if not valid, try some workarounds
		String result = null;
		if (!telephoneNumber.startsWith("+") && !telephoneNumber.startsWith("00")) {
			result = getFormattedNumber("+" + telephoneNumber, email);
		} else if (telephoneNumber.startsWith("00")) {
			result = getFormattedNumber("+" + telephoneNumber.substring(2), email);
		}

		if (result == null) {
			// try less strict validation
			try {
				PhoneNumber numberObj = phoneUtil.parse(telephoneNumber, defaultRegion);
				if (ValidationResult.IS_POSSIBLE == phoneUtil.isPossibleNumberWithReason(numberObj)) {
					return phoneUtil.format(numberObj, PhoneNumberFormat.INTERNATIONAL);
				}
			} catch (NumberParseException e) {
			}
		}

		return result;
	}