首页 > 解决方案 > 无法发送没有发件人地址的消息laravel中的错误

问题描述

我正在尝试发送原始邮件,但我收到一个错误“没有发件人地址就无法发送邮件”,而且我似乎看不出哪里出错了。我已经在 .env 文件中提供了发件人电子邮件,但它仍然出现该错误

我的控制器!

  <?php
    
    namespace App\Http\Controllers\User;
    
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\Mail;
    
    
    class ContactController extends Controller
    {
        public function show()
        {
            return view('user.contact');
        }
    
        public function store()
        {
            request()->validate(['email' => 'required|email']);
            Mail::raw('it works', function ($message) {
                $message->to(request('email'))
                    ->subject('Hi There');
            });
            return redirect()->back();
        }
    
    }

我的 .env 文件

MAIL_MAILER=log
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=admin@example.com
MAIL_FROM_NAME="${APP_NAME}"

我的 mail.php 文件

  <?php
    
    return [
    
       
    
        'mailers' => [
            'smtp' => [
                'transport' => 'smtp',
                'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
                'port' => env('MAIL_PORT', 587),
                'encryption' => env('MAIL_ENCRYPTION', 'tls'),
                'username' => env('MAIL_USERNAME'),
                'password' => env('MAIL_PASSWORD'),
                'timeout' => null,
                'auth_mode' => null,
            ],
    
            'ses' => [
                'transport' => 'ses',
            ],
    
            'mailgun' => [
                'transport' => 'mailgun',
            ],
    
            'postmark' => [
                'transport' => 'postmark',
            ],
    
            'sendmail' => [
                'transport' => 'sendmail',
                'path' => '/usr/sbin/sendmail -bs',
            ],
    
            'log' => [
                'transport' => 'log',
                'channel' => env('MAIL_LOG_CHANNEL'),
            ],



      'array' => [
            'transport' => 'array',
        ],
    ],

  
    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],

];

我的表格!

 <form action="{{ route('contact')}}" method="post">
     @csrf
    
     <div class="form-group">
         <label>E-mail</label>
         <input type="email" name="email" class="form-control">
         @error('email')
         <p style="color: red; font-size: 15px; margin-top: 5px">{{ $message }}</p>
         @enderror
     </div>
    
    
     <button type="submit" class="btn btn-primary">Submit</button>
    </form>

我正在尝试发送原始邮件,但出现错误

没有发件人地址无法发送邮件

而且我似乎没有看到我要去哪里错了。我已经在 .env 文件中提供了发件人电子邮件,但它仍然出现该错误

标签: laravelemail

解决方案


试试这个,它应该工作:

public function store(Request $request)
{

    $this->validate($request, [
        'email' => 'required|email'
    ]);

    $email = $request->email;

    $data = [
            'email'    => $request->email,
        ];

    Mail::send('mail', $data, function ($message) use ($email) {
        $message->to('myemail@gmail.com', 'Email Title')->subject('Test Subject 2');
        $message->from($email, "Sender Name");
    });
    echo "HTML Email Sent. Check your inbox.";
}

推荐阅读