{"id":2541,"date":"2026-02-23T12:16:06","date_gmt":"2026-02-23T12:16:06","guid":{"rendered":"https:\/\/cyberpanel.net\/KnowledgeBase\/sending-email-smtp\/"},"modified":"2026-02-23T12:17:09","modified_gmt":"2026-02-23T12:17:09","slug":"sending-email-smtp","status":"publish","type":"post","link":"https:\/\/cyberpanel.net\/KnowledgeBase\/sending-email-smtp\/","title":{"rendered":"Sending Email via SMTP"},"content":{"rendered":"<style>\n.kb-info-box { background: #e8f4fd; border-left: 4px solid #2196F3; padding: 16px 20px; margin: 20px 0; border-radius: 4px; }\n.kb-info-box.warning { background: #fff8e1; border-left-color: #ff9800; }\n.kb-info-box.success { background: #e8f5e9; border-left-color: #4caf50; }\n.kb-info-box.tip { background: #f3e5f5; border-left-color: #9c27b0; }\n.kb-info-box strong { display: block; margin-bottom: 4px; }\n.kb-table { width: 100%; border-collapse: collapse; margin: 20px 0; }\n.kb-table th, .kb-table td { border: 1px solid #ddd; padding: 10px 14px; text-align: left; }\n.kb-table th { background: #f5f5f5; font-weight: 600; }\n.kb-table tr:nth-child(even) { background: #fafafa; }\n.kb-code { background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 6px; overflow-x: auto; margin: 16px 0; font-size: 14px; line-height: 1.5; }\n.kb-code .comment { color: #6a9955; }\n.kb-code .keyword { color: #569cd6; }\n.kb-code .string { color: #ce9178; }\n<\/style>\n<p>Send emails from any programming language or application using standard SMTP. This guide covers connection settings, credential creation, and code examples.<\/p>\n<h2>SMTP Settings<\/h2>\n<table class=\"kb-table\">\n<tr>\n<th>Setting<\/th>\n<th>Value<\/th>\n<\/tr>\n<tr>\n<td>Host<\/td>\n<td><code>mail.cyberpersons.com<\/code><\/td>\n<\/tr>\n<tr>\n<td>Port<\/td>\n<td><code>587<\/code> (recommended) or <code>25<\/code><\/td>\n<\/tr>\n<tr>\n<td>Security<\/td>\n<td>STARTTLS (required)<\/td>\n<\/tr>\n<tr>\n<td>Authentication<\/td>\n<td>AUTH PLAIN or AUTH LOGIN<\/td>\n<\/tr>\n<tr>\n<td>Username<\/td>\n<td>Your SMTP credential (e.g., <code>smtp_a1b2c3d4e5f6<\/code>)<\/td>\n<\/tr>\n<tr>\n<td>Password<\/td>\n<td>Your SMTP credential password<\/td>\n<\/tr>\n<\/table>\n<div class=\"kb-info-box\"><strong>Port 587 vs 25:<\/strong> Use port 587 (submission) for all new integrations. Port 25 is also supported but may be blocked by some ISPs and cloud providers.<\/div>\n<h2>Creating SMTP Credentials<\/h2>\n<ol>\n<li>Log into your <a href=\"https:\/\/platform.cyberpersons.com\/email\/\" target=\"_blank\" rel=\"noopener\">Email Dashboard<\/a><\/li>\n<li>Go to <strong>SMTP Credentials<\/strong><\/li>\n<li>Click <strong>Create Credential<\/strong><\/li>\n<li>Give it a name (e.g., &#8220;My App&#8221;) and click <strong>Generate<\/strong><\/li>\n<li>Copy the username and password &mdash; <strong>the password is only shown once!<\/strong><\/li>\n<\/ol>\n<h2>Code Examples<\/h2>\n<h3>Python (smtplib)<\/h3>\n<pre class=\"kb-code\"><span class=\"keyword\">import<\/span> smtplib\n<span class=\"keyword\">from<\/span> email.mime.text <span class=\"keyword\">import<\/span> MIMEText\n<span class=\"keyword\">from<\/span> email.mime.multipart <span class=\"keyword\">import<\/span> MIMEMultipart\n\nmsg = MIMEMultipart(<span class=\"string\">'alternative'<\/span>)\nmsg[<span class=\"string\">'From'<\/span>] = <span class=\"string\">'you@yourcompany.com'<\/span>\nmsg[<span class=\"string\">'To'<\/span>] = <span class=\"string\">'recipient@example.com'<\/span>\nmsg[<span class=\"string\">'Subject'<\/span>] = <span class=\"string\">'Hello from CyberPanel'<\/span>\n\ntext = <span class=\"string\">'Hello! This is a plain text version.'<\/span>\nhtml = <span class=\"string\">'&lt;h1&gt;Hello!&lt;\/h1&gt;&lt;p&gt;This is the HTML version.&lt;\/p&gt;'<\/span>\n\nmsg.attach(MIMEText(text, <span class=\"string\">'plain'<\/span>))\nmsg.attach(MIMEText(html, <span class=\"string\">'html'<\/span>))\n\n<span class=\"keyword\">with<\/span> smtplib.SMTP(<span class=\"string\">'mail.cyberpersons.com'<\/span>, 587) <span class=\"keyword\">as<\/span> server:\n    server.starttls()\n    server.login(<span class=\"string\">'smtp_YOUR_USERNAME'<\/span>, <span class=\"string\">'YOUR_PASSWORD'<\/span>)\n    server.sendmail(msg[<span class=\"string\">'From'<\/span>], [msg[<span class=\"string\">'To'<\/span>]], msg.as_string())<\/pre>\n<h3>PHP (PHPMailer)<\/h3>\n<pre class=\"kb-code\"><span class=\"keyword\">use<\/span> PHPMailer\\PHPMailer\\PHPMailer;\n\n$mail = <span class=\"keyword\">new<\/span> PHPMailer(<span class=\"keyword\">true<\/span>);\n$mail-&gt;isSMTP();\n$mail-&gt;Host       = <span class=\"string\">'mail.cyberpersons.com'<\/span>;\n$mail-&gt;SMTPAuth   = <span class=\"keyword\">true<\/span>;\n$mail-&gt;Username   = <span class=\"string\">'smtp_YOUR_USERNAME'<\/span>;\n$mail-&gt;Password   = <span class=\"string\">'YOUR_PASSWORD'<\/span>;\n$mail-&gt;SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;\n$mail-&gt;Port       = 587;\n\n$mail-&gt;setFrom(<span class=\"string\">'you@yourcompany.com'<\/span>, <span class=\"string\">'Your Name'<\/span>);\n$mail-&gt;addAddress(<span class=\"string\">'recipient@example.com'<\/span>);\n$mail-&gt;Subject = <span class=\"string\">'Hello from CyberPanel'<\/span>;\n$mail-&gt;isHTML(<span class=\"keyword\">true<\/span>);\n$mail-&gt;Body = <span class=\"string\">'&lt;h1&gt;Hello!&lt;\/h1&gt;'<\/span>;\n$mail-&gt;AltBody = <span class=\"string\">'Hello!'<\/span>;\n\n$mail-&gt;send();<\/pre>\n<h3>Node.js (Nodemailer)<\/h3>\n<pre class=\"kb-code\"><span class=\"keyword\">const<\/span> nodemailer = require(<span class=\"string\">'nodemailer'<\/span>);\n\n<span class=\"keyword\">const<\/span> transporter = nodemailer.createTransport({\n  host: <span class=\"string\">'mail.cyberpersons.com'<\/span>,\n  port: 587,\n  secure: <span class=\"keyword\">false<\/span>, <span class=\"comment\">\/\/ STARTTLS<\/span>\n  auth: {\n    user: <span class=\"string\">'smtp_YOUR_USERNAME'<\/span>,\n    pass: <span class=\"string\">'YOUR_PASSWORD'<\/span>,\n  },\n});\n\n<span class=\"keyword\">await<\/span> transporter.sendMail({\n  from: <span class=\"string\">'you@yourcompany.com'<\/span>,\n  to: <span class=\"string\">'recipient@example.com'<\/span>,\n  subject: <span class=\"string\">'Hello from CyberPanel'<\/span>,\n  text: <span class=\"string\">'Hello!'<\/span>,\n  html: <span class=\"string\">'&lt;h1&gt;Hello!&lt;\/h1&gt;'<\/span>,\n});<\/pre>\n<h3>WordPress (WP Mail SMTP Plugin)<\/h3>\n<ol>\n<li>Install and activate the <strong>WP Mail SMTP<\/strong> plugin<\/li>\n<li>Go to <strong>WP Mail SMTP &rarr; Settings<\/strong><\/li>\n<li>Select <strong>Other SMTP<\/strong> as the mailer<\/li>\n<li>Enter:\n<ul>\n<li>SMTP Host: <code>mail.cyberpersons.com<\/code><\/li>\n<li>Encryption: <code>TLS<\/code><\/li>\n<li>SMTP Port: <code>587<\/code><\/li>\n<li>SMTP Username: your credential username<\/li>\n<li>SMTP Password: your credential password<\/li>\n<\/ul>\n<\/li>\n<li>Click <strong>Save Settings<\/strong>, then use <strong>Email Test<\/strong> to verify<\/li>\n<\/ol>\n<h2>Common SMTP Errors<\/h2>\n<table class=\"kb-table\">\n<tr>\n<th>Error<\/th>\n<th>Cause<\/th>\n<th>Fix<\/th>\n<\/tr>\n<tr>\n<td>535 Authentication failed<\/td>\n<td>Wrong username or password<\/td>\n<td>Double-check credentials; regenerate if needed<\/td>\n<\/tr>\n<tr>\n<td>550 Domain not verified<\/td>\n<td>Sending from unverified domain<\/td>\n<td><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/domain-verification-dns-setup\/\">Verify your domain<\/a><\/td>\n<\/tr>\n<tr>\n<td>452 Rate limit exceeded<\/td>\n<td>Too many emails too quickly<\/td>\n<td>Slow down; check <a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/plans-pricing-rate-limits\/\">rate limits<\/a><\/td>\n<\/tr>\n<tr>\n<td>Connection timeout<\/td>\n<td>Port blocked by ISP\/firewall<\/td>\n<td>Try port 587; check firewall rules<\/td>\n<\/tr>\n<tr>\n<td>SSL\/TLS handshake error<\/td>\n<td>Missing STARTTLS<\/td>\n<td>Ensure STARTTLS is enabled (not SSL\/TLS)<\/td>\n<\/tr>\n<\/table>\n<h2>Related Guides<\/h2>\n<ul>\n<li><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/email-service-documentation\/\">Documentation Hub<\/a><\/li>\n<li><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/getting-started-email-delivery\/\">Getting Started with Email Delivery<\/a><\/li>\n<li><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/domain-verification-dns-setup\/\">Domain Verification &amp; DNS Setup<\/a><\/li>\n<li><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/webhooks-event-notifications\/\">Webhooks<\/a><\/li>\n<li><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/plans-pricing-rate-limits\/\">Plans, Pricing, and Rate Limits<\/a><\/li>\n<\/ul>\n<p><a href=\"https:\/\/cyberpanel.net\/KnowledgeBase\/email-service-documentation\/\">&larr; Back to Documentation Hub<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Send emails from any programming language or application using standard SMTP. This guide covers connection settings, credential creation, and code examples. SMTP Settings Setting Value Host mail.cyberpersons.com Port 587 (recommended) or 25 Security STARTTLS (required) Authentication AUTH PLAIN or AUTH LOGIN Username Your SMTP credential (e.g., smtp_a1b2c3d4e5f6) Password Your SMTP credential password Port 587 vs [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[108],"tags":[],"class_list":["post-2541","post","type-post","status-publish","format-standard","hentry","category-email-service"],"_links":{"self":[{"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/posts\/2541","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/comments?post=2541"}],"version-history":[{"count":3,"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/posts\/2541\/revisions"}],"predecessor-version":[{"id":2583,"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/posts\/2541\/revisions\/2583"}],"wp:attachment":[{"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/media?parent=2541"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/categories?post=2541"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cyberpanel.net\/KnowledgeBase\/wp-json\/wp\/v2\/tags?post=2541"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}