<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Laravel With MailGun]]></title><description><![CDATA[Laravel With MailGun]]></description><link>https://jalisdev.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 11:57:02 GMT</lastBuildDate><atom:link href="https://jalisdev.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How to Set Up Mailgun for Sending Emails in Laravel 11]]></title><description><![CDATA[Step 1 :
Mailgun Quick Setup

Sign Up: Go to mailgun.com and create an account.
Verify: Confirm your email and phone.
Add Domain: In Sending > Domains, add your domain or use sandbox.
DNS Setup: Add Mailgun's DNS records to your domain host and wait ...]]></description><link>https://jalisdev.hashnode.dev/how-to-set-up-mailgun-for-sending-emails-in-laravel-11</link><guid isPermaLink="true">https://jalisdev.hashnode.dev/how-to-set-up-mailgun-for-sending-emails-in-laravel-11</guid><category><![CDATA[Laravel MailGun]]></category><category><![CDATA[MailGun setup]]></category><category><![CDATA[email]]></category><category><![CDATA[mailgun]]></category><dc:creator><![CDATA[Jalis Mahamud]]></dc:creator><pubDate>Thu, 22 May 2025 12:26:45 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1747917037485/87387409-e0d2-4b87-ad66-4736d2d37b46.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-step-1">Step 1 :</h3>
<p><strong>Mailgun Quick Setup</strong></p>
<blockquote>
<p><strong>Sign Up:</strong> Go to <a target="_blank" href="http://mailgun.com">mailgun.com</a> <a target="_blank" href="https://www.mailgun.com/">and create</a> an account.</p>
<p><strong>Veri</strong><a target="_blank" href="https://www.mailgun.com/"><strong>fy:</strong> Confirm</a> your email and phone.</p>
<p><strong>Add Domain:</strong> In <strong>S</strong><a target="_blank" href="https://www.mailgun.com/"><strong>ending &gt; Do</strong></a><strong>mains</strong>, add your domain or use <a target="_blank" href="https://www.mailgun.com/">sandbox.</a></p>
<p><strong>DNS Setup:</strong> Add Mailgun's DNS records to your domain host <a target="_blank" href="https://www.mailgun.com/">and wait fo</a>r verification.</p>
<p><strong>Get Credentials:</strong> Copy your <strong>SMTP login</strong> or <strong>API key</strong> from the <a target="_blank" href="https://www.mailgun.com/">domain set</a>tings.</p>
</blockquote>
<h3 id="heading-step-2">Step 2 :</h3>
<p><strong>Configure Mailgun on a Laravel project.</strong> <strong>Install Guzzle (if not installed):</strong></p>
<pre><code class="lang-php">composer <span class="hljs-keyword">require</span> guzzlehttp/guzzle
</code></pre>
<h3 id="heading-step-3">Step 3 :</h3>
<p>Set <code>.env</code> values:</p>
<pre><code class="lang-php">MAIL_MAILER=mailgun
MAILGUN_DOMAIN=your-domain.com
MAILGUN_SECRET=your-mailgun-<span class="hljs-keyword">private</span>-api-key
MAILGUN_ENDPOINT=api.mailgun.net
MAIL_FROM_ADDRESS=your-email@your-domain.com
MAIL_FROM_NAME=<span class="hljs-string">"${APP_NAME}"</span>
</code></pre>
<p><strong>Step 4 :</strong><br />config/mail.php</p>
<pre><code class="lang-php"><span class="hljs-string">'mailgun'</span> =&gt; [
    <span class="hljs-string">'transport'</span> =&gt; <span class="hljs-string">'mailgun'</span>,
],
</code></pre>
<p>config/service.php</p>
<pre><code class="lang-php"><span class="hljs-string">'mailgun'</span> =&gt; [
    <span class="hljs-string">'domain'</span> =&gt; env(<span class="hljs-string">'MAILGUN_DOMAIN'</span>),
    <span class="hljs-string">'secret'</span> =&gt; env(<span class="hljs-string">'MAILGUN_SECRET'</span>),
    <span class="hljs-string">'endpoint'</span> =&gt; env(<span class="hljs-string">'MAILGUN_ENDPOINT'</span>, <span class="hljs-string">'api.mailgun.net'</span>),
],
</code></pre>
<h3 id="heading-step-5">Step 5 :</h3>
<pre><code class="lang-php">php artisan opimitze:clear
php artisan optimize
</code></pre>
<h3 id="heading-using-mailgun-api-sending-mail-process">Using MailGun Api sending mail process:</h3>
<pre><code class="lang-php"><span class="hljs-meta">&lt;?php</span>

<span class="hljs-comment">// API-key and URL</span>
$apiKey = <span class="hljs-string">'your api key here'</span>;
$domain = <span class="hljs-string">'your domain here'</span>;
$url = <span class="hljs-string">"https://api.eu.mailgun.net/v3/<span class="hljs-subst">$domain</span>/messages"</span>;

<span class="hljs-comment">// Emailsettings</span>
$postFields = [
    <span class="hljs-string">'from'</span>    =&gt; <span class="hljs-string">'your form address'</span>,
    <span class="hljs-string">'to'</span> =&gt; <span class="hljs-string">'your to address'</span>,
    <span class="hljs-string">'subject'</span> =&gt; <span class="hljs-string">'Mail subject'</span>,
    <span class="hljs-string">'text'</span> =&gt; <span class="hljs-string">'This is a test email for Mr x! Is this email received?'</span>
];

<span class="hljs-comment">// cURL-init</span>
$ch = curl_init();

<span class="hljs-comment">// Set cURL options</span>
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, <span class="hljs-string">'api:'</span> . $apiKey);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, <span class="hljs-literal">true</span>);
curl_setopt($ch, CURLOPT_POST, <span class="hljs-literal">true</span>);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);

<span class="hljs-comment">// Execute and get result</span>
$result = curl_exec($ch);

<span class="hljs-comment">// Error logging</span>
<span class="hljs-keyword">if</span> (curl_errno($ch)) {
    <span class="hljs-keyword">echo</span> <span class="hljs-string">'Error at cURL: '</span> . curl_error($ch);
} <span class="hljs-keyword">else</span> {
    <span class="hljs-keyword">echo</span> <span class="hljs-string">'Result: '</span> . $result;
}

<span class="hljs-comment">// Close connection</span>
curl_close($ch);

<span class="hljs-meta">?&gt;</span>
</code></pre>
<hr />
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">Thank you</div>
</div>]]></content:encoded></item></channel></rss>