/*
* Copyright 2010-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.amazonaws.services.simpleemail;
import org.w3c.dom.Node;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import com.amazonaws.*;
import com.amazonaws.auth.*;
import com.amazonaws.handlers.HandlerChainFactory;
import com.amazonaws.handlers.RequestHandler;
import com.amazonaws.http.StaxResponseHandler;
import com.amazonaws.http.DefaultErrorResponseHandler;
import com.amazonaws.http.ExecutionContext;
import com.amazonaws.internal.StaticCredentialsProvider;
import com.amazonaws.transform.Unmarshaller;
import com.amazonaws.transform.StaxUnmarshallerContext;
import com.amazonaws.transform.StandardErrorUnmarshaller;
import com.amazonaws.services.simpleemail.model.*;
import com.amazonaws.services.simpleemail.model.transform.*;
/**
* Client for accessing AmazonSimpleEmailService. All service calls made
* using this client are blocking, and will not return until the service call
* completes.
* <p>
* Amazon Simple Email Service <p>
* This is the API Reference for Amazon Simple Email Service (Amazon SES). This documentation is intended to be used in conjunction with the Amazon SES
* Getting Started Guide and the Amazon SES Developer Guide.
* </p>
* <p>
* For specific details on how to construct a service request, please consult the <a href="http://docs.amazonwebservices.com/ses/latest/DeveloperGuide">
* Amazon SES Developer Guide </a> .
* </p>
* <p>
* <b>NOTE:</b>The endpoint for Amazon SES is located at: https://email.us-east-1.amazonaws.com
* </p>
*/
public class AmazonSimpleEmailServiceClient extends AmazonWebServiceClient implements AmazonSimpleEmailService {
/** Provider for AWS credentials. */
private AWSCredentialsProvider awsCredentialsProvider;
/**
* List of exception unmarshallers for all AmazonSimpleEmailService exceptions.
*/
protected final List<Unmarshaller<AmazonServiceException, Node>> exceptionUnmarshallers
= new ArrayList<Unmarshaller<AmazonServiceException, Node>>();
/** AWS signer for authenticating requests. */
private AWS3Signer signer;
/**
* Constructs a new client to invoke service methods on
* AmazonSimpleEmailService. A credentials provider chain will be used
* that searches for credentials in this order:
* <ul>
* <li> Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY </li>
* <li> Java System Properties - aws.accessKeyId and aws.secretKey </li>
* <li> Instance profile credentials delivered through the Amazon EC2 metadata service </li>
* </ul>
*
* <p>
* All service calls made using this new client object are blocking, and will not
* return until the service call completes.
*
* @see DefaultAWSCredentialsProvider
*/
public AmazonSimpleEmailServiceClient() {
this(new DefaultAWSCredentialsProviderChain(), new ClientConfiguration());
}
/**
* Constructs a new client to invoke service methods on
* AmazonSimpleEmailService. A credentials provider chain will be used
* that searches for credentials in this order:
* <ul>
* <li> Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY </li>
* <li> Java System Properties - aws.accessKeyId and aws.secretKey </li>
* <li> Instance profile credentials delivered through the Amazon EC2 metadata service </li>
* </ul>
*
* <p>
* All service calls made using this new client object are blocking, and will not
* return until the service call completes.
*
* @param clientConfiguration The client configuration options controlling how this
* client connects to AmazonSimpleEmailService
* (ex: proxy settings, retry counts, etc.).
*
* @see DefaultAWSCredentialsProvider
*/
public AmazonSimpleEmailServiceClient(ClientConfiguration clientConfiguration) {
this(new DefaultAWSCredentialsProviderChain(), clientConfiguration);
}
/**
* Constructs a new client to invoke service methods on
* AmazonSimpleEmailService using the specified AWS account credentials.
*
* <p>
* All service calls made using this new client object are blocking, and will not
* return until the service call completes.
*
* @param awsCredentials The AWS credentials (access key ID and secret key) to use
* when authenticating with AWS services.
*/
public AmazonSimpleEmailServiceClient(AWSCredentials awsCredentials) {
this(awsCredentials, new ClientConfiguration());
}
/**
* Constructs a new client to invoke service methods on
* AmazonSimpleEmailService using the specified AWS account credentials
* and client configuration options.
*
* <p>
* All service calls made using this new client object are blocking, and will not
* return until the service call completes.
*
* @param awsCredentials The AWS credentials (access key ID and secret key) to use
* when authenticating with AWS services.
* @param clientConfiguration The client configuration options controlling how this
* client connects to AmazonSimpleEmailService
* (ex: proxy settings, retry counts, etc.).
*/
public AmazonSimpleEmailServiceClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration) {
super(clientConfiguration);
this.awsCredentialsProvider = new StaticCredentialsProvider(awsCredentials);
init();
}
/**
* Constructs a new client to invoke service methods on
* AmazonSimpleEmailService using the specified AWS account credentials provider.
*
* <p>
* All service calls made using this new client object are blocking, and will not
* return until the service call completes.
*
* @param awsCredentialsProvider
* The AWS credentials provider which will provide credentials
* to authenticate requests with AWS services.
*/
public AmazonSimpleEmailServiceClient(AWSCredentialsProvider awsCredentialsProvider) {
this(awsCredentialsProvider, new ClientConfiguration());
}
/**
* Constructs a new client to invoke service methods on
* AmazonSimpleEmailService using the specified AWS account credentials
* provider and client configuration options.
*
* <p>
* All service calls made using this new client object are blocking, and will not
* return until the service call completes.
*
* @param awsCredentialsProvider
* The AWS credentials provider which will provide credentials
* to authenticate requests with AWS services.
* @param clientConfiguration The client configuration options controlling how this
* client connects to AmazonSimpleEmailService
* (ex: proxy settings, retry counts, etc.).
*/
public AmazonSimpleEmailServiceClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) {
super(clientConfiguration);
this.awsCredentialsProvider = awsCredentialsProvider;
init();
}
private void init() {
exceptionUnmarshallers.add(new MessageRejectedExceptionUnmarshaller());
exceptionUnmarshallers.add(new StandardErrorUnmarshaller());
setEndpoint("email.us-east-1.amazonaws.com");
signer = new AWS3Signer();
HandlerChainFactory chainFactory = new HandlerChainFactory();
requestHandlers.addAll(chainFactory.newRequestHandlerChain(
"/com/amazonaws/services/simpleemail/request.handlers"));
}
/**
* <p>
* Deletes the specified identity (email address or domain) from the list
* of verified identities.
* </p>
*
* @param deleteIdentityRequest Container for the necessary parameters to
* execute the DeleteIdentity service method on AmazonSimpleEmailService.
*
* @return The response from the DeleteIdentity service method, as
* returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public DeleteIdentityResult deleteIdentity(DeleteIdentityRequest deleteIdentityRequest)
throws AmazonServiceException, AmazonClientException {
Request<DeleteIdentityRequest> request = new DeleteIdentityRequestMarshaller().marshall(deleteIdentityRequest);
return invoke(request, new DeleteIdentityResultStaxUnmarshaller());
}
/**
* <p>
* Returns a list containing all of the email addresses that have been
* verified.
* </p>
* <p>
* <b>IMPORTANT:</b>The ListVerifiedEmailAddresses action is deprecated
* as of the May 15, 2012 release of Domain Verification. The
* ListIdentities action is now preferred.
* </p>
*
* @param listVerifiedEmailAddressesRequest Container for the necessary
* parameters to execute the ListVerifiedEmailAddresses service method on
* AmazonSimpleEmailService.
*
* @return The response from the ListVerifiedEmailAddresses service
* method, as returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public ListVerifiedEmailAddressesResult listVerifiedEmailAddresses(ListVerifiedEmailAddressesRequest listVerifiedEmailAddressesRequest)
throws AmazonServiceException, AmazonClientException {
Request<ListVerifiedEmailAddressesRequest> request = new ListVerifiedEmailAddressesRequestMarshaller().marshall(listVerifiedEmailAddressesRequest);
return invoke(request, new ListVerifiedEmailAddressesResultStaxUnmarshaller());
}
/**
* <p>
* Returns the user's sending statistics. The result is a list of data
* points, representing the last two weeks of sending activity.
* </p>
* <p>
* Each data point in the list contains statistics for a 15-minute
* interval.
* </p>
*
* @param getSendStatisticsRequest Container for the necessary parameters
* to execute the GetSendStatistics service method on
* AmazonSimpleEmailService.
*
* @return The response from the GetSendStatistics service method, as
* returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public GetSendStatisticsResult getSendStatistics(GetSendStatisticsRequest getSendStatisticsRequest)
throws AmazonServiceException, AmazonClientException {
Request<GetSendStatisticsRequest> request = new GetSendStatisticsRequestMarshaller().marshall(getSendStatisticsRequest);
return invoke(request, new GetSendStatisticsResultStaxUnmarshaller());
}
/**
* <p>
* Verifies an email address. This action causes a confirmation email
* message to be sent to the specified address.
* </p>
*
* @param verifyEmailIdentityRequest Container for the necessary
* parameters to execute the VerifyEmailIdentity service method on
* AmazonSimpleEmailService.
*
* @return The response from the VerifyEmailIdentity service method, as
* returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public VerifyEmailIdentityResult verifyEmailIdentity(VerifyEmailIdentityRequest verifyEmailIdentityRequest)
throws AmazonServiceException, AmazonClientException {
Request<VerifyEmailIdentityRequest> request = new VerifyEmailIdentityRequestMarshaller().marshall(verifyEmailIdentityRequest);
return invoke(request, new VerifyEmailIdentityResultStaxUnmarshaller());
}
/**
* <p>
* Given a list of verified identities (email addresses and/or domains),
* returns a structure describing identity notification attributes. For
* more information about feedback notification, see the <a
* href="http://docs.amazonwebservices.com/ses/latest/DeveloperGuide">
* Amazon SES Developer Guide </a> .
* </p>
*
* @param getIdentityNotificationAttributesRequest Container for the
* necessary parameters to execute the GetIdentityNotificationAttributes
* service method on AmazonSimpleEmailService.
*
* @return The response from the GetIdentityNotificationAttributes
* service method, as returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public GetIdentityNotificationAttributesResult getIdentityNotificationAttributes(GetIdentityNotificationAttributesRequest getIdentityNotificationAttributesRequest)
throws AmazonServiceException, AmazonClientException {
Request<GetIdentityNotificationAttributesRequest> request = new GetIdentityNotificationAttributesRequestMarshaller().marshall(getIdentityNotificationAttributesRequest);
return invoke(request, new GetIdentityNotificationAttributesResultStaxUnmarshaller());
}
/**
* <p>
* Returns a set of DNS records, or <i>tokens</i> , that must be
* published in the domain name's DNS to complete the DKIM verification
* process. These tokens are DNS <code>CNAME</code> records that point to
* DKIM public keys hosted by Amazon SES. To complete the DKIM
* verification process, these tokens must be published in the domain's
* DNS. The tokens must remain published in order for Easy DKIM signing
* to function correctly.
* </p>
* <p>
* After the tokens are added to the domain's DNS, Amazon SES will be
* able to DKIM-sign email originating from that domain. To enable or
* disable Easy DKIM signing for a domain, use the
* <code>SetIdentityDkimEnabled</code> action.
* </p>
* <p>
* For more information about Easy DKIM, go to the <a
* href="http://docs.amazonwebservices.com/ses/latest/DeveloperGuide">
* Amazon SES Developer Guide </a> .
* </p>
*
* @param verifyDomainDkimRequest Container for the necessary parameters
* to execute the VerifyDomainDkim service method on
* AmazonSimpleEmailService.
*
* @return The response from the VerifyDomainDkim service method, as
* returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public VerifyDomainDkimResult verifyDomainDkim(VerifyDomainDkimRequest verifyDomainDkimRequest)
throws AmazonServiceException, AmazonClientException {
Request<VerifyDomainDkimRequest> request = new VerifyDomainDkimRequestMarshaller().marshall(verifyDomainDkimRequest);
return invoke(request, new VerifyDomainDkimResultStaxUnmarshaller());
}
/**
* <p>
* Returns the DNS records, or <i>tokens</i> , that must be present in
* order for Easy DKIM to sign outgoing email messages.
* </p>
* <p>
* This action takes a list of verified identities as input. It then
* returns the following information for each identity:
* </p>
*
* <ul>
* <li>Whether Easy DKIM signing is enabled or disabled.</li>
* <li>The set of tokens that are required for Easy DKIM signing. These
* tokens must be published in the domain name's DNS records in order for
* DKIM verification to complete, and must remain published in order for
* Easy DKIM signing to operate correctly. (This information is only
* returned for domain name identities, not for email addresses.)</li>
* <li>Whether Amazon SES has successfully verified the DKIM tokens
* published in the domain name's DNS. (This information is only returned
* for domain name identities, not for email addresses.)</li>
*
* </ul>
* <p>
* For more information about Easy DKIM signing, go to the <a
* href="http://docs.amazonwebservices.com/ses/latest/DeveloperGuide">
* Amazon SES Developer Guide </a> .
* </p>
*
* @param getIdentityDkimAttributesRequest Container for the necessary
* parameters to execute the GetIdentityDkimAttributes service method on
* AmazonSimpleEmailService.
*
* @return The response from the GetIdentityDkimAttributes service
* method, as returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public GetIdentityDkimAttributesResult getIdentityDkimAttributes(GetIdentityDkimAttributesRequest getIdentityDkimAttributesRequest)
throws AmazonServiceException, AmazonClientException {
Request<GetIdentityDkimAttributesRequest> request = new GetIdentityDkimAttributesRequestMarshaller().marshall(getIdentityDkimAttributesRequest);
return invoke(request, new GetIdentityDkimAttributesResultStaxUnmarshaller());
}
/**
* <p>
* Verifies an email address. This action causes a confirmation email
* message to be sent to the specified address.
* </p>
* <p>
* <b>IMPORTANT:</b>The VerifyEmailAddress action is deprecated as of the
* May 15, 2012 release of Domain Verification. The VerifyEmailIdentity
* action is now preferred.
* </p>
*
* @param verifyEmailAddressRequest Container for the necessary
* parameters to execute the VerifyEmailAddress service method on
* AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public void verifyEmailAddress(VerifyEmailAddressRequest verifyEmailAddressRequest)
throws AmazonServiceException, AmazonClientException {
Request<VerifyEmailAddressRequest> request = new VerifyEmailAddressRequestMarshaller().marshall(verifyEmailAddressRequest);
invoke(request, null);
}
/**
* <p>
* Sends an email message, with header and content specified by the
* client. The <code>SendRawEmail</code> action is useful for sending
* multipart MIME emails. The raw text of the message must comply with
* Internet email standards; otherwise, the message cannot be sent.
* </p>
* <p>
* <b>IMPORTANT:</b>If you have not yet requested production access to
* Amazon SES, then you will only be able to send email to and from
* verified email addresses and domains. For more information, go to the
* Amazon SES Developer Guide.
* </p>
* <p>
* The total size of the message cannot exceed 10 MB. This includes any
* attachments that are part of the message.
* </p>
* <p>
* Amazon SES has a limit on the total number of recipients per message:
* The combined number of To:, CC: and BCC: email addresses cannot exceed
* 50. If you need to send an email message to a larger audience, you can
* divide your recipient list into groups of 50 or fewer, and then call
* Amazon SES repeatedly to send the message to each group.
* </p>
* <p>
* For every message that you send, the total number of recipients (To:,
* CC: and BCC:) is counted against your <i>sending quota</i> - the
* maximum number of emails you can send in a 24-hour period. For
* information about your sending quota, go to the "Managing Your Sending
* Activity" section of the<a
* href="http://docs.amazonwebservices.com/ses/latest/DeveloperGuide">
* Amazon SES Developer Guide </a> .
* </p>
*
* @param sendRawEmailRequest Container for the necessary parameters to
* execute the SendRawEmail service method on AmazonSimpleEmailService.
*
* @return The response from the SendRawEmail service method, as returned
* by AmazonSimpleEmailService.
*
* @throws MessageRejectedException
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public SendRawEmailResult sendRawEmail(SendRawEmailRequest sendRawEmailRequest)
throws AmazonServiceException, AmazonClientException {
Request<SendRawEmailRequest> request = new SendRawEmailRequestMarshaller().marshall(sendRawEmailRequest);
return invoke(request, new SendRawEmailResultStaxUnmarshaller());
}
/**
* <p>
* Returns a list containing all of the identities (email addresses and
* domains) for a specific AWS Account, regardless of verification
* status.
* </p>
*
* @param listIdentitiesRequest Container for the necessary parameters to
* execute the ListIdentities service method on AmazonSimpleEmailService.
*
* @return The response from the ListIdentities service method, as
* returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public ListIdentitiesResult listIdentities(ListIdentitiesRequest listIdentitiesRequest)
throws AmazonServiceException, AmazonClientException {
Request<ListIdentitiesRequest> request = new ListIdentitiesRequestMarshaller().marshall(listIdentitiesRequest);
return invoke(request, new ListIdentitiesResultStaxUnmarshaller());
}
/**
* <p>
* Given a list of identities (email addresses and/or domains), returns
* the verification status and (for domain identities) the verification
* token for each identity.
* </p>
*
* @param getIdentityVerificationAttributesRequest Container for the
* necessary parameters to execute the GetIdentityVerificationAttributes
* service method on AmazonSimpleEmailService.
*
* @return The response from the GetIdentityVerificationAttributes
* service method, as returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public GetIdentityVerificationAttributesResult getIdentityVerificationAttributes(GetIdentityVerificationAttributesRequest getIdentityVerificationAttributesRequest)
throws AmazonServiceException, AmazonClientException {
Request<GetIdentityVerificationAttributesRequest> request = new GetIdentityVerificationAttributesRequestMarshaller().marshall(getIdentityVerificationAttributesRequest);
return invoke(request, new GetIdentityVerificationAttributesResultStaxUnmarshaller());
}
/**
* <p>
* Enables or disables Easy DKIM signing of email sent from an identity:
* </p>
*
* <ul>
* <li>If Easy DKIM signing is enabled for a domain name identity (e.g.,
* <code>example.com</code> ), then Amazon SES will DKIM-sign all email
* sent by addresses under that domain name (e.g.,
* <code>user@example.com</code> ).</li>
* <li>If Easy DKIM signing is enabled for an email address, then Amazon
* SES will DKIM-sign all email sent by that email address.</li>
*
* </ul>
* <p>
* For email addresses (e.g., <code>user@example.com</code> ), you can
* only enable Easy DKIM signing if the corresponding domain (e.g.,
* <code>example.com</code> ) has been set up for Easy DKIM using the AWS
* Console or the <code>VerifyDomainDkim</code> action.
* </p>
* <p>
* For more information about Easy DKIM signing, go to the <a
* href="http://docs.amazonwebservices.com/ses/latest/DeveloperGuide">
* Amazon SES Developer Guide </a> .
* </p>
*
* @param setIdentityDkimEnabledRequest Container for the necessary
* parameters to execute the SetIdentityDkimEnabled service method on
* AmazonSimpleEmailService.
*
* @return The response from the SetIdentityDkimEnabled service method,
* as returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public SetIdentityDkimEnabledResult setIdentityDkimEnabled(SetIdentityDkimEnabledRequest setIdentityDkimEnabledRequest)
throws AmazonServiceException, AmazonClientException {
Request<SetIdentityDkimEnabledRequest> request = new SetIdentityDkimEnabledRequestMarshaller().marshall(setIdentityDkimEnabledRequest);
return invoke(request, new SetIdentityDkimEnabledResultStaxUnmarshaller());
}
/**
* <p>
* Returns the user's current sending limits.
* </p>
*
* @param getSendQuotaRequest Container for the necessary parameters to
* execute the GetSendQuota service method on AmazonSimpleEmailService.
*
* @return The response from the GetSendQuota service method, as returned
* by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public GetSendQuotaResult getSendQuota(GetSendQuotaRequest getSendQuotaRequest)
throws AmazonServiceException, AmazonClientException {
Request<GetSendQuotaRequest> request = new GetSendQuotaRequestMarshaller().marshall(getSendQuotaRequest);
return invoke(request, new GetSendQuotaResultStaxUnmarshaller());
}
/**
* <p>
* Given an identity (email address or domain), enables or disables
* whether Amazon SES forwards feedback notifications as email. Feedback
* forwarding may only be disabled when both complaint and bounce topics
* are set. For more information about feedback notification, see the <a
* href="http://docs.amazonwebservices.com/ses/latest/DeveloperGuide">
* Amazon SES Developer Guide </a> .
* </p>
*
* @param setIdentityFeedbackForwardingEnabledRequest Container for the
* necessary parameters to execute the
* SetIdentityFeedbackForwardingEnabled service method on
* AmazonSimpleEmailService.
*
* @return The response from the SetIdentityFeedbackForwardingEnabled
* service method, as returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public SetIdentityFeedbackForwardingEnabledResult setIdentityFeedbackForwardingEnabled(SetIdentityFeedbackForwardingEnabledRequest setIdentityFeedbackForwardingEnabledRequest)
throws AmazonServiceException, AmazonClientException {
Request<SetIdentityFeedbackForwardingEnabledRequest> request = new SetIdentityFeedbackForwardingEnabledRequestMarshaller().marshall(setIdentityFeedbackForwardingEnabledRequest);
return invoke(request, new SetIdentityFeedbackForwardingEnabledResultStaxUnmarshaller());
}
/**
* <p>
* Verifies a domain.
* </p>
*
* @param verifyDomainIdentityRequest Container for the necessary
* parameters to execute the VerifyDomainIdentity service method on
* AmazonSimpleEmailService.
*
* @return The response from the VerifyDomainIdentity service method, as
* returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public VerifyDomainIdentityResult verifyDomainIdentity(VerifyDomainIdentityRequest verifyDomainIdentityRequest)
throws AmazonServiceException, AmazonClientException {
Request<VerifyDomainIdentityRequest> request = new VerifyDomainIdentityRequestMarshaller().marshall(verifyDomainIdentityRequest);
return invoke(request, new VerifyDomainIdentityResultStaxUnmarshaller());
}
/**
* <p>
* Composes an email message based on input data, and then immediately
* queues the message for sending.
* </p>
* <p>
* <b>IMPORTANT:</b>If you have not yet requested production access to
* Amazon SES, then you will only be able to send email to and from
* verified email addresses and domains. For more information, go to the
* Amazon SES Developer Guide.
* </p>
* <p>
* The total size of the message cannot exceed 10 MB.
* </p>
* <p>
* Amazon SES has a limit on the total number of recipients per message:
* The combined number of To:, CC: and BCC: email addresses cannot exceed
* 50. If you need to send an email message to a larger audience, you can
* divide your recipient list into groups of 50 or fewer, and then call
* Amazon SES repeatedly to send the message to each group.
* </p>
* <p>
* For every message that you send, the total number of recipients (To:,
* CC: and BCC:) is counted against your <i>sending quota</i> - the
* maximum number of emails you can send in a 24-hour period. For
* information about your sending quota, go to the "Managing Your Sending
* Activity" section of the<a
* href="http://docs.amazonwebservices.com/ses/latest/DeveloperGuide">
* Amazon SES Developer Guide </a> .
* </p>
*
* @param sendEmailRequest Container for the necessary parameters to
* execute the SendEmail service method on AmazonSimpleEmailService.
*
* @return The response from the SendEmail service method, as returned by
* AmazonSimpleEmailService.
*
* @throws MessageRejectedException
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public SendEmailResult sendEmail(SendEmailRequest sendEmailRequest)
throws AmazonServiceException, AmazonClientException {
Request<SendEmailRequest> request = new SendEmailRequestMarshaller().marshall(sendEmailRequest);
return invoke(request, new SendEmailResultStaxUnmarshaller());
}
/**
* <p>
* Deletes the specified email address from the list of verified
* addresses.
* </p>
* <p>
* <b>IMPORTANT:</b>The DeleteVerifiedEmailAddress action is deprecated
* as of the May 15, 2012 release of Domain Verification. The
* DeleteIdentity action is now preferred.
* </p>
*
* @param deleteVerifiedEmailAddressRequest Container for the necessary
* parameters to execute the DeleteVerifiedEmailAddress service method on
* AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public void deleteVerifiedEmailAddress(DeleteVerifiedEmailAddressRequest deleteVerifiedEmailAddressRequest)
throws AmazonServiceException, AmazonClientException {
Request<DeleteVerifiedEmailAddressRequest> request = new DeleteVerifiedEmailAddressRequestMarshaller().marshall(deleteVerifiedEmailAddressRequest);
invoke(request, null);
}
/**
* <p>
* Given an identity (email address or domain), sets the Amazon SNS topic
* to which Amazon SES will publish bounce and complaint notifications
* for emails sent with that identity as the <code>Source</code> .
* Publishing to topics may only be disabled when feedback
* forwarding is enabled. For more information about feedback
* notification, see the <a
* href="http://docs.amazonwebservices.com/ses/latest/DeveloperGuide">
* Amazon SES Developer Guide </a> .
* </p>
*
* @param setIdentityNotificationTopicRequest Container for the necessary
* parameters to execute the SetIdentityNotificationTopic service method
* on AmazonSimpleEmailService.
*
* @return The response from the SetIdentityNotificationTopic service
* method, as returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public SetIdentityNotificationTopicResult setIdentityNotificationTopic(SetIdentityNotificationTopicRequest setIdentityNotificationTopicRequest)
throws AmazonServiceException, AmazonClientException {
Request<SetIdentityNotificationTopicRequest> request = new SetIdentityNotificationTopicRequestMarshaller().marshall(setIdentityNotificationTopicRequest);
return invoke(request, new SetIdentityNotificationTopicResultStaxUnmarshaller());
}
/**
* <p>
* Returns a list containing all of the email addresses that have been
* verified.
* </p>
* <p>
* <b>IMPORTANT:</b>The ListVerifiedEmailAddresses action is deprecated
* as of the May 15, 2012 release of Domain Verification. The
* ListIdentities action is now preferred.
* </p>
*
* @return The response from the ListVerifiedEmailAddresses service
* method, as returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public ListVerifiedEmailAddressesResult listVerifiedEmailAddresses() throws AmazonServiceException, AmazonClientException {
return listVerifiedEmailAddresses(new ListVerifiedEmailAddressesRequest());
}
/**
* <p>
* Returns the user's sending statistics. The result is a list of data
* points, representing the last two weeks of sending activity.
* </p>
* <p>
* Each data point in the list contains statistics for a 15-minute
* interval.
* </p>
*
* @return The response from the GetSendStatistics service method, as
* returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public GetSendStatisticsResult getSendStatistics() throws AmazonServiceException, AmazonClientException {
return getSendStatistics(new GetSendStatisticsRequest());
}
/**
* <p>
* Returns a list containing all of the identities (email addresses and
* domains) for a specific AWS Account, regardless of verification
* status.
* </p>
*
* @return The response from the ListIdentities service method, as
* returned by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public ListIdentitiesResult listIdentities() throws AmazonServiceException, AmazonClientException {
return listIdentities(new ListIdentitiesRequest());
}
/**
* <p>
* Returns the user's current sending limits.
* </p>
*
* @return The response from the GetSendQuota service method, as returned
* by AmazonSimpleEmailService.
*
*
* @throws AmazonClientException
* If any internal errors are encountered inside the client while
* attempting to make the request or handle the response. For example
* if a network connection is not available.
* @throws AmazonServiceException
* If an error response is returned by AmazonSimpleEmailService indicating
* either a problem with the data in the request, or a server side issue.
*/
public GetSendQuotaResult getSendQuota() throws AmazonServiceException, AmazonClientException {
return getSendQuota(new GetSendQuotaRequest());
}
/**
* Returns additional metadata for a previously executed successful, request, typically used for
* debugging issues where a service isn't acting as expected. This data isn't considered part
* of the result data returned by an operation, so it's available through this separate,
* diagnostic interface.
* <p>
* Response metadata is only cached for a limited period of time, so if you need to access
* this extra diagnostic information for an executed request, you should use this method
* to retrieve it as soon as possible after executing the request.
*
* @param request
* The originally executed request
*
* @return The response metadata for the specified request, or null if none
* is available.
*/
public ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request) {
return client.getResponseMetadataForRequest(request);
}
private <X, Y extends AmazonWebServiceRequest> X invoke(Request<Y> request, Unmarshaller<X, StaxUnmarshallerContext> unmarshaller) {
request.setEndpoint(endpoint);
for (Entry<String, String> entry : request.getOriginalRequest().copyPrivateRequestParameters().entrySet()) {
request.addParameter(entry.getKey(), entry.getValue());
}
AWSCredentials credentials = awsCredentialsProvider.getCredentials();
AmazonWebServiceRequest originalRequest = request.getOriginalRequest();
if (originalRequest != null && originalRequest.getRequestCredentials() != null) {
credentials = originalRequest.getRequestCredentials();
}
ExecutionContext executionContext = createExecutionContext();
executionContext.setSigner(signer);
executionContext.setCredentials(credentials);
StaxResponseHandler<X> responseHandler = new StaxResponseHandler<X>(unmarshaller);
DefaultErrorResponseHandler errorResponseHandler = new DefaultErrorResponseHandler(exceptionUnmarshallers);
return (X)client.execute(request, responseHandler, errorResponseHandler, executionContext);
}
}