首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉拉维尔-发送邮件不工作,修补悬挂时,试图使用sendmail在Windows上通过萨拉贡

拉拉维尔-发送邮件不工作,修补悬挂时,试图使用sendmail在Windows上通过萨拉贡
EN

Stack Overflow用户
提问于 2022-02-21 20:45:47
回答 2查看 723关注 0票数 1

事实上,我发现了一个问题:萨拉贡和拉拉维尔- sendmail不起作用 .但我决定发布一个详细的新问题,以得到一个答复,这个问题可能是一个拉拉虫.谢谢。

  • 操作系统: Windows 10
  • Laravel版本: 8.75
  • PHP版本: 7.4.27
  • 数据库驱动程序和版本: sqlite

描述:

我试着让sendmail (萨拉贡)开始工作,但没有运气。文件'.env‘被调整为使用sendmail而不是smtp在一个新的拉拉项目。

复制步骤:

  • 创建新的laravel项目laravel new test
  • 调整后的.env文件:
代码语言:javascript
复制
MAIL_MAILER=sendmail
MAIL_SENDMAIL_PATH='C:\LARAGON\bin\sendmail\sendmail.exe -bs' 
  • 运行命令:php artisan tinker
  • 运行tinker命令:Mail::raw('Hello World!', function($msg) {$msg->to('mail@example.com')->subject('Test Email'); });

运行了tinker命令之后,cmd就挂起了.

还在sendmail标志上尝试了不同的选项:

  • sendmail.exe -t -i <<<修补器挂
  • sendmail.exe -t <<<修补器挂
  • sendmail.exe -bs <<<修补器挂

我可以看到sendmail.exe正在运行(在任务管理器中),但似乎无法完成(等待了几分钟)。取消(CTRL-c)将关闭修补程序会话并终止sendmail.exe列表。

与其他php内置邮件功能,拉拉贡工作良好,也成功地捕获邮件文件夹中发送的邮件。

每次更改.env文件后,我总是试图清除配置缓存。php artisan config:clear

通过php发送邮件就像预期的那样,可以使用以下代码:

代码语言:javascript
复制
<html>
   
   <head>
      <title>Sending HTML email using PHP</title>
   </head>
   
   <body>
      
      <?php
         $to = "xyz@somedomain.com";
         $subject = "This is subject";
         
         $message = "<b>This is HTML message.</b>";
         $message .= "<h1>This is headline.</h1>";
         
         $header = "From:abc@somedomain.com \r\n";
         $header .= "Cc:afgh@somedomain.com \r\n";
         $header .= "MIME-Version: 1.0\r\n";
         $header .= "Content-type: text/html\r\n";
         
         $retval = mail ($to,$subject,$message,$header);
         
         if( $retval == true ) {
            echo "Message sent successfully...";
         }else {
            echo "Message could not be sent...";
         }
      ?>
      
   </body>
</html>

任何帮助都很感激。

EN

回答 2

Stack Overflow用户

发布于 2022-02-21 20:53:15

通常,当sendmail出现身份验证问题时,就会发生这种情况。

确保按照拉拉贡文件的建议使用gmail凭据安装了sendmail

此外,gmail默认禁用“安全性较低的应用程序”。确保您的帐户在这里也启用了不太安全的应用程序(或者更好的是,使用特定于应用程序的密码):https://myaccount.google.com/lesssecureapps

票数 1
EN

Stack Overflow用户

发布于 2022-02-22 01:36:16

输出phpinfo()并检查在sendmail_path上是否有确切的位置定义

您还需要在config/mail.php中定义它,就像

代码语言:javascript
复制
'sendmail' => [
    'transport' => 'sendmail',
    'path' => '/usr/sbin/sendmail -bs',
],

或从.env文件MAIL_SENDMAIL_PATH中提取值。

代码语言:javascript
复制
'path' => env('MAIL_SENDMAIL_PATH')

此外,您可以尝试在您的smtp文件中使用带有localhost信息的.env驱动程序,您也可以在phpinfo()中看到这些细节。

代码语言:javascript
复制
MAIL_DRIVER=smtp
MAIL_HOST=localhost
MAIL_PORT=25
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=null

尝试创建发送电子邮件或转储错误的路由。

代码语言:javascript
复制
Route::get('/test-mail', function () {
    try {
        $send = \Illuminate\Support\Facades\Mail::mailer('sendmail')->send([], [], function ($message)  {
            $message
                ->to('to@email.com')
                ->from('from@email.com', 'Test')
                ->subject( 'My Subject' )
                ->setBody('Test Content', 'text/html');
        });
        dd($send);
    } catch (\Exception $e )  {
        throw new \Exception( $e->getMessage() );
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71212826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档