Gemäß der SES API Reference für SendRawEmail sind die einzigen Parameter, die Sie als Teil der Anfrage angeben, eine Liste der Empfänger, des E-Mail-Nachrichtentexts und Ihrer Quelladresse. Leider scheint es sehr klar, dass, wenn Sie eine Zeitüberschreitung statt einer Antwort von SES erhalten, gibt es keine Möglichkeit zu wissen, ob diese bestimmte E-Mail gesendet wurde. Ich weiß, das ist sehr ärgerlich. Ich hasse es, wenn ich in dieser Situation bin.
Sie tun, haben jedoch einige Optionen, wenn es darum geht, die praktischste Lösung für dieses Dilemma herauszufinden. Sie könnten eine pauschale Entscheidung treffen, niemals zu wiederholen, und davon ausgehen, dass eine nicht gesendete Nachricht besser ist als eine doppelte Nachricht. Sie könnten auch eine generelle Entscheidung treffen, dass doppelte E-Mails absolut akzeptabel sind. Mein bevorzugter und empfohlener Ansatz ist jedoch der weniger akademisch zufriedenstellende, aber pragmatische Mittelweg. Lassen Sie mich erklären.
Wenn Sie in einen neuen Service integrieren und einen Edge Case finden, mit dem Sie nicht vertraut sind, den Sie aber nicht erwarten, wird es am besten sein, mehr Informationen zu sammeln und die Dinge manuell zu erledigen die Zwischenzeit. Rom wurde nicht an einem Tag gebaut und Ihr Cloud-Dienst wird am ersten Tag, an dem Sie ihn einschalten, nicht perfekt funktionieren. Wenn Sie eine Zeitüberschreitung erhalten, melden Sie sie stattdessen an und speichern Sie alles, was Sie für eine spätere erneute Übertragung dieser E-Mail benötigen.
Nun stellen Sie sich vor, Sie sind alle mit der Codierung und Integrationstests fertig und haben den Dienst in der Produktion eingeschaltet. Am ersten Tag versuchst du 100.000 E-Mails zu senden. Wenn Sie 1000 Timeouts erhalten, passiert etwas sehr Seltsames und Sie wissen, dass Sie Ihr Netzwerk untersuchen müssen! Was ist, wenn Sie stattdessen am ersten Tag 0 Zeitüberschreitungen erhalten, gleich am zweiten Tag, und am siebten Tag, von 700.000 Versuchen für die Woche, gab es nur eine Zeitüberschreitung. Gegebenenfalls können Sie versuchen, diesen einen Kunden anzurufen und zu sagen: "Hallo, Entschuldigen Sie die Störung, aber wir sind wirklich auf Zuverlässigkeit bedacht und hatten ein technisches Problem. Ich wollte sicherstellen, dass Sie die E-Mail-Bestätigung für [XYZ] erhalten. " Wenn sie nein sagen, naja, dann könnte es sinnvoll sein, den Code zu ändern, so dass bei einer Zeitüberschreitung der Versuch nach einer Wartezeit von ein paar Sekunden wiederholt wird, da Sie wissen, dass es wahrscheinlich funktionieren wird. Die gleiche Idee für alles dazwischen.
Der Punkt hier ist, dass Sie Ihre menschliche Intelligenz auf das Geheimnis anwenden werden. Ich habe herausgefunden, dass es oft einfacher ist, NICHT das Unbekannte zu manipulieren. Stell dich einfach darauf ein, in der Lage zu sein, mit dem fertig zu werden, was passiert, und finde heraus, was die schlaue Sache ist, wenn du weißt, wie das Problem wirklich aussieht.
(Sie können diese blog post genießen - geschrieben von jemand anderem -. Etwa „nicht Rand der Bearbeitung von Fällen“)
Sind Sie ein AWS SDK E-Mail zur Zeit zu schicken? Ich benutze PHP SDK und nachdem die SendEmail ausgelöst wurde, gibt es eine Antwort, die anzeigt, ob die E-Mail gesendet wurde oder nicht (siehe https://github.com/aws/aws-sdk-php/blob/master/src/ Aws/Ses/Ressourcen/ses-2010-12-01.php).Dann könnte ich dieses Ergebnis protokollieren und das nächste Ding ist ziemlich einfach –
@Hieu Ja, ich, und ja, Amazon gibt den Status des Sendens zurück. Mein Punkt ist, wenn die Mail * nicht * gesendet wird, weil zum Beispiel die HTTP-Anfrage keine Antwort erhält, oder PHP mit einem fatalen Fehler oder ähnlichem endet, dann gibt es keine Möglichkeit zu wissen, ob ich die senden muss E-Mail erneut oder nicht. Ich habe eine Cron-Batch-Verarbeitung der ausstehenden E-Mails, und ich würde gerne fragen können: "Wurde bereits eine E-Mail mit der ID 123 gesendet?" – Benjamin
Hmm dann in SDK können Sie GetSendStatistics() -Methode verwenden, die die Verwendung Statistiken abruft. Lesen Sie hier mehr: "Überwachen Sie Ihre Nutzungsstatistiken mithilfe der Amazon SES API" http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-usage-statistics.html. Hoffe, es hilft;) –