Published: Saturday, Aug 27, 2016 Last modified: Wednesday, Oct 2, 2024

Whilst “Dockerizing” a really simple PHP project to send feedback email, I had the unfortunate experience of tustling with the AWS PHP SDK in https://github.com/kaihendry/vanilla-php-feedback-form/blob/master/feedback/sesmail.php

Problem 1: Difficult to distinguish between SDK v2 and v3

The only way I’ve figured this out, is that examples with SesClient::factory are v2. Otherwise I would expect use Aws\Ses\SesClient; to perhaps indicate the version.

So this causes a lot of pain because I’m lazy and I’m looking for examples to get this working quickly. Unfortunately most of Google results are for v2 and don’t work!

Problem 2: The API is really hard to use

Ignoring the fact that the SDK weighs in at 8.2MB, I guess AWS must have some automatic mapping to PHP and it really makes it HORRIBLE to use.

So what most people use in some API on top of the SDK or some other cut down third party library. Both options are not great.

It almost brings me to years how we have come a simple 1 line invocation to the [mail()](composer require aws/aws-sdk-php) 40 lines of code of sesmail.php.

Sidenote: [[ssmtp|Mail_from_a_VPS]] is not an option since it’s sadly synchronous and slow.

Problem 3: The AWS PHP SDK documentation sucks

It’s not crystal clear what required and what’s optional in the AWS SDK documentation for sending an email. Where is a minimalistic example? Where is a slightly more realistic sample?

Problem 4:

With $result = $SesClient->sendEmail([ you inline an object. How do you choose not to have ReplyToAddresses because the SDK moans if it’s empty!

Conclusion

Nightmare.