邮箱中给定的 AWS SES 地址 [] 不符合 RFC 2822、3.6.2

AWS SES Address in mailbox given [] does not comply with RFC 2822, 3.6.2

提问人:urfusion 提问时间:12/26/2022 最后编辑:urfusion 更新时间:1/18/2023 访问量:206

问:

当我使用普通的SMTP服务器时,例如我的所有电子邮件都正常工作,但是当我开始使用具有生产访问权限的AWS SES SMTP(具有生产访问权限)时,我开始出现以下错误mailtrap

Swift_RfcComplianceException Object(
[message:protected] => Address in mailbox given [] does not comply with RFC 2822, 3.6.2.
[string:Exception:private] => 
[code:protected] => 0
[file:protected] => /var/www/html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php
[line:protected] => 355
[trace:Exception:private] => Array

我的代码是 ForgotPasswordController

<?php

namespace Webkul\Customer\Http\Controllers;

use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
use Illuminate\Support\Facades\Password;
use Webkul\Customer\Http\Requests\CustomerForgotPasswordRequest;

class ForgotPasswordController extends Controller
{
    use SendsPasswordResetEmails;

    /**
     * Contains route related configuration.
     *
     * @var array
     */
    protected $_config;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->_config = request('_config');
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\View\View
     */
    public function create()
    {
        return view($this->_config['view']);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @return \Illuminate\Http\Response
     */
    public function store(CustomerForgotPasswordRequest $request)
    {
        $request->validated();
        if ($request->ajax()) {
            try {
            print_r (env('MAIL_USERNAME'));
                $response = $this->broker()->sendResetLink($request->only(['email']));

                if ($response == Password::RESET_LINK_SENT) {
                    return response()->json(['success' => true, 'message' => trans('customer::app.forget_password.reset_link_sent')]);
                }

                return response()->json(['success' => false, 'message' => trans('customer::app.forget_password.email_not_exist')]);
            } catch (\Swift_RfcComplianceException $e) {
             report($e);
                echo "<pre>";
                print_r($e); die;
                return response()->json(['success' => false, 'message' => trans('customer::app.forget_password.reset_link_sent')]);
            
            } catch (\Exception $e) {
                report($e);
                echo "<pre>";
                print_r($e); die;
                return response()->json(['success' => false, 'message' => trans($e->getMessage())]);

            }
        } else {
            try {
                $response = $this->broker()->sendResetLink($request->only(['email']));

                if ($response == Password::RESET_LINK_SENT) {
                    session()->flash('success', trans('customer::app.forget_password.reset_link_sent'));

                    return back();
                }

                return back()
                    ->withInput($request->only(['email']))
                    ->withErrors([
                        'email' => trans('customer::app.forget_password.email_not_exist'),
                    ]);
            } catch (\Swift_RfcComplianceException $e) {
                session()->flash('success', trans('customer::app.forget_password.reset_link_sent'));

                return redirect()->back();
            } catch (\Exception $e) {
                report($e);

                session()->flash('error', trans($e->getMessage()));

                return redirect()->back();
            }
        }
    }

    /**
     * Get the broker to be used during password reset.
     *
     * @return \Illuminate\Contracts\Auth\PasswordBroker
     */
    public function broker()
    {
        return Password::broker('customers');
    }
}

SMTP 设置是

MAIL_MAILER=smtp
MAIL_HOST=email-smtp.us-east-1.amazonaws.com
MAIL_POR=587
MAIL_USERNAME=username as per SES
MAIL_PASSWORD=password as per ses
MAIL_ENCRYPTION=tls
MAIL_FROM_A[email protected]
MAIL_FROM_NAME="${APP_NAME}"

日志是

[2022-12-26 13:10:01] prod.ERROR: Address in mailbox given [] does not comply with RFC 2822, 3.6.2. {"exception":"[object] (Swift_RfcComplianceException(code: 0): Address in mailbox given [] does not comply with RFC 2822, 3.6.2. at /var/www/html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php:355)
[stacktrace]
#0 /var/www/html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php(272): Swift_Mime_Headers_MailboxHeader->assertValidAddress()
#1 /var/www/html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php(117): Swift_Mime_Headers_MailboxHeader->normalizeMailboxes()
#2 /var/www/html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php(74): Swift_Mime_Headers_MailboxHeader->setNameAddresses()
#3 /var/www/html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php(600): Swift_Mime_Headers_MailboxHeader->setFieldBodyModel()
#4 /var/www/html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php(213): Swift_Mime_SimpleMimeEntity->setHeaderFieldModel()
#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Mail/Message.php(50): Swift_Mime_SimpleMessage->setFrom()
#6 /var/www/html/vendor/laravel/framework/src/Illuminate/Notifications/Channels/MailChannel.php(188): Illuminate\\Mail\\Message->from()
#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Notifications/Channels/MailChannel.php(161): Illuminate\\Notifications\\Channels\\MailChannel->addSender()
#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Notifications/Channels/MailChannel.php(135): Illuminate\\Notifications\\Channels\\MailChannel->addressMessage()
#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Notifications/Channels/MailChannel.php(80): Illuminate\\Notifications\\Channels\\MailChannel->buildMessage()
#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php(271): Illuminate\\Notifications\\Channels\\MailChannel->Illuminate\\Notifications\\Channels\\{closure}()
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Notifications/Channels/MailChannel.php(65): Illuminate\\Mail\\Mailer->send()
#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Notifications/NotificationSender.php(148): Illuminate\\Notifications\\Channels\\MailChannel->send()
#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Notifications/NotificationSender.php(106): Illuminate\\Notifications\\NotificationSender->sendToNotifiable()
#14 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Traits/Localizable.php(19): Illuminate\\Notifications\\NotificationSender->Illuminate\\Notifications\\{closure}()
#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Notifications/NotificationSender.php(109): Illuminate\\Notifications\\NotificationSender->withLocale()
#16 /var/www/html/vendor/laravel/framework/src/Illuminate/Notifications/NotificationSender.php(79): Illuminate\\Notifications\\NotificationSender->sendNow()
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Notifications/ChannelManager.php(39): Illuminate\\Notifications\\NotificationSender->send()
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Notifications/RoutesNotifications.php(18): Illuminate\\Notifications\\ChannelManager->send()
#19 /var/www/html/packages/Webkul/Customer/src/Models/Customer.php(79): Webkul\\Customer\\Models\\Customer->notify()
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php(71): Webkul\\Customer\\Models\\Customer->sendPasswordResetNotification()
#21 /var/www/html/packages/Webkul/Customer/src/Http/Controllers/ForgotPasswordController.php(51): Illuminate\\Auth\\Passwords\\PasswordBroker->sendResetLink()
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Webkul\\Customer\\Http\\Controllers\\ForgotPasswordController->store()
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction()
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(254): Illuminate\\Routing\\ControllerDispatcher->dispatch()
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(197): Illuminate\\Routing\\Route->runController()
#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(695): Illuminate\\Routing\\Route->run()
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
#28 /var/www/html/packages/Webkul/Shop/src/Http/Middleware/HtmlMinifier.php(12): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Webkul\\Shop\\Http\\Middleware\\HtmlMinifier->handle()
#30 /var/www/html/packages/Webkul/Shop/src/Http/Middleware/Currency.php(46): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Webkul\\Shop\\Http\\Middleware\\Currency->handle()
#32 /var/www/html/packages/Webkul/Shop/src/Http/Middleware/Theme.php(31): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#33 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Webkul\\Shop\\Http\\Middleware\\Theme->handle()
#34 /var/www/html/packages/Webkul/Shop/src/Http/Middleware/Locale.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#35 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Webkul\\Shop\\Http\\Middleware\\Locale->handle()
#36 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#37 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
#38 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(78): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#39 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle()
#40 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#41 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\AuthenticateSession->handle()
#42 /var/www/html/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#43 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle()
#44 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#45 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(697): Illuminate\\Pipeline\\Pipeline->then()
#46 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(672): Illuminate\\Routing\\Router->runRouteWithinStack()
#47 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(636): Illuminate\\Routing\\Router->runRoute()
#48 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(625): Illuminate\\Routing\\Router->dispatchToRoute()
#49 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(166): Illuminate\\Routing\\Router->dispatch()
#50 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#51 /var/www/html/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(59): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#52 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Barryvdh\\Debugbar\\Middleware\\InjectDebugbar->handle()
#53 /var/www/html/packages/Webkul/Core/src/Http/Middleware/SecureHeaders.php(30): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#54 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Webkul\\Core\\Http\\Middleware\\SecureHeaders->handle()
#55 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#56 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest()
#57 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\StartSession->handle()
#58 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#59 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle()
#60 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#61 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle()
#62 /var/www/html/packages/Webkul/Core/src/Http/Middleware/CheckForMaintenanceMode.php(114): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#63 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Webkul\\Core\\Http\\Middleware\\CheckForMaintenanceMode->handle()
#64 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#65 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(141): Illuminate\\Pipeline\\Pipeline->then()
#66 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(110): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#67 /var/www/html/public/index.php(88): Illuminate\\Foundation\\Http\\Kernel->handle()
#68 {main}
"} 

更新

如果我尝试另一种发送电子邮件的方式,它会起作用。

$data = array('name'=>"urfusion");
                Mail::send([], [], function($message) {
         $message->to('[email protected]', 'urfusion')->subject
            ('Mail');
         $message->from('[email protected]','domain');
      });
PHP Laravel SMTP Amazon-SES Swiftmailer

评论

1赞 UnderDog 12/26/2022
stackoverflow.com/help/minimal-reproducible-example 打开Laravel.log,找到错误并复制该错误的整个堆栈跟踪。您需要找到使用SES发送的邮件的详细信息,并尝试通过dd-ing尽可能多地执行此操作
0赞 UnderDog 12/26/2022
我也会尝试在本地使用 SES。您可能使用了 mailtrap,但是在将代码放在生产服务器上后,您需要防止“它在我的机器上工作”部分
0赞 UnderDog 12/26/2022
现在,专注于 ,您可以复制/粘贴该函数吗?它是 notify() 函数/packages/Webkul/Customer/src/Models/Customer.php(79)
0赞 UnderDog 12/26/2022
还要关注这个函数:,它是函数或类似的东西/var/www/html/packages/Webkul/Customer/src/Http/Controllers/ForgotPasswordController.php(51)sendResetLink()
1赞 UnderDog 12/26/2022
由你来做一个最小的可重现的例子:stackoverflow.com/help/minimal-reproducible-example 没问题,它在 github 上,但当你查看通知函数时,它会调度一个事件。因此,您的可重现示例是复制给您带来问题的微小部分。只是不要显示这样的链接:“好吧,这是整个项目,我的问题在某个地方”

答: 暂无答案