如何解决预期响应代码 250,但得到代码“554”,消息为“554 消息被拒绝 | Laravel 使用 TO 电子邮件
- Laravel 版本:8.27
- PHP 版本
$ PHP --version
:PHP 8.0.3 (cli) - 数据库驱动程序和版本 $
MysqL --version
:MysqL Ver 8.0.23-0ubuntu0.20.04.1
问题陈述:
我在 TO
电子邮件中收到 FROM
电子邮件,这当然不会在 {{ 的 Amazon SES 中进行验证1}} POST
。
说明:
让 to@example2.com 将通过电子邮件询问密码重置链接。一般from@example1.com 会发送密码重置链接。但是,就我而言,to@example2.com 正在尝试向自己发送密码重置链接。
在 Amazon SES 中,我们需要验证电子邮件才能通过 SES 服务发送邮件。所以我已经验证了 from@example1.com。
注意:两个域是不同的 password/email
和 example1.com
。 example2.com
在 Amazon SES 上设置。
例外:
Swift_TransportException (554)
预期响应代码为 250,但得到代码“554”,消息为“554 消息被拒绝:电子邮件地址未验证。以下身份在区域 REGION 中未通过检查:to@example2.com”
配置:
example1.com
$ PHP artisan route:list
+--------+----------+-----------------------------------------------+------------------------------------+-------------------------------------------------------------------------------+-------------------------------------------------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-----------------------------------------------+------------------------------------+-------------------------------------------------------------------------------+-------------------------------------------------------+
| | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web |
App\Http\Controllers\Auth\ForgotPasswordController.PHP
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
class ForgotPasswordController extends Controller
{
use SendsPasswordResetEmails;
vendor\laravel\ui\auth-backend\SendsPasswordResetEmails.PHP
namespace Illuminate\Foundation\Auth;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
use Illuminate\Validation\ValidationException;
trait SendsPasswordResetEmails
{
public function sendResetLinkEmail(Request $request)
{
$this->validateEmail($request);
$response = $this->broker()->sendResetLink(
$this->credentials($request)
);
return $response == Password::RESET_LINK_SENT
? $this->sendResetLinkResponse($request,$response)
: $this->sendResetLinkFailedResponse($request,$response);
}
vendor\laravel\framework\src\illuminate\Auth\Passwords\Passwordbroker.PHP
namespace Illuminate\Auth\Passwords;
use Closure;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
use Illuminate\Contracts\Auth\Passwordbroker as PasswordbrokerContract;
use Illuminate\Contracts\Auth\UserProvider;
use Illuminate\Support\Arr;
use UnexpectedValueException;
class Passwordbroker implements PasswordbrokerContract
{
public function sendResetLink(array $credentials,Closure $callback = null)
{
$user = $this->getUser($credentials);
if (is_null($user)) {
return static::INVALID_USER;
}
if ($this->tokens->recentlyCreatedToken($user)) {
return static::RESET_THRottLED;
}
$token = $this->tokens->create($user);
if ($callback) {
$callback($user,$token);
} else {
$user->sendPasswordResetNotification($token);
}
return static::RESET_LINK_SENT;
.env
解决方法
在我看来,您的 AWS 邮件服务或 Laravel 设置不正确
https://aws.amazon.com/premiumsupport/knowledge-center/ses-554-400-message-rejected-error/
您可以尝试使用开箱即用的 mailtrap.io 来测试内容。
当应该发送电子邮件的服务器拒绝它时,通常会引发这种异常。通常是 SMTP 或 AWS SES 的情况。您还可能尝试通过 SMTP 使用 Outlook 帐户发送邮件,而安全策略不允许您发送邮件。
但是,如果我猜对了,您希望像人们自己发送电子邮件一样发送电子邮件。这是不可能的,因为您无法验证所有电子邮件。 *@*
作为解决方案,您可以使用 reply-to
选项,或者如果您不希望用户能够回复,则使用 no-reply
作为发件人。
如果您不是尝试以 to@
的身份发送邮件,而是尝试以 from@
的身份发送邮件,请确保在 env 中正确设置了 MAIL_FROM_EMAIL。
电子邮件不应在未加密的情况下发送
要使用的电子邮件端口:
Protocol Security Setting Port Number(s)
SMTP (sending mail) Encrypted - TLS/STARTTLS 465
SMTP (sending mail) Encrypted - SSL 465
SMTP (sending mail) Unencrypted 25* (or 26)
POP3 (receiving mail) Encrypted - TLS 995
POP3 (receiving mail) Encrypted - SSL 995
POP3 (receiving mail) Unencrypted 110
IMAP (receiving mail) Encrypted - TLS 993
IMAP (receiving mail) Encrypted - SSL 993
IMAP (receiving mail) Unencrypted 143
https://billing.precedence.com.au/billing/knowledgebase/70/Mail-Ports-for-POP3-IMAP-and-SMTP.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。