AWS SES 与 PHPMailer 使用 SMTP,SMTP 错误:无法进行身份验证?

2023-12-28

我收到以下错误:身份验证凭据无效。

我已经仔细检查了用户名(访问密钥 ID)和密码(秘密令牌)一百万次。我仔细检查了发送到服务器的 base64,它是正确的。用户有正确的访问权限。允许来自 EC2 服务器的所有出站流量。 SELinux 已禁用。我已经转义了特殊字符,尝试了不同的凭据。尝试使用具有更多访问权限的用户。

我将 PHPMailer 与 AWS SES 结合使用。

这是代码:

$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
$mail->SMTPDebug = 4;
$mail->setFrom('[email protected] /cdn-cgi/l/email-protection', 'Sender Name');
$mail->addAddress('[email protected] /cdn-cgi/l/email-protection', 'Recipient Name');
$mail->Username = 'AKIAINH6PZ2UQKDK2BTA';
$mail->Password = 'GvMMa7R3fAXZGacl3gyfA86J0RxJLO7FQte9vrof';
$mail->Host = 'email-smtp.us-east-1.amazonaws.com';
$mail->Subject = 'Amazon SES test (SMTP interface accessed using PHP)';
$mail->Body = '<h1>Email Test</h1>';
$mail->Port = 587;
$mail->isHTML(true);
$mail->AltBody = "Email Test\r\nThis email was sent through the 
    Amazon SES SMTP interface using the PHPMailer class.";

if(!$mail->send()) {
    echo "Email not sent. " , $mail->ErrorInfo , PHP_EOL;
} else {
    echo "Email sent!" , PHP_EOL;
}

这是完整的输出:

2017-11-06 01:09:49 Connection: opening to email-smtp.us-east-1.amazonaws.com:587, timeout=300, options=array ()
2017-11-06 01:09:49 Connection: opened
2017-11-06 01:09:49 SMTP -> get_lines(): $data is ""
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "220 email-smtp.amazonaws.com ESMTP SimpleEmailService-2367521455 ZxpFMwcwQB6LGlJ2noyc"
2017-11-06 01:09:49 SERVER -> CLIENT: 220 email-smtp.amazonaws.com ESMTP SimpleEmailService-2367521455 ZxpFMwcwQB6LGlJ2noyc
2017-11-06 01:09:49 CLIENT -> SERVER: EHLO 34.200.216.237
2017-11-06 01:09:49 SMTP -> get_lines(): $data is ""
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-email-smtp.amazonaws.com"
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com"
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-8BITMIME"
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME"
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-SIZE 10485760"
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760"
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-STARTTLS"
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760250-STARTTLS"
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-AUTH PLAIN LOGIN"
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760250-STARTTLS250-AUTH PLAIN LOGIN"
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250 Ok"
2017-11-06 01:09:49 SERVER -> CLIENT: 250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760250-STARTTLS250-AUTH PLAIN LOGIN250 Ok
2017-11-06 01:09:49 CLIENT -> SERVER: STARTTLS
2017-11-06 01:09:49 SMTP -> get_lines(): $data is ""
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "220 Ready to start TLS"
2017-11-06 01:09:49 SERVER -> CLIENT: 220 Ready to start TLS
2017-11-06 01:09:49 CLIENT -> SERVER: EHLO 34.200.216.237
2017-11-06 01:09:49 SMTP -> get_lines(): $data is ""
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-email-smtp.amazonaws.com"
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com"
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-8BITMIME"
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME"
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-SIZE 10485760"
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760"
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-STARTTLS"
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760250-STARTTLS"
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-AUTH PLAIN LOGIN"
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760250-STARTTLS250-AUTH PLAIN LOGIN"
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250 Ok"
2017-11-06 01:09:49 SERVER -> CLIENT: 250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760250-STARTTLS250-AUTH PLAIN LOGIN250 Ok
2017-11-06 01:09:49 Auth method requested: UNKNOWN
2017-11-06 01:09:49 Auth methods available on the server: PLAIN,LOGIN
2017-11-06 01:09:49 Auth method selected: LOGIN
2017-11-06 01:09:49 CLIENT -> SERVER: AUTH LOGIN
2017-11-06 01:09:49 SMTP -> get_lines(): $data is ""
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "334 VXNlcm5hbWU6"
2017-11-06 01:09:49 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2017-11-06 01:09:49 CLIENT -> SERVER: QUtJQUlOSDZQWjJVUUtESzJCVEE=
2017-11-06 01:09:49 SMTP -> get_lines(): $data is ""
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "334 UGFzc3dvcmQ6"
2017-11-06 01:09:49 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2017-11-06 01:09:49 CLIENT -> SERVER: R3ZNTWE3UjNmQVhaR2FjbDNneWZBODZKMFJ4SkxPN0ZRdGU5dnJvZg==
2017-11-06 01:09:50 SMTP -> get_lines(): $data is ""
2017-11-06 01:09:50 SMTP -> get_lines(): $str is "535 Authentication Credentials Invalid"
2017-11-06 01:09:50 SERVER -> CLIENT: 535 Authentication Credentials Invalid
2017-11-06 01:09:50 SMTP ERROR: Password command failed: 535 Authentication Credentials Invalid
SMTP Error: Could not authenticate.
2017-11-06 01:09:50 CLIENT -> SERVER: QUIT
2017-11-06 01:09:50 SMTP -> get_lines(): $data is ""
2017-11-06 01:09:50 SMTP -> get_lines(): $str is "221 Bye"
2017-11-06 01:09:50 SERVER -> CLIENT: 221 Bye
2017-11-06 01:09:50 Connection: closed
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Email not sent. SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

SES 不支持使用 IAM 用户 AccessKeys 发送电子邮件。 SES 使用 Amazon SES SMTP 凭证。

Sign in to the AWS Management Console and open the Amazon SES console at https://console.aws.amazon.com/ses/.

In the navigation pane, choose SMTP Settings.

In the content pane, choose Create My SMTP Credentials.

In the Create User for SMTP dialog box, you will see that an SMTP user name has been filled in for you. You can accept this suggested user name or enter a different one. To proceed, choose Create.

Choose Show User SMTP Credentials. Your SMTP credentials will be displayed on the screen; copy them and store them in a safe place. You can also choose Download Credentials to download a file that contains your credentials.

以下是文档的链接,该文档解释了不同类型的凭据以及它们如何与 SES 一起使用。

将凭证与 Amazon SES 结合使用 http://docs.aws.amazon.com/ses/latest/DeveloperGuide/using-credentials.html

以下是获取凭据的链接:

获取您的 Amazon SES SMTP 凭证 http://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS SES 与 PHPMailer 使用 SMTP,SMTP 错误:无法进行身份验证? 的相关文章

  • Amazon S3 - 每个子域有 1 个存储桶和一个文件夹?

    我需要创建一项服务 允许用户在自定义子域中发布静态页面 我从来没有这样做过 所以如果这个问题听起来有点太基本了 请原谅我 为此 我希望将所有这些静态文件托管在 Amazon S3 或 Google 云存储等中 以将其与我的服务器分开 使其可
  • AWS - 有没有办法“挂钩”第一次创建联合身份的时间?

    我有一个 Cognito 身份池 用于对我的前端用户进行身份验证 并在我的应用程序中授予他们某些权限 但是 我在授予这些用户访问 IoT 的权限时遇到了问题 其中涉及调用 Lambda 调用iot addPrincipalPolicy 一旦
  • Cors政策不允许上传

    谁能告诉我我是否在这里错过了什么 这已添加到相关存储桶中的 CORS 策略中
  • 如何使用 AEM 解析 org.apache.http.ssl?

    最终 我尝试在 Java 代码中使用 AWS S3 库来通过 AEM 启用服务器端 S3 上传 但在安装依赖项和 或由 AEM 识别时遇到了问题 每次我添加新的依赖项时 都会弹出五个问题 在我尝试构建的这个包中 这是我看到的错误 The i
  • Autoscaling launchconfig 组中的 aws cloudformation“NetworkInterfaces”

    在 aws cloudformation 中 如何在 Autoscaling launchconfig 组中添加 NetworkInterfaces 因为我想配置启动的每个实例 并且需要 NetworkInterfaces 位于相同的 AW
  • Amazon Redshift 如何从 s3 复制并设置 job_id

    Amazon Redshift 提供使用 复制 命令从 s3 对象加载表数据的功能 他们是使用复制命令的一种方法 但也为每个插入的行设置额外的 col CONSTANT 我想在每个复制的行上设置一个 job id 不在源数据中 我认为当 c
  • 如何使用java sdk创建AWS Elastic Beanstalk环境?

    任何人都可以帮助我或提供任何资源来使用 java 程序创建 Aws Elastic beanstalk 环境并在其中部署我们的应用程序吗 先感谢您 您可以下载 AWS Java SDKhere http aws amazon com sdk
  • Amazon Lex 中的响应卡按钮中的超链接

    我正在尝试在 amazon lex 中制作一张响应卡 以发出一张响应卡 其中有一个可通往另一个网站的按钮 下面是我在 aws lambda python 中使用的代码 我已经在 Facebook Messenger 上发布了聊天机器人 但每
  • 从 AWS CLI 工具获取 AWS 帐号的快速方法?

    寻找一种快速获取我的帐号的方法 我最初想到使用aws iam get account authorization details max items 1但这样做有几个问题 有没有办法做到这一点 可能不会跨帐户来源 您可以从以下位置获取帐号安
  • 让 PHPmailer 成为 Gmail 的“更安全的应用程序”

    我们可以在 PHPmailer 中实施哪些安全措施 使其成为更安全的 Gmail 应用程序 https support google com accounts answer 6010255 https support google com
  • AWS SNS 参数电话号码无效

    我正在尝试学习 aws sns 服务从我的网络应用程序发送短信 我正在本地主机上工作 params array credentials gt array key gt iam key secret gt iam secret region
  • 如何使用 AWS S3 SDK 的 createPresignedPost 方法使 AWS S3 文件可供公开访问?

    我有一个用例将 AWS S3 存储桶保留为默认私有 但是 上传到 AWS S3 时将某些对象公开 我使用以下代码对 AWS S3 url 进行签名 并使用 ACL 设置作为public read module exports generat
  • Spark 写入 S3 V4 SignatureDoesNotMatch 错误

    我遇到S3SignatureDoesNotMatch尝试使用 Spark 将 Dataframe 写入 S3 时 症状 尝试过的事情 代码失败有时但有效有时 代码可以read从 S3 没有任何问题 并且能够不时写入 S3 这排除了错误的配置
  • Postgres 数据库中特殊的时区处理

    我的环境 I m in 法国巴黎 UTC 1 or CET It s 12am 00 00 我们在2016 年 11 月 25 日 My Postgres数据库托管于亚马逊网络服务 AWS RDS 在eu west 1 region 问题
  • 请求中包含的安全令牌已过期

    我有一个脚本 可以从 Cloudwatch 中提取大量指标以用于我们自己的内部报告 该脚本会迭代特定区域中的所有 EC2 实例 并请求过去 2 周的 5 个 cloudwatch 指标 所有可用的统计数据 每次以 5 分钟为间隔返回 5 天
  • boto3 搜索未使用的安全组

    我正在使用 AWS Python SDK Boto3 我想知道哪些安全组未使用 我用 boto2 做到了 但我不知道如何用 boto3 做同样的事情 from boto ec2 connection import EC2Connection
  • Amazon s3:直接上传与预签名 URL

    我正在使用 AWS SDK for NET 并且正在寻找一种让用户直接上传到 s3 存储的方法 我遇到过 aws 提供的两种不同的方式 基于浏览器的上传 https docs aws amazon com AmazonS3 latest A
  • 使用 Amazon Elastic Transcoder 获取视频文件的视频分辨率

    我们有这个配置工作 1 Display a JS Upload Form to the visitor 2 Upload file chosen direclty to Amazon S3 3 Transcode the Video in
  • aws Lambda 在 S3 上传时使 CloudFront 失效

    我同时上传 10 50 个文件 Lambda 会为每个更新的文件触发一个事件 如果文件大小发生变化 因此 我不想一一失效 50x 而是想运行通配符 上传结束时出现一次字符 任何人都可以阐明如何实现这一目标 谢谢 如果我正确理解你的问题 你的
  • AWS Codepipeline 是否会将符号链接传递到工件中的 Codebuild

    我的 github 存储库中有一些符号链接 当我有一个直接从 github 克隆的 Codebuild 项目时 符号链接会被保留 我进行了切换 以便 Codepipeline 监听我的更改devgithub 中的分支 并将工件传递给 cod

随机推荐

  • 如果浏览器中未启用 JavaScript,则显示消息

    我正在寻找一种解决方案 如果我的网站的访问者没有启用 JavaScript 则向他显示一条信息消息 我在 div 中尝试了一条消息 该消息默认可见 但在启动时立即被 jQuery 函数隐藏 问题是 该消息在短时间内可见 直到它被隐藏 这非常
  • 如何在正则表达式中指定单引号

    这是我的正则表达式 我想在 O Neal Nickel 等字符中包含单引号 这是我的正则表达式 允许字母 空格以及句号 和 连字符 A Za z s A Za z s 还是我问错了你的问题
  • 您可以使用 Sel-Blocks Selenium 插件指定数据文件的“相对”路径吗?

    使用 SelBlocks 插件进行数据驱动开发时 指定数据文件的位置时是否可以指定相对路径 而不是绝对路径 我在一个小团队工作 我们希望能够让我们的测试可移植并最终成为我们生产过程的一部分 我们目前正在使用 Selenium IDE 来编写
  • Mantle自动将0和1转换为BOOL?

    Mantle 是否已将 JSON 中的 int 值 0 和 1 转换为 Objective C BOOL 值 我有一个模型 interface MyModel MTLModel property nonatomic readonly BOO
  • Ruby on Rails 和 Jquery:提交后尝试切换字符

    第一篇文章在这里 所以如果有些事情不对 我如何放入代码 如果我没有包含足够的内容 或者如果我的问题太模糊 我深表歉意 我对 RoR 非常非常陌生 我正从构建一款井字棋游戏开始 我已经将其构建为可以在命令行上运行 现在我正在尝试使其基于网络
  • 如何确保在运行 Jenkins 管道之前更新参数列表?

    Jenkins 管道项目配置为获取其Jenkinsfile来自 Git 存储库 例如 如果我更改参数列表 properties parameters string name FOO description Choose foo to pro
  • Firebase 导致“线程 1:信号 SIGABRT”

    我启动了一个空白的 Xcode 项目 我所做的就是通过 Cocoapods 添加 Firebase 框架并导入 Appdelegate 和 viewcontroller 当我添加FIRApp configure to didFinishLo
  • 在 Android 中通过 Intent 传递信息后将项目添加到 listView

    我正在尝试添加一个项目 首先使用添加按钮 然后转到不同的活动 然后返回原始活动并将其添加到列表视图中 我似乎不能拥有超过一件物品 AddScreen class 我的第一个活动 package com painLogger IMPORTS
  • 如何在C++中读取空字符串?

    考虑 C 中的这段代码片段 string str cin gt gt str 如果我在这个阶段简单地按回车键 指针就会移动到下一行 但会继续等待输入 即使我故意想输入一个空字符串 我的目标是读一个单词 如果我按 Enter 键 它应该被视为
  • 手机是否需要连接到互联网以便网络提供商可以确定位置?

    手机是否需要始终连接到互联网 以便网络提供商可以确定位置 当我在手机上测试我的应用程序时Settings gt Location only Use wireless network已选中 并且我未通过 Wi Fi 连接到互联网 因此无法获取
  • 将 Git 与 TFS 2017 结合使用 - 可在 Visual Studio 中使用,但不能在命令行中使用

    最近 我们的项目使用 Git 切换到 Team Foundation Server 2017 如果我们通过 Web 界面或 Visual Studio 使用它 我们的 TFS 工作得足够好 但如果我们尝试使用第三方工具 如 Sourcetr
  • 在核心数据持久存储中传送静态(只读)数据的正确方法是什么?

    我想发送静态只读数据以在我的核心数据模型中使用 问题是 存在明显不同的持久存储类型 我不知道这些类型的格式是否应该是不透明的 或者我是否应该能够手动构造它们 现在我只有一个 plist 而且非常小 总共可能有 30 个条目 我是否应该在首次
  • 将 pdf 附件添加到 WooCommerce 已完成订单电子邮件通知

    在另一个线程上找到此代码 但无法使其工作 PDF 上传到 wp content child theme 目标是将 pdf 附加到 woocommerce 将发送的已完成订单电子邮件中 不知道customer completed order是
  • 在map.forEach期间map.delete(key)

    通常 当您循环访问列表时 无法安全地从列表中删除项目 这个概念对于 ES6 地图仍然适用吗 我尝试了这个简单的测试 没有例外 var map new Map a 1 b 2 c 3 map forEach value key map gt
  • 捕获 Windows 上的访问违规

    我试图捕获应用程序中所有未处理的异常 以便在发生异常时可以保存日志文件 这是一个使用 Visual Studio 2013 编译的 64 位 Windows 应用程序 用 C 编写 为了进行测试 我使用 VS 生成的默认 C Win32 项
  • rebol解析函数可以创建完全解析css2/css3的规则吗?

    rebol 解析函数的能力有限制吗 它是否能够解析整个 css2 css 3 规范 或者是否会遇到理论上不可能形成某些规则的情况 HostileFork 回答后更新 我的意思是在正则表达式中我认为这是相当不可能的 解析是否更强大 如果是 这
  • Angular 指令中的单向绑定

    官方Angular 文档用于编译 https docs angularjs org api ng service 24compile讨论单向绑定类型 lt 在角社区 I see 通常称为 单向绑定类型 是什么赋予了 这 在我看来 这并不是真
  • Python 中单独线程中的按键回显不显示第一个击键

    我会尝试发布一个最小的工作示例 但不幸的是这个问题只需要很多部分 所以我已尽我所能将其剥离 首先 我使用一个简单的脚本来通过函数调用模拟按键 这是调整自here https stackoverflow com a 13290031 2924
  • 多处理队列批量获取最多 N 个元素

    我需要以阻塞方式从队列中获取尽可能多的项目 最多 N 个 例如 queue get 16 最多应返回 16 个元素 但如果为空则阻塞 没有内置这样的工具 因此您需要自己编写代码 例如 import queue in Python 3 Que
  • AWS SES 与 PHPMailer 使用 SMTP,SMTP 错误:无法进行身份验证?

    我收到以下错误 身份验证凭据无效 我已经仔细检查了用户名 访问密钥 ID 和密码 秘密令牌 一百万次 我仔细检查了发送到服务器的 base64 它是正确的 用户有正确的访问权限 允许来自 EC2 服务器的所有出站流量 SELinux 已禁用