code: public com.squareup.okhttp.Call getCharactersCharacterIdMailMailIdAsync(Integer characterId, Integer mailId,
              String datasource, String ifNoneMatch, String token, final ApiCallback<MailResponse> callback)
              throws ApiException {
  
          com.squareup.okhttp.Call call = getCharactersCharacterIdMailMailIdValidateBeforeCall(characterId, mailId,
                  datasource, ifNoneMatch, token, callback);
          Type localVarReturnType = new TypeToken<MailResponse>() {
          }.getType();
          apiClient.executeAsync(call, localVarReturnType, callback);
          return call;
      }
docs: Return a mail (asynchronously) Return the contents of an EVE mail ---
  This route is cached for up to 30 seconds SSO Scope:
  esi-mail.read_mail.v1
  
  @param characterId
  An EVE character ID (required)
  @param mailId
  An EVE mail ID (required)
  @param datasource
  The server name you would like data from (optional, default to
  tranquility)
  @param ifNoneMatch
  ETag from a previous request. A 304 will be returned if this
  matches the current ETag (optional)
  @param token
  Access token to use if unable to set a header (optional)
  @param callback
  The callback to be executed when the API call finishes
  @return The request call
  @throws ApiException
  If fail to process the API call, e.g. serializing the request
  body object