应用程序没有问题,我不更改配置。 一个月后,我尝试了程序出错。
错误讯息:
StreamBuffer.php第269行中的Swift_TransportException:连接 无法与主机smtp.gmail.com建立[#0]
env的这个配置:
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',
];
请帮助,非常感谢。
答案 0 :(得分:2)
您可以使用sendgrid。它非常简单。
<强> 步骤1: 强> 将SendGrid添加到 composer.json
"require":
{
"sendgrid/sendgrid": "~6.0"
}
<强> 步骤2: 强>
<。>在.env文件中设置你的sendgrid api密钥SENDGRID_API_KEY= Your Sendgrid API key
<强> 步骤-3: 强>
在控制器中添加以下代码
$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]);
为了更好地理解,请点击以下链接
https://github.com/sendgrid/sendgrid-php
答案 1 :(得分:0)
尝试更改encryption
文件中的port
和.env
:
MAIL_ENCRYPTION=tls
MAIL_PORT=587
然后运行:
$php artisan config:clear
或者,如果这不起作用,请尝试下面的黑客攻击:
在第263行的_establishSocketConnection()
中将以下行添加到Swift/Transport/StreamBuffer.php
方法:
$options['ssl']['verify_peer'] = FALSE;
$options['ssl']['verify_peer_name'] = FALSE;
注意: 上面指定的hack只是一种解决方法,可以在Swift
包更新时随时覆盖。因此,如果您尝试使用此方法,请记住这一点。
答案 2 :(得分:0)
尝试使用mailgun
。在这里,我发布了使用它的步骤:
第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”
替换为您自己的文件。< / p>
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
那就是它!希望这会对你有所帮助!