如何使用 laravel 发送电子邮件?

How to send email with laravel?

应用没有问题,我不改配置。 一个月后我尝试程序出错。

错误信息:

Swift_TransportException in StreamBuffer.php line 269: Connection could not be established with host smtp.gmail.com [ #0]

环境配置:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=mr.xxxxxxx@gmail.com
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=ssl

mail.php的配置:

<?php
return [

'driver' => env('MAIL_DRIVER', 'smtp'),

'host' => env('MAIL_HOST', 'smtp.gmail.com'),

'port' => env('MAIL_PORT', 465),

'from' => ['address' => 'muhamadramadhan95@gmail.com', 'name' => 'Ramadhan'],

'encryption' => env('MAIL_ENCRYPTION', 'ssl'),

'username' => env('MAIL_USERNAME'),

'password' => env('MAIL_PASSWORD'),

'sendmail' => '/usr/sbin/sendmail -bs',

];

请帮忙,非常感谢

尝试更改 .env 文件中的 encryptionport

MAIL_ENCRYPTION=tls
MAIL_PORT=587

然后运行:

$php artisan config:clear

或者,如果这也不起作用,请尝试以下破解方法:

在第 263 行 Swift/Transport/StreamBuffer.php 中的 _establishSocketConnection() 方法中添加以下行:

$options['ssl']['verify_peer'] = FALSE;

$options['ssl']['verify_peer_name'] = FALSE;

注意: 上面指定的 hack 只是一种解决方法,可以在 Swift 包更新时随时覆盖。因此,如果您尝试使用此方法,请记住这一点。

尝试使用 mailgun。我在这里 post 使用它的步骤:

第 1 步: 获取 Mailgun API、注册 Mailgun、添加您的域

步骤 2: 配置 Laravel 应用程序

在您的 config/services.php 文件中,添加以下内容:

'mailgun' => [
    'domain' => env('MAILGUN_DOMAIN'),
    'secret' => env('MAILGUN_SECRET'),
],

接下来,您需要转到 .env 文件,并将 “MAIL_USERNAME”“MAIL_PASSWORD”“MAILGUN_DOMAIN”“MAILGUN_SECRET” 替换为您自己的文件.

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=2525
MAIL_USERNAME=postmaster@yourdomain.com
MAIL_PASSWORD=yourmailgunpassword
MAIL_ENCRYPTION=null

MAILGUN_DOMAIN=yourdomain.com
MAILGUN_SECRET=key-YourMailGunSecret

最后一步,在同一个文件中,您还需要添加并替换为您自己的值:

MAIL_FROM_ADDRESS: hello@yourdomain.com
MAIL_FROM_NAME: John

就是这样!希望对您有所帮助!

您可以使用 sendgrid。很简单。

第一步: 将 SendGrid 添加到您的 composer.json

"require":  
{ 
"sendgrid/sendgrid": "~6.0"
}

第二步:

在 .env 文件中设置你的 sendgrid api key

SENDGRID_API_KEY= Your Sendgrid API key 

第三步:

在您的控制器中添加以下代码

$from = new \SendGrid\Email(null, "your email id");//place senders email id
                        $subject = "checking Email service"; //*your subject goes here*
                        $to = new \SendGrid\Email("Example User", 'example@gmail.com');  //*place reciever email id*
                        $content = new \SendGrid\Content("text/html", $otp);
                        $mail = new \SendGrid\Mail($from, $subject, $to, $content);

                        $apiKey = env('SENDGRID_API_KEY');// set in .env file
                        $sg = new \SendGrid($apiKey);

                        $response = $sg->client->mail()->send()->post($mail);
                        return json_encode(['code' => 200, 'status' => 'Success', 'message' => 'mail sent Sucessfully]);

为了更好地理解下面的内容link

https://github.com/sendgrid/sendgrid-php