SesClient.php
235 lines
| 1 | <?php |
| 2 | namespace Aws\Ses; |
| 3 | |
| 4 | use Aws\Api\ApiProvider; |
| 5 | use Aws\Api\DocModel; |
| 6 | use Aws\Api\Service; |
| 7 | use Aws\Credentials\CredentialsInterface; |
| 8 | |
| 9 | /** |
| 10 | * This client is used to interact with the **Amazon Simple Email Service (Amazon SES)**. |
| 11 | * |
| 12 | * @method \Aws\Result cloneReceiptRuleSet(array $args = []) |
| 13 | * @method \GuzzleHttp\Promise\Promise cloneReceiptRuleSetAsync(array $args = []) |
| 14 | * @method \Aws\Result createConfigurationSet(array $args = []) |
| 15 | * @method \GuzzleHttp\Promise\Promise createConfigurationSetAsync(array $args = []) |
| 16 | * @method \Aws\Result createConfigurationSetEventDestination(array $args = []) |
| 17 | * @method \GuzzleHttp\Promise\Promise createConfigurationSetEventDestinationAsync(array $args = []) |
| 18 | * @method \Aws\Result createConfigurationSetTrackingOptions(array $args = []) |
| 19 | * @method \GuzzleHttp\Promise\Promise createConfigurationSetTrackingOptionsAsync(array $args = []) |
| 20 | * @method \Aws\Result createCustomVerificationEmailTemplate(array $args = []) |
| 21 | * @method \GuzzleHttp\Promise\Promise createCustomVerificationEmailTemplateAsync(array $args = []) |
| 22 | * @method \Aws\Result createReceiptFilter(array $args = []) |
| 23 | * @method \GuzzleHttp\Promise\Promise createReceiptFilterAsync(array $args = []) |
| 24 | * @method \Aws\Result createReceiptRule(array $args = []) |
| 25 | * @method \GuzzleHttp\Promise\Promise createReceiptRuleAsync(array $args = []) |
| 26 | * @method \Aws\Result createReceiptRuleSet(array $args = []) |
| 27 | * @method \GuzzleHttp\Promise\Promise createReceiptRuleSetAsync(array $args = []) |
| 28 | * @method \Aws\Result createTemplate(array $args = []) |
| 29 | * @method \GuzzleHttp\Promise\Promise createTemplateAsync(array $args = []) |
| 30 | * @method \Aws\Result deleteConfigurationSet(array $args = []) |
| 31 | * @method \GuzzleHttp\Promise\Promise deleteConfigurationSetAsync(array $args = []) |
| 32 | * @method \Aws\Result deleteConfigurationSetEventDestination(array $args = []) |
| 33 | * @method \GuzzleHttp\Promise\Promise deleteConfigurationSetEventDestinationAsync(array $args = []) |
| 34 | * @method \Aws\Result deleteConfigurationSetTrackingOptions(array $args = []) |
| 35 | * @method \GuzzleHttp\Promise\Promise deleteConfigurationSetTrackingOptionsAsync(array $args = []) |
| 36 | * @method \Aws\Result deleteCustomVerificationEmailTemplate(array $args = []) |
| 37 | * @method \GuzzleHttp\Promise\Promise deleteCustomVerificationEmailTemplateAsync(array $args = []) |
| 38 | * @method \Aws\Result deleteIdentity(array $args = []) |
| 39 | * @method \GuzzleHttp\Promise\Promise deleteIdentityAsync(array $args = []) |
| 40 | * @method \Aws\Result deleteIdentityPolicy(array $args = []) |
| 41 | * @method \GuzzleHttp\Promise\Promise deleteIdentityPolicyAsync(array $args = []) |
| 42 | * @method \Aws\Result deleteReceiptFilter(array $args = []) |
| 43 | * @method \GuzzleHttp\Promise\Promise deleteReceiptFilterAsync(array $args = []) |
| 44 | * @method \Aws\Result deleteReceiptRule(array $args = []) |
| 45 | * @method \GuzzleHttp\Promise\Promise deleteReceiptRuleAsync(array $args = []) |
| 46 | * @method \Aws\Result deleteReceiptRuleSet(array $args = []) |
| 47 | * @method \GuzzleHttp\Promise\Promise deleteReceiptRuleSetAsync(array $args = []) |
| 48 | * @method \Aws\Result deleteTemplate(array $args = []) |
| 49 | * @method \GuzzleHttp\Promise\Promise deleteTemplateAsync(array $args = []) |
| 50 | * @method \Aws\Result deleteVerifiedEmailAddress(array $args = []) |
| 51 | * @method \GuzzleHttp\Promise\Promise deleteVerifiedEmailAddressAsync(array $args = []) |
| 52 | * @method \Aws\Result describeActiveReceiptRuleSet(array $args = []) |
| 53 | * @method \GuzzleHttp\Promise\Promise describeActiveReceiptRuleSetAsync(array $args = []) |
| 54 | * @method \Aws\Result describeConfigurationSet(array $args = []) |
| 55 | * @method \GuzzleHttp\Promise\Promise describeConfigurationSetAsync(array $args = []) |
| 56 | * @method \Aws\Result describeReceiptRule(array $args = []) |
| 57 | * @method \GuzzleHttp\Promise\Promise describeReceiptRuleAsync(array $args = []) |
| 58 | * @method \Aws\Result describeReceiptRuleSet(array $args = []) |
| 59 | * @method \GuzzleHttp\Promise\Promise describeReceiptRuleSetAsync(array $args = []) |
| 60 | * @method \Aws\Result getAccountSendingEnabled(array $args = []) |
| 61 | * @method \GuzzleHttp\Promise\Promise getAccountSendingEnabledAsync(array $args = []) |
| 62 | * @method \Aws\Result getCustomVerificationEmailTemplate(array $args = []) |
| 63 | * @method \GuzzleHttp\Promise\Promise getCustomVerificationEmailTemplateAsync(array $args = []) |
| 64 | * @method \Aws\Result getIdentityDkimAttributes(array $args = []) |
| 65 | * @method \GuzzleHttp\Promise\Promise getIdentityDkimAttributesAsync(array $args = []) |
| 66 | * @method \Aws\Result getIdentityMailFromDomainAttributes(array $args = []) |
| 67 | * @method \GuzzleHttp\Promise\Promise getIdentityMailFromDomainAttributesAsync(array $args = []) |
| 68 | * @method \Aws\Result getIdentityNotificationAttributes(array $args = []) |
| 69 | * @method \GuzzleHttp\Promise\Promise getIdentityNotificationAttributesAsync(array $args = []) |
| 70 | * @method \Aws\Result getIdentityPolicies(array $args = []) |
| 71 | * @method \GuzzleHttp\Promise\Promise getIdentityPoliciesAsync(array $args = []) |
| 72 | * @method \Aws\Result getIdentityVerificationAttributes(array $args = []) |
| 73 | * @method \GuzzleHttp\Promise\Promise getIdentityVerificationAttributesAsync(array $args = []) |
| 74 | * @method \Aws\Result getSendQuota(array $args = []) |
| 75 | * @method \GuzzleHttp\Promise\Promise getSendQuotaAsync(array $args = []) |
| 76 | * @method \Aws\Result getSendStatistics(array $args = []) |
| 77 | * @method \GuzzleHttp\Promise\Promise getSendStatisticsAsync(array $args = []) |
| 78 | * @method \Aws\Result getTemplate(array $args = []) |
| 79 | * @method \GuzzleHttp\Promise\Promise getTemplateAsync(array $args = []) |
| 80 | * @method \Aws\Result listConfigurationSets(array $args = []) |
| 81 | * @method \GuzzleHttp\Promise\Promise listConfigurationSetsAsync(array $args = []) |
| 82 | * @method \Aws\Result listCustomVerificationEmailTemplates(array $args = []) |
| 83 | * @method \GuzzleHttp\Promise\Promise listCustomVerificationEmailTemplatesAsync(array $args = []) |
| 84 | * @method \Aws\Result listIdentities(array $args = []) |
| 85 | * @method \GuzzleHttp\Promise\Promise listIdentitiesAsync(array $args = []) |
| 86 | * @method \Aws\Result listIdentityPolicies(array $args = []) |
| 87 | * @method \GuzzleHttp\Promise\Promise listIdentityPoliciesAsync(array $args = []) |
| 88 | * @method \Aws\Result listReceiptFilters(array $args = []) |
| 89 | * @method \GuzzleHttp\Promise\Promise listReceiptFiltersAsync(array $args = []) |
| 90 | * @method \Aws\Result listReceiptRuleSets(array $args = []) |
| 91 | * @method \GuzzleHttp\Promise\Promise listReceiptRuleSetsAsync(array $args = []) |
| 92 | * @method \Aws\Result listTemplates(array $args = []) |
| 93 | * @method \GuzzleHttp\Promise\Promise listTemplatesAsync(array $args = []) |
| 94 | * @method \Aws\Result listVerifiedEmailAddresses(array $args = []) |
| 95 | * @method \GuzzleHttp\Promise\Promise listVerifiedEmailAddressesAsync(array $args = []) |
| 96 | * @method \Aws\Result putConfigurationSetDeliveryOptions(array $args = []) |
| 97 | * @method \GuzzleHttp\Promise\Promise putConfigurationSetDeliveryOptionsAsync(array $args = []) |
| 98 | * @method \Aws\Result putIdentityPolicy(array $args = []) |
| 99 | * @method \GuzzleHttp\Promise\Promise putIdentityPolicyAsync(array $args = []) |
| 100 | * @method \Aws\Result reorderReceiptRuleSet(array $args = []) |
| 101 | * @method \GuzzleHttp\Promise\Promise reorderReceiptRuleSetAsync(array $args = []) |
| 102 | * @method \Aws\Result sendBounce(array $args = []) |
| 103 | * @method \GuzzleHttp\Promise\Promise sendBounceAsync(array $args = []) |
| 104 | * @method \Aws\Result sendBulkTemplatedEmail(array $args = []) |
| 105 | * @method \GuzzleHttp\Promise\Promise sendBulkTemplatedEmailAsync(array $args = []) |
| 106 | * @method \Aws\Result sendCustomVerificationEmail(array $args = []) |
| 107 | * @method \GuzzleHttp\Promise\Promise sendCustomVerificationEmailAsync(array $args = []) |
| 108 | * @method \Aws\Result sendEmail(array $args = []) |
| 109 | * @method \GuzzleHttp\Promise\Promise sendEmailAsync(array $args = []) |
| 110 | * @method \Aws\Result sendRawEmail(array $args = []) |
| 111 | * @method \GuzzleHttp\Promise\Promise sendRawEmailAsync(array $args = []) |
| 112 | * @method \Aws\Result sendTemplatedEmail(array $args = []) |
| 113 | * @method \GuzzleHttp\Promise\Promise sendTemplatedEmailAsync(array $args = []) |
| 114 | * @method \Aws\Result setActiveReceiptRuleSet(array $args = []) |
| 115 | * @method \GuzzleHttp\Promise\Promise setActiveReceiptRuleSetAsync(array $args = []) |
| 116 | * @method \Aws\Result setIdentityDkimEnabled(array $args = []) |
| 117 | * @method \GuzzleHttp\Promise\Promise setIdentityDkimEnabledAsync(array $args = []) |
| 118 | * @method \Aws\Result setIdentityFeedbackForwardingEnabled(array $args = []) |
| 119 | * @method \GuzzleHttp\Promise\Promise setIdentityFeedbackForwardingEnabledAsync(array $args = []) |
| 120 | * @method \Aws\Result setIdentityHeadersInNotificationsEnabled(array $args = []) |
| 121 | * @method \GuzzleHttp\Promise\Promise setIdentityHeadersInNotificationsEnabledAsync(array $args = []) |
| 122 | * @method \Aws\Result setIdentityMailFromDomain(array $args = []) |
| 123 | * @method \GuzzleHttp\Promise\Promise setIdentityMailFromDomainAsync(array $args = []) |
| 124 | * @method \Aws\Result setIdentityNotificationTopic(array $args = []) |
| 125 | * @method \GuzzleHttp\Promise\Promise setIdentityNotificationTopicAsync(array $args = []) |
| 126 | * @method \Aws\Result setReceiptRulePosition(array $args = []) |
| 127 | * @method \GuzzleHttp\Promise\Promise setReceiptRulePositionAsync(array $args = []) |
| 128 | * @method \Aws\Result testRenderTemplate(array $args = []) |
| 129 | * @method \GuzzleHttp\Promise\Promise testRenderTemplateAsync(array $args = []) |
| 130 | * @method \Aws\Result updateAccountSendingEnabled(array $args = []) |
| 131 | * @method \GuzzleHttp\Promise\Promise updateAccountSendingEnabledAsync(array $args = []) |
| 132 | * @method \Aws\Result updateConfigurationSetEventDestination(array $args = []) |
| 133 | * @method \GuzzleHttp\Promise\Promise updateConfigurationSetEventDestinationAsync(array $args = []) |
| 134 | * @method \Aws\Result updateConfigurationSetReputationMetricsEnabled(array $args = []) |
| 135 | * @method \GuzzleHttp\Promise\Promise updateConfigurationSetReputationMetricsEnabledAsync(array $args = []) |
| 136 | * @method \Aws\Result updateConfigurationSetSendingEnabled(array $args = []) |
| 137 | * @method \GuzzleHttp\Promise\Promise updateConfigurationSetSendingEnabledAsync(array $args = []) |
| 138 | * @method \Aws\Result updateConfigurationSetTrackingOptions(array $args = []) |
| 139 | * @method \GuzzleHttp\Promise\Promise updateConfigurationSetTrackingOptionsAsync(array $args = []) |
| 140 | * @method \Aws\Result updateCustomVerificationEmailTemplate(array $args = []) |
| 141 | * @method \GuzzleHttp\Promise\Promise updateCustomVerificationEmailTemplateAsync(array $args = []) |
| 142 | * @method \Aws\Result updateReceiptRule(array $args = []) |
| 143 | * @method \GuzzleHttp\Promise\Promise updateReceiptRuleAsync(array $args = []) |
| 144 | * @method \Aws\Result updateTemplate(array $args = []) |
| 145 | * @method \GuzzleHttp\Promise\Promise updateTemplateAsync(array $args = []) |
| 146 | * @method \Aws\Result verifyDomainDkim(array $args = []) |
| 147 | * @method \GuzzleHttp\Promise\Promise verifyDomainDkimAsync(array $args = []) |
| 148 | * @method \Aws\Result verifyDomainIdentity(array $args = []) |
| 149 | * @method \GuzzleHttp\Promise\Promise verifyDomainIdentityAsync(array $args = []) |
| 150 | * @method \Aws\Result verifyEmailAddress(array $args = []) |
| 151 | * @method \GuzzleHttp\Promise\Promise verifyEmailAddressAsync(array $args = []) |
| 152 | * @method \Aws\Result verifyEmailIdentity(array $args = []) |
| 153 | * @method \GuzzleHttp\Promise\Promise verifyEmailIdentityAsync(array $args = []) |
| 154 | */ |
| 155 | class SesClient extends \Aws\AwsClient |
| 156 | { |
| 157 | /** |
| 158 | * @deprecated This method will no longer work due to the deprecation of |
| 159 | * V2 credentials with SES as of 03/25/2021 |
| 160 | * Create an SMTP password for a given IAM user's credentials. |
| 161 | * |
| 162 | * The SMTP username is the Access Key ID for the provided credentials. |
| 163 | * |
| 164 | * @link http://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html#smtp-credentials-convert |
| 165 | * |
| 166 | * @param CredentialsInterface $creds |
| 167 | * |
| 168 | * @return string |
| 169 | */ |
| 170 | public static function generateSmtpPassword(CredentialsInterface $creds) |
| 171 | { |
| 172 | static $version = "\x02"; |
| 173 | static $algo = 'sha256'; |
| 174 | static $message = 'SendRawEmail'; |
| 175 | $signature = hash_hmac($algo, $message, $creds->getSecretKey(), true); |
| 176 | |
| 177 | return base64_encode($version . $signature); |
| 178 | } |
| 179 | |
| 180 | /** |
| 181 | * Create an SMTP password for a given IAM user's credentials. |
| 182 | * |
| 183 | * The SMTP username is the Access Key ID for the provided credentials. This |
| 184 | * utility method is not guaranteed to work indefinitely and is provided as |
| 185 | * a convenience to customers using the generateSmtpPassword method. It is |
| 186 | * not recommended for use in production |
| 187 | * |
| 188 | * @link https://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html#smtp-credentials-convert |
| 189 | * |
| 190 | * @param CredentialsInterface $creds |
| 191 | * @param string $region |
| 192 | * |
| 193 | * @return string |
| 194 | */ |
| 195 | public static function generateSmtpPasswordV4(CredentialsInterface $creds, $region) |
| 196 | { |
| 197 | $key = $creds->getSecretKey(); |
| 198 | |
| 199 | $date = "11111111"; |
| 200 | $service = "ses"; |
| 201 | $terminal = "aws4_request"; |
| 202 | $message = "SendRawEmail"; |
| 203 | $version = 0x04; |
| 204 | |
| 205 | $signature = self::sign($date, "AWS4" . $key); |
| 206 | $signature = self::sign($region, $signature); |
| 207 | $signature = self::sign($service, $signature); |
| 208 | $signature = self::sign($terminal, $signature); |
| 209 | $signature = self::sign($message, $signature); |
| 210 | $signatureAndVersion = pack('c', $version) . $signature; |
| 211 | |
| 212 | return base64_encode($signatureAndVersion); |
| 213 | } |
| 214 | |
| 215 | private static function sign($key, $message) { |
| 216 | return hash_hmac('sha256', $key, $message, true); |
| 217 | } |
| 218 | |
| 219 | /** |
| 220 | * @internal |
| 221 | * @codeCoverageIgnore |
| 222 | */ |
| 223 | public static function applyDocFilters(array $api, array $docs) |
| 224 | { |
| 225 | $b64 = '<div class="alert alert-info">This value will be base64 encoded on your behalf.</div>'; |
| 226 | |
| 227 | $docs['shapes']['RawMessage']['append'] = $b64; |
| 228 | |
| 229 | return [ |
| 230 | new Service($api, ApiProvider::defaultProvider()), |
| 231 | new DocModel($docs) |
| 232 | ]; |
| 233 | } |
| 234 | } |
| 235 |