{"id":901,"date":"2025-06-12T02:22:42","date_gmt":"2025-06-11T18:22:42","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/901.html"},"modified":"2025-06-12T02:22:42","modified_gmt":"2025-06-11T18:22:42","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8-laravel-%e4%b8%ad%e4%bd%bf%e7%94%a8-sendgrid-%e5%8f%91%e9%80%81%e7%94%b5%e5%ad%90%e9%82%ae%e4%bb%b6","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/901.html","title":{"rendered":"\u5982\u4f55\u5728 Laravel \u4e2d\u4f7f\u7528 SendGrid \u53d1\u9001\u7535\u5b50\u90ae\u4ef6"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312; Laravel &#20013;&#20351;&#29992; SendGrid &#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#38750;&#24120;&#31616;&#21333;&#12290;&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#30830;&#20445;&#20320;&#30340;&#39033;&#30446;&#24050;&#32463;&#23433;&#35013;&#20102; SendGrid &#30340; PHP &#23458;&#25143;&#31471;&#24211;&#12290;&#20320;&#21487;&#20197;&#36890;&#36807; Composer &#26469;&#23433;&#35013;&#36825;&#20010;&#24211;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer require sendgrid\/sendgrid-php<\/code><\/pre>\n<p>&#25509;&#19979;&#26469;&#65292;&#20320;&#21487;&#20197;&#22312;&#20320;&#30340;&#25511;&#21046;&#22120;&#25110;&#26381;&#21153;&#31867;&#20013;&#20351;&#29992;&#20197;&#19979;&#20195;&#30721;&#26469;&#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#65306;<\/p>\n<pre><code class=\"language-php\">use IlluminateSupportFacadesMail;\nuse SendGridMailMailMessage;\n\npublic function sendEmail()\n{\n    $message = (new MailMessage)\n        -&gt;from('your-email@example.com', 'Your Name')\n        -&gt;to('recipient-email@example.com')\n        -&gt;subject('Test Email from Laravel with SendGrid')\n        -&gt;body('This is a test email sent from Laravel using the SendGrid service.');\n\n    try {\n        Mail::send($message);\n        echo \"Email sent successfully!\";\n    } catch (Exception $e) {\n        echo \"Failed to send email: \" . $e-&gt;getMessage();\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65292;&#25105;&#20204;&#21019;&#24314;&#20102;&#19968;&#20010; <code>MailMessage<\/code> &#23545;&#35937;&#65292;&#24182;&#35774;&#32622;&#20102;&#37038;&#20214;&#30340;&#21457;&#20214;&#20154;&#12289;&#25910;&#20214;&#20154;&#12289;&#20027;&#39064;&#21644;&#27491;&#25991;&#12290;&#28982;&#21518;&#65292;&#25105;&#20204;&#20351;&#29992; <code>Mail::send<\/code> &#26041;&#27861;&#23558;&#28040;&#24687;&#21457;&#36865;&#21040;&#25351;&#23450;&#30340;&#37038;&#31665;&#12290;<\/p>\n<p>&#22914;&#26524;&#20320;&#38656;&#35201;&#26356;&#22810;&#30340;&#37197;&#32622;&#36873;&#39033;&#65292;&#27604;&#22914;&#20351;&#29992;&#19981;&#21516;&#30340; SMTP &#26381;&#21153;&#22120;&#25110;&#35774;&#32622;&#35748;&#35777;&#20449;&#24687;&#65292;&#20320;&#21487;&#20197;&#22312; <code>config\/mail.php<\/code> &#25991;&#20214;&#20013;&#36827;&#34892;&#30456;&#24212;&#30340;&#37197;&#32622;&#12290;&#20363;&#22914;&#65292;&#20320;&#21487;&#20197;&#28155;&#21152;&#19968;&#20010;&#26032;&#30340; SMTP &#37197;&#32622;&#39033;&#65306;<\/p>\n<pre><code class=\"language-php\">'mail' =&gt; [\n    'driver' =&gt; 'smtp',\n    'host' =&gt; env('MAIL_HOST', 'smtp.sendgrid.net'),\n    'port' =&gt; env('MAIL_PORT', 587),\n    'username' =&gt; env('MAIL_USERNAME', 'your-sendgrid-api-key'),\n    'password' =&gt; env('MAIL_PASSWORD', ''),\n    'encryption' =&gt; env('MAIL_ENCRYPTION', 'tls'),\n],<\/code><\/pre>\n<p>&#36825;&#26679;&#65292;&#20320;&#23601;&#21487;&#20197;&#22312; Laravel &#20013;&#20351;&#29992; SendGrid &#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#20102;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#20171;&#32461;<\/h2><p>&#22312;&#26500;&#24314;Web&#24212;&#29992;&#26102;&#65292;&#36890;&#24120;&#38656;&#35201;&#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#12290;Laravel&#25552;&#20379;&#20102;&#19968;&#20010;&#31616;&#27905;&#12289;&#31616;&#21333;&#30340;API&#65292;&#36890;&#36807;&#27969;&#34892;&#30340;SwiftMailer&#24211;&#23454;&#29616;&#65292;&#20294;&#20063;&#21487;&#20197;&#20351;&#29992;&#20854;&#20182;&#37038;&#20214;&#21457;&#36865;&#26381;&#21153;&#22914;SendGrid&#12290;&#22312;&#36825;&#31687;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#25506;&#32034;&#22914;&#20309;&#23558;SendGrid&#38598;&#25104;&#21040;Laravel&#24212;&#29992;&#31243;&#24207;&#20013;&#20197;&#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#12290;&#25105;&#20204;&#23558;&#20171;&#32461;&#24517;&#35201;&#30340;&#21253;&#30340;&#23433;&#35013;&#12289;&#35774;&#32622;SendGrid&#19982;Laravel&#65292;&#24182;&#28085;&#30422;&#20351;&#29992;&#27492;&#26381;&#21153;&#30340;&#21508;&#31181;&#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#30340;&#26041;&#27861;&#12290;<\/p><h2>&#35774;&#32622;SendGrid<\/h2><p>&#39318;&#20808;&#65292;&#24744;&#38656;&#35201;&#27880;&#20876;&#19968;&#20010;SendGrid&#36134;&#25143;&#12290;&#23436;&#25104;&#27492;&#25805;&#20316;&#21518;&#65292;&#21019;&#24314;&#19968;&#20010;&#20855;&#26377;&ldquo;&#37038;&#20214;&#21457;&#36865;&rdquo;&#21151;&#33021;&#30340;API&#23494;&#38053;&#12290;&#35831;&#30830;&#20445;&#23433;&#20840;&#20445;&#31649;&#24744;&#30340;API&#23494;&#38053;&#65292;&#22240;&#20026;&#35813;&#23494;&#38053;&#23558;&#22312;Laravel&#24212;&#29992;&#31243;&#24207;&#20013;&#29992;&#20110;&#25480;&#26435;&#30005;&#23376;&#37038;&#20214;&#21457;&#36865;&#12290;<\/p><h2>&#22312;Laravel&#20013;&#23433;&#35013;SendGrid&#20381;&#36182;&#39033;&#12290;<\/h2><p>Laravel &#20351;&#29992; Swiftmailer &#24211;&#65292;&#20294;&#20320;&#21487;&#20197;&#36890;&#36807;&#28155;&#21152;&#33258;&#23450;&#20041;&#37038;&#20214;&#39537;&#21160;&#26469;&#20351;&#29992; SendGrid&#12290;&#39318;&#20808;&#65292;&#36890;&#36807; Composer &#23433;&#35013; SendGrid PHP &#24211;&#65306;<\/p><pre><code>composer require sendgrid\/sendgrid<\/code><\/pre><p>&#22312;&#23433;&#35013;&#23436;&#22270;&#20070;&#39302;&#21518;&#65292;&#19979;&#19968;&#27493;&#26159;&#35774;&#32622;&#37038;&#20214;&#39537;&#21160;&#37197;&#32622;&#12290;&#25171;&#24320;<code>.env<\/code>&#35774;&#32622;&#24182;&#26356;&#26032;&#37038;&#20214;&#35774;&#32622;&#65306;<\/p><pre><code>MAIL_MAILER=smtp\nMAIL_HOST=smtp.sendgrid.net\nMAIL_PORT=587\nMAIL_USERNAME=apikey\nMAIL_PASSWORD=your-sendgrid-api-key\nMAIL_ENCRYPTION=tls\n[email&nbsp;protected]\nMAIL_FROM_NAME=\"Example App\"<\/code><\/pre><h2>&#27491;&#22312;&#32763;&#35793;&#65292;&#35831;&#31245;&#31561;&#8230;\n&#21457;&#36865;&#22522;&#26412;&#37038;&#20214;<\/h2><p>&#35201;&#21457;&#36865;&#19968;&#26465;&#31616;&#21333;&#30340;&#25991;&#26412;&#37038;&#20214;&#65292;&#35831;&#20351;&#29992;Laravel&#12290;<code>Mail<\/code>Facade. &#20197;&#19979;&#26159;&#19968;&#20010;&#20351;&#29992;Mailer&#31867;&#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#30340;&#22522;&#26412;&#31034;&#20363;&#65306;<\/p><pre><code>use IlluminateSupportFacadesMail;\nuse AppMailWelcomeEmail;\n\nMail::to('[email&nbsp;protected]')-&gt;send(new WelcomeEmail());<\/code><\/pre><p>&#35831;&#25552;&#20379;&#20855;&#20307;&#20869;&#23481;&#65292;&#25105;&#20250;&#23558;&#20854;&#32763;&#35793;&#25104;&#20013;&#25991;&#12290;<code>WelcomeEmail<\/code>Mailable &#31867;&#21487;&#33021;&#30475;&#36215;&#26469;&#20687;&#36825;&#26679;&#65306;<\/p><pre><code>namespace AppMail;\n\nuse IlluminateMailMailable;\n\nclass WelcomeEmail extends Mailable\n{\n    public function build()\n    {\n        return $this-&gt;subject('Welcome to Our Application')-&gt;view('emails.welcome');\n    }\n}<\/code><\/pre><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#26080;&#27861;&#29702;&#35299;&#36825;&#21477;&#35805;&#30340;&#19978;&#19979;&#25991;&#12290;&#35831;&#37325;&#26032;&#25551;&#36848;&#24744;&#30340;&#38382;&#39064;&#25110;&#21477;&#23376;&#65292;&#25105;&#20250;&#23613;&#21147;&#24110;&#21161;&#24744;&#12290;<code>resources\/views\/emails\/welcome.blade.php<\/code>&#20320;&#21487;&#20197;&#23450;&#20041;&#20320;&#30340;HTML&#30005;&#23376;&#37038;&#20214;&#27169;&#26495;&#12290;<\/p><h2>&#39640;&#32423;&#29992;&#27861;&#65306;&#20351;&#29992;&#38468;&#20214;&#21457;&#36865;&#30005;&#23376;&#37038;&#20214;<\/h2><p>&#22914;&#26524;&#20320;&#24819;&#22312;&#30005;&#23376;&#37038;&#20214;&#20013;&#38468;&#24102;&#38468;&#20214;&#65292;&#35831;&#21482;&#38656;&#20687;&#24448;&#24120;&#19968;&#26679;&#21457;&#36865;&#21363;&#21487;&#12290;&#26356;&#26032;Mailable&#31867;&#20197;&#21253;&#21547;&#35843;&#29992;&#30340;&#26041;&#27861;&#12290;<code>attach<\/code>&#26041;&#27861;&#65306;<\/p><pre><code>public function build()\n{\n    return $this-&gt;subject('Subject Here')-&gt;view('emails.your-view')-&gt;attach('\/path\/to\/file');<\/code><\/pre><h2>&#20351;&#29992;SendGrid&#30340;Web API&#21457;&#36865;&#30005;&#23376;&#37038;&#20214;<\/h2><p>&#22312;&#26576;&#20123;&#24773;&#20917;&#19979;&#65292;&#24744;&#21487;&#33021;&#24076;&#26395;&#20351;&#29992;SendGrid&#30340;Web API&#32780;&#19981;&#26159;SMTP&#21327;&#35758;&#12290;&#39318;&#20808;&#65292;&#24744;&#38656;&#35201;&#23433;&#35013;Laravel&#20351;&#29992;&#30340;Guzzle HTTP&#24211;&#20013;&#30340;Guzzle HTTP&#23458;&#25143;&#31471;&#65306;<\/p><pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre><p>&#28982;&#21518;&#65292;&#20320;&#21487;&#20197;&#20687;&#36825;&#26679;&#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#65306;<\/p><pre><code>use IlluminateSupportFacadesHttp;\n\n$response = Http::withHeaders([\n    'Authorization' =&gt; 'Bearer Your-SendGrid-API-Key',\n    'Content-Type' =&gt; 'application\/json'\n])-&gt;post('https:\/\/api.sendgrid.com\/v3\/mail\/send', [\n    'personalizations' =&gt; [[\n        'to' =&gt; [['email' =&gt; '[email&nbsp;protected]']],\n        'subject' =&gt; 'Hello World from the SendGrid API!'\n    ]],\n    'from' =&gt; ['email' =&gt; '[email&nbsp;protected]'],\n    'content' =&gt; [['type' =&gt; 'text\/plain', 'value' =&gt; 'Hello, world!']]\n]);\n\nif ($response-&gt;successful()) {\n    echo 'Email sent successfully.';\n} else {\n    echo 'Failed to send email - '. $response-&gt;body();\n}<\/code><\/pre><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#24744;&#24050;&#23398;&#20064;&#22914;&#20309;&#20351;&#29992;SendGrid&#22312;Laravel&#24212;&#29992;&#31243;&#24207;&#20013;&#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#12290;&#25353;&#29031;&#36825;&#20123;&#27493;&#39588;&#25805;&#20316;&#21518;&#65292;&#24744;&#21487;&#20197;&#20026;&#24744;&#30340;Laravel&#39033;&#30446;&#23454;&#29616;&#19968;&#20010;&#39640;&#25928;&#19988;&#24378;&#22823;&#30340;&#37038;&#20214;&#20132;&#20184;&#26381;&#21153;&#65292;&#35813;&#26381;&#21153;&#26131;&#20110;&#24320;&#21457;&#20154;&#21592;&#20351;&#29992;&#12290;&#19982;Laravel&#21644;SendGrid&#30456;&#20851;&#30340;&#26426;&#36935;&#38750;&#24120;&#24191;&#27867;&#65292;&#20026;&#24744;&#25552;&#20379;&#21019;&#24314;&#22797;&#26434;&#30005;&#23376;&#37038;&#20214;&#21151;&#33021;&#25152;&#38656;&#30340;&#24037;&#20855;&#65292;&#32780;&#26080;&#38656;&#20184;&#20986;&#22826;&#22810;&#21162;&#21147;&#12290;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312; Laravel &#20013;&#20351;&#29992; SendGrid &#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#38750;&#24120;&#31616;&#21333;&#65292;&#21482;&#38656;&#36981;&#24490;&#20197;&#19979;&#27493;&#39588;&#65306;<\/p>\n<h3>&#27493;&#39588; 1: &#23433;&#35013; SendGrid<\/h3>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102; SendGrid &#30340; PHP &#39537;&#21160;&#31243;&#24207;&#12290;&#20320;&#21487;&#20197;&#36890;&#36807; Composer &#26469;&#36731;&#26494;&#22320;&#23436;&#25104;&#36825;&#20010;&#36807;&#31243;&#12290;<\/p>\n<pre><code class=\"language-bash\">composer require sendgrid\/sendgrid-laravel<\/code><\/pre>\n<h3>&#27493;&#39588; 2: &#21019;&#24314; SendGrid API &#23494;&#38053;<\/h3>\n<p>&#20320;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010; SendGrid API &#23494;&#38053;&#26469;&#35775;&#38382;&#20182;&#20204;&#30340;&#26381;&#21153;&#12290;&#36825;&#21487;&#20197;&#36890;&#36807;&#30331;&#24405;&#21040; SendGrid &#32593;&#31449;&#65288;<a href=\"https:\/\/www.zhaozhao123.cn\/skin\/go?url=aHR0cHM6Ly9zZW5kZ3JpZC5jb20lRUYlQkMlODklRTUlQjklQjYlRTUlODglOUIlRTUlQkIlQkElRTQlQjglODAlRTQlQjglQUElRTYlOTYlQjAlRTclOUElODQlRTklQTElQjklRTclOUIlQUUlRTYlOUQlQTUlRTUlQUUlOUUlRTclOEUlQjAlRTMlODAlODIlRTQlQjglODAlRTYlOTclQTYlRTUlODglOUIlRTUlQkIlQkElRTUlQTUlQkQlRTUlQUYlODYlRTklOTIlQTUlRUYlQkMlOEMlRTQlQkQlQTAlRTUlOEYlQUYlRTQlQkIlQTUlRTUlQjAlODYlRTUlODUlQjYlRTYlQjclQkIlRTUlOEElQTAlRTUlODglQjA=\" rel=\"noopener noreferrer nofollow\"><a href=\"https:\/\/www.zhaozhao123.cn\/skin\/go?url=aHR0cHM6Ly9zZW5kZ3JpZC5jb20mIzY1Mjg5OyYjMjQxODI7JiMyMTAxOTsmIzI0MzE0OyYjMTk5Njg7JiMyMDAxMDsmIzI2MDMyOyYjMzAzNDA7JiMzOTAzMzsmIzMwNDQ2OyYjMjY0Njk7JiMyMzQ1NDsmIzI5NjE2OyYjMTIyOTA7JiMxOTk2ODsmIzI2MDg2OyYjMjEwMTk7JiMyNDMxNDsmIzIyOTA5OyYjMjM0OTQ7JiMzODA1MzsmIzY1MjkyOyYjMjAzMjA7JiMyMTQ4NzsmIzIwMTk3OyYjMjM1NTg7JiMyMDg1NDsmIzI4MTU1OyYjMjExNTI7JiMwMzg7IzIxMDQw\" rel=\"noopener noreferrer nofollow\" rel=\"nofollow\">https:\/\/sendgrid.com&#65289;&#24182;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#39033;&#30446;&#26469;&#23454;&#29616;&#12290;&#19968;&#26086;&#21019;&#24314;&#22909;&#23494;&#38053;&#65292;&#20320;&#21487;&#20197;&#23558;&#20854;&#28155;&#21152;&#038;#21040<\/a>;<\/a> Laravel &#24212;&#29992;&#30340;&#29615;&#22659;&#37197;&#32622;&#25991;&#20214;&#20013;&#12290;<\/p>\n<h3>&#27493;&#39588; 3: &#20351;&#29992; SendGrid &#21457;&#36865;&#37038;&#20214;<\/h3>\n<p>&#29616;&#22312;&#65292;&#20320;&#21487;&#20197;&#22312; Laravel &#24212;&#29992;&#20013;&#20351;&#29992; SendGrid &#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#20102;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#23558; SendGrid &#25554;&#20214;&#28155;&#21152;&#21040; Laravel &#27169;&#26495;&#24341;&#25806;&#20013;&#30340;&#31034;&#20363;&#20195;&#30721;&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ app\/Providers\/AppServiceProvider.php\nnamespace AppProviders;\n\nuse IlluminateSupportServiceProvider;\nuse IlluminateViewView;\n\nclass AppServiceProvider extends ServiceProvider\n{\n    public function boot()\n    {\n        View::composer('*', function ($view) {\n            $view-&gt;with('api_key', env('SENDGRID_API_KEY'));\n        });\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#20026; Laravel &#27169;&#26495;&#24341;&#25806;&#28155;&#21152;&#20102;&#19968;&#20010;&#35270;&#22270;&#22788;&#29702;&#22120;&#65292;&#23427;&#20250;&#22312;&#25152;&#26377;&#30340;&#35270;&#22270;&#27169;&#26495;&#20013;&#25628;&#32034; &#8216;api_key&#8217; &#21442;&#25968;&#65292;&#24182;&#26367;&#25442;&#20026;&#24403;&#21069;&#24212;&#29992;&#30340; SENDGRID_API_KEY &#20540;&#12290;<\/p>\n<h3>&#31034;&#20363;&#20195;&#30721;&#65306;&#21457;&#36865;&#27979;&#35797;&#37038;&#20214;<\/h3>\n<p>&#20551;&#35774;&#20320;&#24819;&#21457;&#36865;&#19968;&#23553;&#24102;&#26377;&#38468;&#20214;&#30340;&#37038;&#20214;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#31034;&#20363;&#65306;<\/p>\n<pre><code class=\"language-php\">public function sendEmail($email, $subject, $message)\n{\n    $config = [\n        'sender_email' =&gt; env('SENDGRID_SENDER_EMAIL'),\n        'sender_name' =&gt; env('SENDGRID_SENDER_NAME'),\n        'password' =&gt; env('SENDGRID_PASSWORD'),\n        'from_name' =&gt; env('SENDGRID_FROM_NAME'),\n        'from_email' =&gt; env('SENDGRID_FROM_EMAIL'),\n        'to_email' =&gt; $email,\n        'subject' =&gt; $subject,\n        'html_message' =&gt; $message,\n        'attachment' =&gt; ['path_to_attachment.csv'],\n    ];\n\n    $client = new SendGridClient($config);\n\n    try {\n        $response = $client-&gt;sendEmail();\n\n        if ($response-&gt;statusCode == 200) {\n            return response()-&gt;json(['status' =&gt; true]);\n        } else {\n            return response()-&gt;json(['status' =&gt; false, 'error' =&gt; $response-&gt;body]);\n        }\n    } catch (Exception $e) {\n        return response()-&gt;json(['status' =&gt; false, 'error' =&gt; $e-&gt;getMessage()]);\n    }\n}<\/code><\/pre>\n<p>&#36825;&#27573;&#20195;&#30721;&#23450;&#20041;&#20102;&#19968;&#20010;&#21517;&#20026; <code>sendEmail<\/code> &#30340;&#20989;&#25968;&#65292;&#29992;&#20110;&#21521;&#25351;&#23450;&#30340;&#25910;&#20214;&#20154;&#21457;&#36865;&#24102;&#26377;&#38468;&#20214;&#30340;&#37038;&#20214;&#12290;&#20320;&#38656;&#35201;&#26681;&#25454;&#23454;&#38469;&#24773;&#20917;&#20462;&#25913; <code>config<\/code> &#25968;&#32452;&#20013;&#30340;&#20540;&#65292;&#22914; <code>FROM_EMAIL<\/code>, <code>FROM_NAME<\/code>, <code>API_KEY<\/code>, <code>PASSWORD<\/code>, <code>TO_EMAIL<\/code>, <code>SUBJECT<\/code>, <code>HTML_MESSAGE<\/code>, &#21644; <code>ATTACHMENT<\/code>.<\/p>\n<p>&#27880;&#24847;&#65306;&#22312;&#23454;&#38469;&#29983;&#20135;&#29615;&#22659;&#20013;&#65292;&#35831;&#30830;&#20445;&#23433;&#20840;&#22320;&#22788;&#29702;&#21644;&#23384;&#20648;&#25935;&#24863;&#20449;&#24687;&#65292;&#21253;&#25324; API &#23494;&#38053;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22312; Laravel &#20013;&#20351;&#29992; SendGrid &#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#38750;&#24120;&#31616;&#21333;&#038;..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-901","my1js","type-my1js","status-publish","hentry","my1js2nav-laravel"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/901","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=901"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=901"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=901"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}