“无法发送没有发送者地址的消息”

huangapple go评论102阅读模式
英文:

Cannot send message without a sender address

问题

I'm making updates on a laravel-5.6 project that used the make:auth scaffolding. It is unable to send emails on password reset. I have made the required configs in the .env file but still unable to send emails.

.env file

  1. MAIL_DRIVER=smtp
  2. MAIL_HOST=smtp.mailtrap.io
  3. MAIL_PORT=2525
  4. MAIL_USERNAME=xxxxxx
  5. MAIL_PASSWORD=xxxxxx
  6. MAIL_FROM_ADDRESS=from@example.com
  7. MAIL_FROM_NAME=Example
  8. MAIL_ENCRYPTION=tls

config/mail.php file

  1. return [
  2. /*
  3. |--------------------------------------------------------------------------
  4. | Mail Driver
  5. |--------------------------------------------------------------------------
  6. |
  7. | Laravel supports both SMTP and PHP's "mail" function as drivers for the
  8. | sending of e-mail. You may specify which one you're using throughout
  9. | your application here. By default, Laravel is setup for SMTP mail.
  10. |
  11. | Supported: "smtp", "sendmail", "mailgun", "mandrill", "ses",
  12. | "sparkpost", "log", "array"
  13. |
  14. */
  15. 'driver' => env('MAIL_DRIVER', 'smtp'),
  16. /*
  17. |--------------------------------------------------------------------------
  18. | SMTP Host Address
  19. |--------------------------------------------------------------------------
  20. |
  21. | Here you may provide the host address of the SMTP server used by your
  22. | applications. A default option is provided that is compatible with
  23. | the Mailgun mail service which will provide reliable deliveries.
  24. |
  25. */
  26. 'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
  27. /*
  28. |--------------------------------------------------------------------------
  29. | SMTP Host Port
  30. |--------------------------------------------------------------------------
  31. |
  32. | This is the SMTP port used by your application to deliver e-mails to
  33. | users of the application. Like the host we have set this value to
  34. | stay compatible with the Mailgun e-mail application by default.
  35. |
  36. */
  37. 'port' => env('MAIL_PORT', 587),
  38. /*
  39. |--------------------------------------------------------------------------
  40. | Global "From" Address
  41. |--------------------------------------------------------------------------
  42. |
  43. | You may wish for all e-mails sent by your application to be sent from
  44. | the same address. Here, you may specify a name and address that is
  45. | used globally for all e-mails that are sent by your application.
  46. |
  47. */
  48. 'from' => [
  49. 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
  50. 'name' => env('MAIL_FROM_NAME', 'Example'),
  51. ],
  52. /*
  53. |--------------------------------------------------------------------------
  54. | E-Mail Encryption Protocol
  55. |--------------------------------------------------------------------------
  56. |
  57. | Here you may specify the encryption protocol that should be used when
  58. | the application send e-mail messages. A sensible default using the
  59. | transport layer security protocol should provide great security.
  60. |
  61. */
  62. 'encryption' => env('MAIL_ENCRYPTION', 'tls'),
  63. /*
  64. |--------------------------------------------------------------------------
  65. | SMTP Server Username
  66. |--------------------------------------------------------------------------
  67. |
  68. | If your SMTP server requires a username for authentication, you should
  69. | set it here. This will get used to authenticate with your server on
  70. | connection. You may also set the "password" value below this one.
  71. |
  72. */
  73. 'username' => env('MAIL_USERNAME'),
  74. 'password' => env('MAIL_PASSWORD'),
  75. /*
  76. |--------------------------------------------------------------------------
  77. | Sendmail System Path
  78. |--------------------------------------------------------------------------
  79. |
  80. | When using the "sendmail" driver to send e-mails, we will need to know
  81. | the path to where Sendmail lives on this server. A default path has
  82. | been provided here, which will work well on most of your systems.
  83. |
  84. */
  85. 'sendmail' => '/usr/sbin/sendmail -bs',
  86. /*
  87. |--------------------------------------------------------------------------
  88. | Markdown Mail Settings
  89. |--------------------------------------------------------------------------
  90. |
  91. | If you are using Markdown based email rendering, you may configure your
  92. | theme and component paths here, allowing you to customize the design
  93. | of the emails. Or, you may simply stick with the Laravel defaults!
  94. |
  95. */
  96. 'markdown' => [
  97. 'theme' => 'default',
  98. 'paths' => [
  99. resource_path('views/vendor/mail'),
  100. ],
  101. ],
  102. 'stream' => [
  103. 'ssl' => [
  104. 'allow_self_signed' => true,
  105. 'verify_peer' => false,
  106. 'verify_peer_name' => false,
  107. ],
  108. ],
  109. ];

I did a dd($message->getFrom()) in send() in vendor\swiftmailer\lib\classes\Swift\Transport\AbstractSmtpTransport.php and the output shows an empty array.

I need help on how to solve it.
Thanks in advance for any assistance.

英文:

I'm making updates on a laravel-5.6 project that used the make:auth scaffolding. It is unable to send emails on password reset. I have made the required configs in the .env file but still unable to send emails.

.env file

  1. MAIL_DRIVER=smtp
  2. MAIL_HOST=smtp.mailtrap.io
  3. MAIL_PORT=2525
  4. MAIL_USERNAME=xxxxxx
  5. MAIL_PASSWORD=xxxxxx
  6. MAIL_FROM_ADDRESS=from@example.com
  7. MAIL_FROM_NAME=Example
  8. MAIL_ENCRYPTION=tls

config/mail.php file

  1. return [
  2. /*
  3. |--------------------------------------------------------------------------
  4. | Mail Driver
  5. |--------------------------------------------------------------------------
  6. |
  7. | Laravel supports both SMTP and PHP's "mail" function as drivers for the
  8. | sending of e-mail. You may specify which one you're using throughout
  9. | your application here. By default, Laravel is setup for SMTP mail.
  10. |
  11. | Supported: "smtp", "sendmail", "mailgun", "mandrill", "ses",
  12. | "sparkpost", "log", "array"
  13. |
  14. */
  15. 'driver' => env('MAIL_DRIVER', 'smtp'),
  16. /*
  17. |--------------------------------------------------------------------------
  18. | SMTP Host Address
  19. |--------------------------------------------------------------------------
  20. |
  21. | Here you may provide the host address of the SMTP server used by your
  22. | applications. A default option is provided that is compatible with
  23. | the Mailgun mail service which will provide reliable deliveries.
  24. |
  25. */
  26. 'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
  27. /*
  28. |--------------------------------------------------------------------------
  29. | SMTP Host Port
  30. |--------------------------------------------------------------------------
  31. |
  32. | This is the SMTP port used by your application to deliver e-mails to
  33. | users of the application. Like the host we have set this value to
  34. | stay compatible with the Mailgun e-mail application by default.
  35. |
  36. */
  37. 'port' => env('MAIL_PORT', 587),
  38. /*
  39. |--------------------------------------------------------------------------
  40. | Global "From" Address
  41. |--------------------------------------------------------------------------
  42. |
  43. | You may wish for all e-mails sent by your application to be sent from
  44. | the same address. Here, you may specify a name and address that is
  45. | used globally for all e-mails that are sent by your application.
  46. |
  47. */
  48. 'from' => [
  49. 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
  50. 'name' => env('MAIL_FROM_NAME', 'Example'),
  51. ],
  52. /*
  53. |--------------------------------------------------------------------------
  54. | E-Mail Encryption Protocol
  55. |--------------------------------------------------------------------------
  56. |
  57. | Here you may specify the encryption protocol that should be used when
  58. | the application send e-mail messages. A sensible default using the
  59. | transport layer security protocol should provide great security.
  60. |
  61. */
  62. 'encryption' => env('MAIL_ENCRYPTION', 'tls'),
  63. /*
  64. |--------------------------------------------------------------------------
  65. | SMTP Server Username
  66. |--------------------------------------------------------------------------
  67. |
  68. | If your SMTP server requires a username for authentication, you should
  69. | set it here. This will get used to authenticate with your server on
  70. | connection. You may also set the "password" value below this one.
  71. |
  72. */
  73. 'username' => env('MAIL_USERNAME'),
  74. 'password' => env('MAIL_PASSWORD'),
  75. /*
  76. |--------------------------------------------------------------------------
  77. | Sendmail System Path
  78. |--------------------------------------------------------------------------
  79. |
  80. | When using the "sendmail" driver to send e-mails, we will need to know
  81. | the path to where Sendmail lives on this server. A default path has
  82. | been provided here, which will work well on most of your systems.
  83. |
  84. */
  85. 'sendmail' => '/usr/sbin/sendmail -bs',
  86. /*
  87. |--------------------------------------------------------------------------
  88. | Markdown Mail Settings
  89. |--------------------------------------------------------------------------
  90. |
  91. | If you are using Markdown based email rendering, you may configure your
  92. | theme and component paths here, allowing you to customize the design
  93. | of the emails. Or, you may simply stick with the Laravel defaults!
  94. |
  95. */
  96. 'markdown' => [
  97. 'theme' => 'default',
  98. 'paths' => [
  99. resource_path('views/vendor/mail'),
  100. ],
  101. ],
  102. 'stream' => [
  103. 'ssl' => [
  104. 'allow_self_signed' => true,
  105. 'verify_peer' => false,
  106. 'verify_peer_name' => false,
  107. ],
  108. ],
  109. ];

I did a dd($message->getFrom()) in send() in vendor\swiftmailer\lib\classes\Swift\Transport\AbstractSmtpTransport.php and the output shows an empty array.

I need help on how to solve it.
Thanks in advance for any assistance.

答案1

得分: 4

尝试检查您的.env文件中的邮件设置,特别是MAIL_PORTMAIL_ENCRYPTION,如果这些设置不正确,可能会触发此错误。

注意: 如果您已经编辑了.env文件,并且正在使用"artisan"运行您的应用程序,您必须重新启动终端。(在Laravel ^8中,它会自动重启)

一旦您更新了.env文件,请确保使用以下命令清除缓存:

  1. php artisan config:clear
  2. php artisan cache:clear
  3. php artisan config:cache

您是否在使用mailtrap?

英文:

Try checking your mail settings in .env, specifically the MAIL_PORT and MAIL_ENCRYPTION, if those are wrong it may possibly trigger this error.

Note: Check if you've edited .env file, you have to restart the terminal if you're using "artisan" to run your application. (In Laravel ^8 it restarts automatically)

Once you have updated your .env make sure you clear the cache with:

  1. php artisan config:clear
  2. php artisan cache:clear
  3. php artisan config:cache

Are you using mailtrap?

答案2

得分: 0

I found the AppServiceProvider.phpboot() 已被设置为覆盖应用程序设置中的邮件配置。因此,它不会加载 .env 文件中找到的邮件配置,而是从应用程序设置中加载。

英文:

I found the AppServiceProvider.php's boot() has been set to override the mail configs within the application settings. So it doesn't load the mail configs found in the .env file but rather from the application settings.

huangapple
  • 本文由 发表于 2020年1月6日 15:54:24
  • 转载请务必保留本文链接:https://go.coder-hub.com/59608485.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定