{"id":8695,"date":"2026-05-25T16:51:38","date_gmt":"2026-05-25T16:51:38","guid":{"rendered":"https:\/\/chemicloud.com\/kb\/?post_type=ht_kb&#038;p=8695"},"modified":"2026-05-25T16:51:38","modified_gmt":"2026-05-25T16:51:38","slug":"send-emails-with-phpmailer","status":"publish","type":"ht_kb","link":"https:\/\/chemicloud.com\/kb\/article\/send-emails-with-phpmailer\/","title":{"rendered":"How to Send Emails with PHPMailer Using ChemiCloud"},"content":{"rendered":"<p><!-- Paste this into the WordPress Classic editor TEXT tab (not Visual). --><\/p>\n<p>If your website runs on PHP and you need it to send email, order confirmations, password resets, contact-form notifications, or account alerts \u2014 PHPMailer is the most popular and dependable library for the job. Instead of relying on PHP&#8217;s built-in <code>mail()<\/code> function, which is unauthenticated and frequently lands in spam folders, PHPMailer lets you send mail through a proper authenticated SMTP connection.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/chemicloud.fsn1.your-objectstorage.com\/phpmailer_chemicloud_article_header.svg\" alt=\"Send Mail With PHPMailer Using ChemiCloud\" width=\"779\" height=\"417\" \/><\/p>\n<p>In this guide, we&#8217;ll walk through installing PHPMailer, pointing it at the SMTP server on your ChemiCloud hosting account, and sending everything from a simple plain-text message to HTML emails with attachments and embedded images. We&#8217;ll also cover how to troubleshoot the connection when something doesn&#8217;t work.<\/p>\n<blockquote><p>The examples below use PHPMailer 6.x, which works with PHP 7.x and newer. We recommend running a currently supported PHP version, which you can select from <strong>PHP Selector<\/strong> in cPanel.<\/p><\/blockquote>\n<h2 id=\"table-of-contents\">Table of Contents<\/h2>\n<ul>\n<li><a href=\"#what-is-phpmailer\">What is PHPMailer?<\/a><\/li>\n<li><a href=\"#before-you-begin\">Before you begin: create an email account<\/a><\/li>\n<li><a href=\"#smtp-settings\">Your ChemiCloud SMTP settings<\/a><\/li>\n<li><a href=\"#installing\">Installing PHPMailer<\/a><\/li>\n<li><a href=\"#plain-text\">Sending a plain-text email<\/a><\/li>\n<li><a href=\"#html-email\">Sending an HTML email<\/a><\/li>\n<li><a href=\"#multiple-recipients\">Sending to multiple recipients (To, CC, BCC)<\/a><\/li>\n<li><a href=\"#attachments\">Sending emails with attachments<\/a><\/li>\n<li><a href=\"#embedded-images\">Embedding images in the email body<\/a><\/li>\n<li><a href=\"#looping\">Looping through a list of recipients<\/a><\/li>\n<li><a href=\"#debugging\">Debugging connection problems<\/a><\/li>\n<li><a href=\"#limits\">A note on sending limits and deliverability<\/a><\/li>\n<li><a href=\"#wrapping-up\">Wrapping up<\/a><\/li>\n<\/ul>\n<h2 id=\"what-is-phpmailer\">What is PHPMailer?<\/h2>\n<p>PHPMailer is a free, open-source PHP class that handles the heavy lifting of composing and transmitting email. It has been around for years, ships inside platforms like WordPress, and integrates cleanly with frameworks such as Laravel and Symfony.<\/p>\n<p>A few of the reasons it&#8217;s the go-to choice:<\/p>\n<ul>\n<li>It connects to SMTP servers with full authentication, so your mail is far more likely to be accepted and delivered than mail sent through <code>mail()<\/code>.<\/li>\n<li>It supports SSL and TLS encryption, keeping your credentials and message contents private in transit.<\/li>\n<li>It builds proper HTML emails with a plain-text fallback, handles file attachments and inline images, and validates recipient addresses automatically.<\/li>\n<li>It guards against email header injection, a common attack vector on web forms.<\/li>\n<\/ul>\n<p>For a website hosted with us, the most reliable approach is to send through one of your own email accounts using your ChemiCloud mail server. That&#8217;s exactly what we&#8217;ll set up.<\/p>\n<h2 id=\"before-you-begin\"><span id=\"before-you-begin-create-an-email-account\">Before you begin: create an email account<\/span><\/h2>\n<p>PHPMailer authenticates to the mail server using a real <a href=\"https:\/\/chemicloud.com\/kb\/article\/managing-an-email-account-in-cpanel\/\">email account<\/a>, so you&#8217;ll want a dedicated address for your application to send from \u2014 something like <code>noreply@yourdomain.com<\/code> or <code>notifications@yourdomain.com<\/code>.<\/p>\n<p>To create one:<\/p>\n<ol>\n<li>Log in to your <strong>cPanel<\/strong>.<\/li>\n<li>Under the <strong>Email<\/strong> section, open <strong>Email Accounts<\/strong>.<\/li>\n<li>Click <strong>Create<\/strong>, choose the domain, enter the username and a strong password, and save.<\/li>\n<\/ol>\n<p>Keep the full email address and password handy \u2014 those are the SMTP credentials your script will use.<\/p>\n<h2 id=\"smtp-settings\"><span id=\"your-chemicloud-smtp-settings\">Your ChemiCloud SMTP settings<\/span><\/h2>\n<p>When you send through an email account hosted on your ChemiCloud account, use the following outgoing (SMTP) settings:<\/p>\n<table>\n<thead>\n<tr>\n<th>Setting<\/th>\n<th>Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>SMTP host<\/td>\n<td><code>mail.yourdomain.com<\/code> (replace with your actual domain)<\/td>\n<\/tr>\n<tr>\n<td>SMTP port<\/td>\n<td><code>465<\/code> for SSL<\/td>\n<\/tr>\n<tr>\n<td>Encryption<\/td>\n<td>SSL (with port 465)<\/td>\n<\/tr>\n<tr>\n<td>Authentication<\/td>\n<td>Required<\/td>\n<\/tr>\n<tr>\n<td>Username<\/td>\n<td>Your <strong>full<\/strong> email address, e.g. <code>noreply@yourdomain.com<\/code><\/td>\n<\/tr>\n<tr>\n<td>Password<\/td>\n<td>The password for that email account<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>A few things worth knowing:<\/p>\n<ul>\n<li>The username must be the <strong>complete<\/strong> email address, not just the part before the <code>@<\/code>. Sending with only the mailbox name is the single most common cause of authentication failures.<\/li>\n<li>Our servers require authenticated, encrypted submission. Plain unencrypted connections will be rejected, so always set an encryption type.<\/li>\n<li>If you&#8217;re unsure of the exact hostname, you can confirm it in cPanel under <strong>Email Accounts \u2192 Connect Devices<\/strong> (the \u201cSet Up Mail Client\u201d page), which lists the manual settings for your account.<\/li>\n<\/ul>\n<p>If <code>mail.yourdomain.com<\/code> doesn&#8217;t resolve yet \u2014 for example because your domain isn&#8217;t fully pointed to us \u2014 you can substitute your server&#8217;s hostname, which is also shown on the same Connect Devices page.<\/p>\n<h2 id=\"installing\"><span id=\"installing-phpmailer\">Installing PHPMailer<\/span><\/h2>\n<p>The recommended way to add PHPMailer to a project is with <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\">Composer<\/a>, the PHP dependency manager. From the directory of your project, run:<\/p>\n<pre class=\"wp-block-code\"><code>composer require phpmailer\/phpmailer<\/code><\/pre>\n<p>This downloads PHPMailer into a <code>vendor\/<\/code> folder and generates <code>vendor\/autoload.php<\/code>, which you&#8217;ll include in your scripts.<\/p>\n<p>You have SSH access to your hosting account so you can run this command directly on the server. Composer is available on our servers, so in many cases you can install dependencies without uploading anything by hand.<\/p>\n<p>Prefer not to use Composer? You can download the library from its <a href=\"https:\/\/github.com\/PHPMailer\/PHPMailer\" target=\"_blank\" rel=\"noopener nofollow\">GitHub repository<\/a>, upload the <code>src<\/code> folder to your account, and include the class files manually:<\/p>\n<pre class=\"wp-block-code\"><code>&lt;?php\r\nuse PHPMailer\\PHPMailer\\PHPMailer;\r\nuse PHPMailer\\PHPMailer\\SMTP;\r\nuse PHPMailer\\PHPMailer\\Exception;\r\n\r\nrequire 'path\/to\/PHPMailer\/src\/Exception.php';\r\nrequire 'path\/to\/PHPMailer\/src\/PHPMailer.php';\r\nrequire 'path\/to\/PHPMailer\/src\/SMTP.php';<\/code><\/pre>\n<p>Including the <code>Exception<\/code> class is worthwhile even though it&#8217;s optional \u2014 without it, errors surface as vague messages, whereas with it you get readable details that make problems much easier to diagnose.<\/p>\n<h2 id=\"plain-text\"><span id=\"sending-a-plain-text-email\">Sending a plain-text email<\/span><\/h2>\n<p>Here&#8217;s a complete, minimal script that connects to your ChemiCloud SMTP server and sends a plain-text message. Replace the placeholder credentials and addresses with your own.<\/p>\n<pre class=\"wp-block-code\"><code>&lt;?php\r\nuse PHPMailer\\PHPMailer\\PHPMailer;\r\nuse PHPMailer\\PHPMailer\\Exception;\r\n\r\nrequire 'vendor\/autoload.php';\r\n\r\n$mail = new PHPMailer(true); \/\/ \"true\" turns on exceptions for easier debugging\r\n\r\ntry {\r\n    \/\/ --- SMTP configuration ---\r\n    $mail-&gt;isSMTP();\r\n    $mail-&gt;Host       = 'mail.yourdomain.com'; \/\/ your ChemiCloud mail server\r\n    $mail-&gt;SMTPAuth   = true;\r\n    $mail-&gt;Username   = 'noreply@yourdomain.com'; \/\/ full email address\r\n    $mail-&gt;Password   = 'your-email-password';\r\n    $mail-&gt;SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; \/\/ SSL\r\n    $mail-&gt;Port       = 465;\r\n\r\n    \/\/ --- Addresses ---\r\n    $mail-&gt;setFrom('noreply@yourdomain.com', 'Your Website');\r\n    $mail-&gt;addAddress('customer@example.com', 'Customer Name');\r\n\r\n    \/\/ --- Content ---\r\n    $mail-&gt;isHTML(false); \/\/ plain text\r\n    $mail-&gt;Subject = 'Thanks for getting in touch';\r\n    $mail-&gt;Body    = \"Hi there,\\n\\nWe received your message and will reply soon.\\n\\nBest regards,\\nYour Website Team\";\r\n\r\n    $mail-&gt;send();\r\n    echo 'Message sent successfully.';\r\n} catch (Exception $e) {\r\n    echo \"Message could not be sent. Error: {$mail-&gt;ErrorInfo}\";\r\n}<\/code><code><\/code><\/pre>\n<p>When the script runs without errors, you&#8217;ll see \u201cMessage sent successfully\u201d and the email will arrive in the recipient&#8217;s inbox within a few seconds.<\/p>\n<h2 id=\"html-email\"><span id=\"sending-an-html-email\">Sending an HTML email<\/span><\/h2>\n<p>For richer messages, switch the format to HTML with <code>isHTML(true)<\/code> and provide both an HTML body and a plain-text alternative. The alternative is shown by mail clients that can&#8217;t (or won&#8217;t) render HTML, and including it also helps with deliverability.<\/p>\n<pre class=\"wp-block-code\"><code>&lt;?php\r\nuse PHPMailer\\PHPMailer\\PHPMailer;\r\nuse PHPMailer\\PHPMailer\\Exception;\r\n\r\nrequire 'vendor\/autoload.php';\r\n\r\n$mail = new PHPMailer(true);\r\n\r\ntry {\r\n    $mail-&gt;isSMTP();\r\n    $mail-&gt;Host       = 'mail.yourdomain.com';\r\n    $mail-&gt;SMTPAuth   = true;\r\n    $mail-&gt;Username   = 'noreply@yourdomain.com';\r\n    $mail-&gt;Password   = 'your-email-password';\r\n    $mail-&gt;SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;\r\n    $mail-&gt;Port       = 465;\r\n\r\n    $mail-&gt;setFrom('noreply@yourdomain.com', 'Your Website');\r\n    $mail-&gt;addAddress('customer@example.com', 'Customer Name');\r\n    $mail-&gt;addReplyTo('support@yourdomain.com', 'Support Team');\r\n\r\n    $mail-&gt;isHTML(true);\r\n    $mail-&gt;Subject = 'Welcome aboard!';\r\n    $mail-&gt;Body    = '&lt;h1&gt;Welcome!&lt;\/h1&gt;&lt;p&gt;Your account is ready. We\\'re glad to have you.&lt;\/p&gt;';\r\n    $mail-&gt;AltBody = 'Welcome! Your account is ready. We\\'re glad to have you.';\r\n\r\n    $mail-&gt;send();\r\n    echo 'HTML message sent.';\r\n} catch (Exception $e) {\r\n    echo \"Message could not be sent. Error: {$mail-&gt;ErrorInfo}\";\r\n}<\/code><\/pre>\n<h2 id=\"multiple-recipients\"><span id=\"sending-to-multiple-recipients-to-cc-and-bcc\">Sending to multiple recipients (To, CC, and BCC)<\/span><\/h2>\n<p>PHPMailer lets you add as many recipients as you need across the To, CC, and BCC fields. Simply call the relevant method once per address:<\/p>\n<pre class=\"wp-block-code\"><code>$mail-&gt;addAddress('first@example.com', 'First Recipient');\r\n$mail-&gt;addAddress('second@example.com', 'Second Recipient');\r\n\r\n$mail-&gt;addCC('manager@example.com', 'A Manager');\r\n\r\n$mail-&gt;addBCC('archive@yourdomain.com');\r\n$mail-&gt;addBCC('records@yourdomain.com');<\/code><\/pre>\n<p>Everyone in the To and CC fields can see each other&#8217;s addresses; anyone in BCC stays hidden from the rest. If you&#8217;re emailing a list of people who don&#8217;t know one another, put them in BCC \u2014 or, better, send individual messages (see the loop example further down).<\/p>\n<h2 id=\"attachments\"><span id=\"sending-emails-with-attachments\">Sending emails with attachments<\/span><\/h2>\n<p>To attach a file that already exists on your server, point PHPMailer at its path. The optional second argument sets the filename the recipient sees:<\/p>\n<pre class=\"wp-block-code\"><code>$mail-&gt;addAttachment('\/home\/username\/invoices\/invoice-1042.pdf', 'invoice.pdf');<\/code><\/pre>\n<p>You can attach more than one file by calling the method again:<\/p>\n<pre class=\"wp-block-code\"><code>$mail-&gt;addAttachment('\/home\/username\/reports\/summary.xlsx', 'summary.xlsx');<\/code><\/pre>\n<p>If the data you want to attach isn&#8217;t a file on disk \u2014 say it&#8217;s stored in a database or generated on the fly \u2014 use a string attachment instead. This avoids having to write a temporary file:<\/p>\n<pre class=\"wp-block-code\"><code>\/\/ Attach data pulled from a database (e.g. a stored PDF)\r\n$mail-&gt;addStringAttachment($pdfData, 'document.pdf');<\/code><\/pre>\n<p>You can also attach the contents of a remote URL:<\/p>\n<pre class=\"wp-block-code\"><code>$mail-&gt;addStringAttachment(file_get_contents('https:\/\/example.com\/report.pdf'), 'report.pdf');<\/code><\/pre>\n<h2 id=\"embedded-images\"><span id=\"embedding-images-in-the-email-body\">Embedding images in the email body<\/span><\/h2>\n<p>Sometimes you want an image to appear inside the message rather than as a downloadable attachment \u2014 a logo in a header, for instance. PHPMailer handles this with embedded (inline) images referenced by a content ID, or \u201cCID.\u201d<\/p>\n<pre class=\"wp-block-code\"><code>$mail-&gt;addEmbeddedImage('\/home\/username\/assets\/logo.png', 'logo_cid');\r\n$mail-&gt;isHTML(true);\r\n$mail-&gt;Body = '&lt;img src=\"cid:logo_cid\" alt=\"Logo\"&gt;&lt;p&gt;Welcome to our store.&lt;\/p&gt;';<\/code><\/pre>\n<p>Here&#8217;s how that fits into a full script:<\/p>\n<pre class=\"wp-block-code\"><code>&lt;?php\r\nuse PHPMailer\\PHPMailer\\PHPMailer;\r\nuse PHPMailer\\PHPMailer\\Exception;\r\n\r\nrequire 'vendor\/autoload.php';\r\n\r\n$mail = new PHPMailer(true);\r\n\r\ntry {\r\n    $mail-&gt;isSMTP();\r\n    $mail-&gt;Host       = 'mail.yourdomain.com';\r\n    $mail-&gt;SMTPAuth   = true;\r\n    $mail-&gt;Username   = 'noreply@yourdomain.com';\r\n    $mail-&gt;Password   = 'your-email-password';\r\n    $mail-&gt;SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;\r\n    $mail-&gt;Port       = 465;\r\n\r\n    $mail-&gt;setFrom('noreply@yourdomain.com', 'Your Website');\r\n    $mail-&gt;addAddress('customer@example.com', 'Customer Name');\r\n\r\n    $mail-&gt;isHTML(true);\r\n    $mail-&gt;Subject = 'Our latest newsletter';\r\n    $mail-&gt;addEmbeddedImage('\/home\/username\/assets\/logo.png', 'logo_cid');\r\n    $mail-&gt;Body    = '&lt;img src=\"cid:logo_cid\" alt=\"Logo\"&gt;&lt;h2&gt;This month\\'s updates&lt;\/h2&gt;&lt;p&gt;Here is what is new.&lt;\/p&gt;';\r\n    $mail-&gt;AltBody = 'This month\\'s updates - here is what is new.';\r\n\r\n    $mail-&gt;send();\r\n    echo 'Newsletter sent.';\r\n} catch (Exception $e) {\r\n    echo \"Message could not be sent. Error: {$mail-&gt;ErrorInfo}\";\r\n}<\/code><\/pre>\n<h2 id=\"looping\"><span id=\"looping-through-a-list-of-recipients\">Looping through a list of recipients<\/span><\/h2>\n<p>When you need to send a personalized message to several people, reuse a single PHPMailer instance and clear the recipient list between sends. Turning on <code>SMTPKeepAlive<\/code> keeps the connection open so you&#8217;re not reconnecting for every message, which is noticeably faster.<\/p>\n<pre class=\"wp-block-code\"><code>&lt;?php\r\nuse PHPMailer\\PHPMailer\\PHPMailer;\r\nuse PHPMailer\\PHPMailer\\Exception;\r\n\r\nrequire 'vendor\/autoload.php';\r\n\r\n$mail = new PHPMailer(true);\r\n\r\n$mail-&gt;isSMTP();\r\n$mail-&gt;Host         = 'mail.yourdomain.com';\r\n$mail-&gt;SMTPAuth     = true;\r\n$mail-&gt;Username     = 'noreply@yourdomain.com';\r\n$mail-&gt;Password     = 'your-email-password';\r\n$mail-&gt;SMTPSecure   = PHPMailer::ENCRYPTION_SMTPS;\r\n$mail-&gt;Port         = 465;\r\n$mail-&gt;SMTPKeepAlive = true; \/\/ keep the connection open between messages\r\n\r\n$mail-&gt;setFrom('noreply@yourdomain.com', 'Your Website');\r\n$mail-&gt;isHTML(true);\r\n\r\n$recipients = [\r\n    ['email' =&gt; 'alice@example.com', 'name' =&gt; 'Alice'],\r\n    ['email' =&gt; 'bob@example.com',   'name' =&gt; 'Bob'],\r\n];\r\n\r\nforeach ($recipients as $person) {\r\n    try {\r\n        $mail-&gt;addAddress($person['email'], $person['name']);\r\n        $mail-&gt;Subject = 'A quick update, ' . $person['name'];\r\n        $mail-&gt;Body    = \"&lt;p&gt;Hi {$person['name']}, here is your update.&lt;\/p&gt;\";\r\n        $mail-&gt;AltBody = \"Hi {$person['name']}, here is your update.\";\r\n\r\n        $mail-&gt;send();\r\n        echo \"Sent to {$person['email']}\\n\";\r\n    } catch (Exception $e) {\r\n        echo \"Failed for {$person['email']}: {$mail-&gt;ErrorInfo}\\n\";\r\n    }\r\n\r\n    $mail-&gt;clearAddresses(); \/\/ reset for the next recipient\r\n}\r\n\r\n$mail-&gt;smtpClose();<\/code><\/pre>\n<p>If you anticipate sending a high volume of mail, do the actual sending in the background through a queue rather than during a page load, and pace your sends so you stay within your account&#8217;s hourly limits (more on that below).<\/p>\n<h2 id=\"debugging\"><span id=\"debugging-connection-problems\">Debugging connection problems<\/span><\/h2>\n<p>When mail won&#8217;t send, PHPMailer&#8217;s built-in SMTP debugging is the fastest way to see what&#8217;s happening. Add this line to your configuration:<\/p>\n<pre class=\"wp-block-code\"><code>$mail-&gt;SMTPDebug = 2;<\/code><\/pre>\n<p>The debug levels are:<\/p>\n<ul>\n<li><strong>1<\/strong> \u2013 shows messages your script sends to the server.<\/li>\n<li><strong>2<\/strong> \u2013 adds the server&#8217;s replies (this is usually the most useful setting).<\/li>\n<li><strong>3<\/strong> \u2013 adds connection-level details, helpful for diagnosing TLS\/STARTTLS issues.<\/li>\n<li><strong>4<\/strong> \u2013 very low-level, verbose output.<\/li>\n<\/ul>\n<p>Two of the most common errors and what they mean:<\/p>\n<p><strong>\u201cSMTP connect() failed\u201d \/ connection timed out.<\/strong> Usually the host or port is wrong, or the connection is being blocked. Double-check that the host is your real mail hostname and that the port matches your encryption type (465 with SSL, 587 with STARTTLS). Note that some office networks and public Wi-Fi hotspots block outbound SMTP ports \u2014 if you&#8217;re testing from such a network, try from the server itself instead.<\/p>\n<p><strong>\u201c535 Authentication failed\u201d \/ \u201cCould not authenticate.\u201d<\/strong> The username or password is wrong. Confirm that the username is the <strong>full<\/strong> email address and that the password matches the one set in cPanel. If you&#8217;re not certain, reset the mailbox password under <strong>Email Accounts<\/strong> and try again.<\/p>\n<p>If you&#8217;re still stuck after checking these, our support team is available 24\/7 via live chat and can help confirm the correct settings for your account.<\/p>\n<h2 id=\"limits\"><span id=\"a-note-on-sending-limits-and-deliverability\">A note on sending limits and deliverability<\/span><\/h2>\n<p>To protect every customer on the server and keep our IPs in good standing, our mail servers enforce hourly sending limits. For routine transactional email \u2014 confirmations, resets, contact forms \u2014 these limits are generous and you won&#8217;t notice them. If your application sends large newsletters or bulk campaigns, however, a dedicated bulk\/transactional email service is the better tool, and you can route PHPMailer through it by simply swapping in that provider&#8217;s SMTP host, port, and credentials.<\/p>\n<p>A few quick wins for staying out of spam folders:<\/p>\n<ul>\n<li>Publish <strong>SPF<\/strong>, <strong>DKIM<\/strong>, and <strong>DMARC<\/strong> records for your domain. DKIM and SPF are configured for you on our platform; you can review them in cPanel under <strong>Email Deliverability<\/strong>.<\/li>\n<li>Send from a real address on your own domain, not from a free webmail address like Gmail or Yahoo.<\/li>\n<li>Always include a plain-text alternative alongside your HTML.<\/li>\n<\/ul>\n<h2 id=\"wrapping-up\">Wrapping up<\/h2>\n<p>PHPMailer plus your ChemiCloud SMTP server is a solid, secure foundation for any PHP application that needs to send email. Once you&#8217;ve created a sending account, plugged in your mail host and credentials, and confirmed a test message arrives, you can extend the same setup to HTML emails, attachments, inline images, and personalized batches.<\/p>\n<p>If you run into trouble, enable SMTP debugging to see exactly where the conversation with the server breaks down \u2014 and remember that our support team is one chat away whenever you need a hand.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If your website runs on PHP and you need it to send email, order confirmations, password resets, contact-form notifications, or account alerts \u2014 PHPMailer is the most popular and dependable library for the job. Instead of relying on PHP&#8217;s built-in mail() function, which is unauthenticated and frequently lands in spam&#8230;<\/p>\n","protected":false},"author":14,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_crdt_document":"","footnotes":""},"ht-kb-category":[188,19],"ht-kb-tag":[146,240,163],"class_list":["post-8695","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-support-resources","ht_kb_category-email","ht_kb_tag-mail","ht_kb_tag-phpmailer","ht_kb_tag-smtp"],"_links":{"self":[{"href":"https:\/\/chemicloud.com\/kb\/wp-json\/wp\/v2\/ht-kb\/8695","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chemicloud.com\/kb\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/chemicloud.com\/kb\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/chemicloud.com\/kb\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/chemicloud.com\/kb\/wp-json\/wp\/v2\/comments?post=8695"}],"version-history":[{"count":1,"href":"https:\/\/chemicloud.com\/kb\/wp-json\/wp\/v2\/ht-kb\/8695\/revisions"}],"predecessor-version":[{"id":8696,"href":"https:\/\/chemicloud.com\/kb\/wp-json\/wp\/v2\/ht-kb\/8695\/revisions\/8696"}],"wp:attachment":[{"href":"https:\/\/chemicloud.com\/kb\/wp-json\/wp\/v2\/media?parent=8695"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/chemicloud.com\/kb\/wp-json\/wp\/v2\/ht-kb-category?post=8695"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/chemicloud.com\/kb\/wp-json\/wp\/v2\/ht-kb-tag?post=8695"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}