{"id":1190,"date":"2025-10-09T07:17:43","date_gmt":"2025-10-09T00:17:43","guid":{"rendered":"https:\/\/portal-atlasx.cdg.co.th\/home\/docs\/atlasx-web-service-v8-0\/features\/connect-to-mail-server\/"},"modified":"2026-03-27T09:01:25","modified_gmt":"2026-03-27T02:01:25","slug":"connect-to-mail-server","status":"publish","type":"docs","link":"https:\/\/portal-atlasx.cdg.co.th\/home\/docs\/axws\/features\/connect-to-mail-server\/","title":{"rendered":"Connect to mail server"},"content":{"rendered":"\n\n\n<p>AtlasX Web Service \u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e1c\u0e48\u0e32\u0e19 SMTP server \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49&nbsp;<code>AppMailService<\/code>&nbsp;\u0e0b\u0e36\u0e48\u0e07\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e17\u0e31\u0e49\u0e07 plain \u0e41\u0e25\u0e30 SSL\/TLS connection \u0e41\u0e25\u0e30\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a self-signed certificate<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32<\/strong><\/h2>\n\n\n\n<p>\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32 mail server \u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c&nbsp;<code>.env<\/code><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>App__Email__SERVER=10.254.7.15\nApp__Email__PORT=25\nApp__Email__ENABLESSL=false\nApp__Email__USERNAME=username@domain.com\nApp__Email__PASSWORD=password\nApp__Email__SENDERADDRESS=sender@domain.com|Sender Name\nApp__Email__FROMPARAMETER=FROM\nApp__Email__TOPARAMETER=TO\nApp__Email__CCPARAMETER=CC\nApp__Email__BCCPARAMETER=BCC\nApp__Email__SUBJECTPARAMETER=SUBJECT\nApp__Email__BODYPARAMETER=BODY\nApp__Email__PRIORITYPARAMETER=PRIORITY\nApp__Email__TEMPLATEPATH=FilesLocalStorage\/EmailTemplates<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #9CDCFE\">App__Email__SERVER<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #B5CEA8\">10.254<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #B5CEA8\">7.15<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">App__Email__PORT<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #B5CEA8\">25<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">App__Email__ENABLESSL<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #569CD6\">false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">App__Email__USERNAME<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #9CDCFE\">username<\/span><span style=\"color: #D4D4D4\">@<\/span><span style=\"color: #9CDCFE\">domain<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">com<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">App__Email__PASSWORD<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #9CDCFE\">password<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">App__Email__SENDERADDRESS<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #9CDCFE\">sender<\/span><span style=\"color: #D4D4D4\">@<\/span><span style=\"color: #9CDCFE\">domain<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">com<\/span><span style=\"color: #D4D4D4\">|<\/span><span style=\"color: #9CDCFE\">Sender<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">App__Email__FROMPARAMETER<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #4FC1FF\">FROM<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">App__Email__TOPARAMETER<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #4FC1FF\">TO<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">App__Email__CCPARAMETER<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #4FC1FF\">CC<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">App__Email__BCCPARAMETER<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #4FC1FF\">BCC<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">App__Email__SUBJECTPARAMETER<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #4FC1FF\">SUBJECT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">App__Email__BODYPARAMETER<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #4FC1FF\">BODY<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">App__Email__PRIORITYPARAMETER<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #4FC1FF\">PRIORITY<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">App__Email__TEMPLATEPATH<\/span><span style=\"color: #D4D4D4\">=<\/span><span style=\"color: #9CDCFE\">FilesLocalStorage<\/span><span style=\"color: #D4D4D4\">\/<\/span><span style=\"color: #9CDCFE\">EmailTemplates<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><strong>Field<\/strong><\/td><td><strong>Required<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td><code>SERVER<\/code><\/td><td>Required<\/td><td>hostname \u0e2b\u0e23\u0e37\u0e2d IP address \u0e02\u0e2d\u0e07 SMTP server<\/td><\/tr><tr><td><code>PORT<\/code><\/td><td>Required<\/td><td>Port \u0e02\u0e2d\u0e07 SMTP server \u0e40\u0e0a\u0e48\u0e19&nbsp;<code>25<\/code>,&nbsp;<code>587<\/code><\/td><\/tr><tr><td><code>ENABLESSL<\/code><\/td><td>Required<\/td><td>\u0e16\u0e49\u0e32\u0e40\u0e1b\u0e47\u0e19&nbsp;<code>true<\/code>&nbsp;\u0e08\u0e30\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e14\u0e49\u0e27\u0e22 StartTLS \u0e16\u0e49\u0e32\u0e40\u0e1b\u0e47\u0e19&nbsp;<code>false<\/code>&nbsp;\u0e08\u0e30\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e41\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e40\u0e02\u0e49\u0e32\u0e23\u0e2b\u0e31\u0e2a<\/td><\/tr><tr><td><code>USERNAME<\/code><\/td><td>Required<\/td><td>\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a authenticate \u0e01\u0e31\u0e1a SMTP server \u0e16\u0e49\u0e32\u0e27\u0e48\u0e32\u0e07\u0e08\u0e30\u0e02\u0e49\u0e32\u0e21 authentication<\/td><\/tr><tr><td><code>PASSWORD<\/code><\/td><td>Required<\/td><td>\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a authenticate \u0e01\u0e31\u0e1a SMTP server<\/td><\/tr><tr><td><code>SENDERADDRESS<\/code><\/td><td>Optional<\/td><td>\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e41\u0e25\u0e30\u0e0a\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e2a\u0e48\u0e07\u0e43\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a&nbsp;<code>email|display name<\/code>&nbsp;\u0e40\u0e0a\u0e48\u0e19&nbsp;<code>sender@domain.com|Sender Name<\/code><\/td><\/tr><tr><td><code>FROMPARAMETER<\/code><\/td><td>Optional<\/td><td>\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e1c\u0e39\u0e49\u0e2a\u0e48\u0e07<\/td><\/tr><tr><td><code>TOPARAMETER<\/code><\/td><td>Optional<\/td><td>\u0e1c\u0e39\u0e49\u0e23\u0e31\u0e1a<\/td><\/tr><tr><td><code>CCPARAMETER<\/code><\/td><td>Optional<\/td><td>\u0e1c\u0e39\u0e49\u0e23\u0e31\u0e1a\u0e2a\u0e33\u0e40\u0e19\u0e32<\/td><\/tr><tr><td><code>BCCPARAMETER<\/code><\/td><td>Optional<\/td><td>\u0e1c\u0e39\u0e49\u0e23\u0e31\u0e1a\u0e2a\u0e33\u0e40\u0e19\u0e32\u0e25\u0e31\u0e1a<\/td><\/tr><tr><td><code>SUBJECTPARAMETER<\/code><\/td><td>Optional<\/td><td>\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d\u0e2d\u0e35\u0e40\u0e21\u0e25<\/td><\/tr><tr><td><code>BODYPARAMETER<\/code><\/td><td>Optional<\/td><td>\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e2d\u0e35\u0e40\u0e21\u0e25<\/td><\/tr><tr><td><code>PRIORITYPARAMETER<\/code><\/td><td>Optional<\/td><td>\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e02\u0e2d\u0e07\u0e2d\u0e35\u0e40\u0e21\u0e25 <code>Low<\/code>,&nbsp;<code>Normal<\/code>,&nbsp;<code>High<\/code>&nbsp;\u0e04\u0e48\u0e32\u0e43\u0e14\u0e04\u0e48\u0e32\u0e2b\u0e19\u0e36\u0e48\u0e07<\/td><\/tr><tr><td><code><code>TEMPLATEPATH<\/code><\/code><\/td><td>Optional<\/td><td>path \u0e02\u0e2d\u0e07 folder \u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a email templates \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e43\u0e0a\u0e49\u0e01\u0e31\u0e1a <code>GetTemplateAbsolutePath()<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\">Service Registration<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u0e42\u0e2b\u0e25\u0e14 Environment Variables<\/h3>\n\n\n\n<p>\u0e40\u0e23\u0e35\u0e22\u0e01&nbsp;<code>EnvironmentUtils.Load()<\/code>&nbsp;\u0e01\u0e48\u0e2d\u0e19 build application<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>EnvironmentUtils.Load();<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #9CDCFE\">EnvironmentUtils<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">Load<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u0e25\u0e07\u0e17\u0e30\u0e40\u0e1a\u0e35\u0e22\u0e19 Service<\/h3>\n\n\n\n<p>\u0e40\u0e1e\u0e34\u0e48\u0e21 MailService \u0e40\u0e02\u0e49\u0e32 DI container \u0e43\u0e19 <code>Program.cs<\/code><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>builder.Services.AddTransient&lt;IAppMailService, AppMailService>();<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #9CDCFE\">builder<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">Services<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">AddTransient<\/span><span style=\"color: #D4D4D4\">&lt;<\/span><span style=\"color: #4EC9B0\">IAppMailService<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #4EC9B0\">AppMailService<\/span><span style=\"color: #D4D4D4\">&gt;();<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\">\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Inject IAppMailService<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>public class MyService\n{\n    private readonly IAppMailService _mailService;\n\n    public MyService(IAppMailService mailService)\n    {\n        _mailService = mailService;\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #9CDCFE\">public<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">class<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">MyService<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">private<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">readonly<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">IAppMailService<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">_mailService<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">public<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">MyService<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">IAppMailService<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">mailService<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">_mailService<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">mailService<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading\"><strong>Send Email<\/strong><\/h3>\n\n\n\n<p>\u0e40\u0e23\u0e35\u0e22\u0e01&nbsp;<code>SendAsync()<\/code>&nbsp;\u0e42\u0e14\u0e22\u0e23\u0e30\u0e1a\u0e38 recipients, subject \u0e41\u0e25\u0e30 HTML body<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>await _mailService.SendAsync(\n    toAddress: &#91;\"user@domain.com\"&#93;,\n    subject: \"\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e23\u0e30\u0e1a\u0e1a\",\n    htmlBody: \"&lt;p>This is a test email.&lt;\/p>\"\n);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">_mailService<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">SendAsync<\/span><span style=\"color: #D4D4D4\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">toAddress<\/span><span style=\"color: #D4D4D4\">: &#91;<\/span><span style=\"color: #CE9178\">&quot;user@domain.com&quot;<\/span><span style=\"color: #D4D4D4\">&#93;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">subject<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">&quot;\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e23\u0e30\u0e1a\u0e1a&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">htmlBody<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">&quot;&lt;p&gt;This is a test email.&lt;\/p&gt;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">);<\/span><\/span><\/code><\/pre><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<p>\u0e2a\u0e48\u0e07\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e2b\u0e25\u0e32\u0e22\u0e04\u0e19\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>await _mailService.SendAsync(\n    toAddress: &#91;\n        \"user1@domain.com\",\n        \"user2@domain.com\",\n        \"user3@domain.com\"\n    &#93;,\n    subject: \"\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e23\u0e30\u0e1a\u0e1a\",\n    htmlBody: \"&lt;p>This is a test email.&lt;\/p>\"\n);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">_mailService<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">SendAsync<\/span><span style=\"color: #D4D4D4\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">toAddress<\/span><span style=\"color: #D4D4D4\">: &#91;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&quot;user1@domain.com&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&quot;user2@domain.com&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #CE9178\">&quot;user3@domain.com&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    &#93;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">subject<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">&quot;\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e23\u0e30\u0e1a\u0e1a&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">htmlBody<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">&quot;&lt;p&gt;This is a test email.&lt;\/p&gt;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Email Template<\/strong><\/h3>\n\n\n\n<p><code>GetTemplateAbsolutePath()<\/code>&nbsp;\u0e04\u0e37\u0e19 path \u0e40\u0e15\u0e47\u0e21\u0e02\u0e2d\u0e07 folder \u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a template \u0e15\u0e32\u0e21\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e43\u0e19&nbsp;<code>TemplatePath<\/code><\/p>\n\n\n\n<p><code>ReplacePlaceholdersWithRegex()<\/code>&nbsp;\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48&nbsp;<code>{{KEY}}<\/code>&nbsp;\u0e43\u0e19 template \u0e14\u0e49\u0e27\u0e22\u0e04\u0e48\u0e32\u0e08\u0e23\u0e34\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e48\u0e07\u0e40\u0e02\u0e49\u0e32\u0e21\u0e32<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>var templatePath = _appSettings.Email!.GetTemplateAbsolutePath();\nvar template = await File.ReadAllTextAsync(Path.Join(templatePath, \"test.html\"));\n\nvar queryParameter = new QueryParameter\n{\n    Parameters = new Dictionary&lt;string, object?>\n    {\n        { \"NAME\", \"user\" },\n        { \"EMAIL\", \"user@domain.com\" }\n    }\n};\n\nvar htmlBody = queryParameter.ReplacePlaceholdersWithRegex(template);\n\nawait _mailService.SendAsync(\n    toAddress: &#91;\"user@domain.com\"&#93;,\n    subject: \"test\",\n    htmlBody: htmlBody\n);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">var<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">templatePath<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">_appSettings<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">Email<\/span><span style=\"color: #D4D4D4\">!.<\/span><span style=\"color: #DCDCAA\">GetTemplateAbsolutePath<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">var<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">template<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">File<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">ReadAllTextAsync<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">Path<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">Join<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">templatePath<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;test.html&quot;<\/span><span style=\"color: #D4D4D4\">));<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">var<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">queryParameter<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">new<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">QueryParameter<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">Parameters<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #569CD6\">new<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">Dictionary<\/span><span style=\"color: #D4D4D4\">&lt;<\/span><span style=\"color: #9CDCFE\">string<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">object<\/span><span style=\"color: #D4D4D4\">?&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        { <\/span><span style=\"color: #CE9178\">&quot;NAME&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;user&quot;<\/span><span style=\"color: #D4D4D4\"> },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        { <\/span><span style=\"color: #CE9178\">&quot;EMAIL&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;user@domain.com&quot;<\/span><span style=\"color: #D4D4D4\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">};<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">var<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">htmlBody<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">queryParameter<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">ReplacePlaceholdersWithRegex<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">template<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">await<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">_mailService<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #DCDCAA\">SendAsync<\/span><span style=\"color: #D4D4D4\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">toAddress<\/span><span style=\"color: #D4D4D4\">: &#91;<\/span><span style=\"color: #CE9178\">&quot;user@domain.com&quot;<\/span><span style=\"color: #D4D4D4\">&#93;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">subject<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">&quot;test&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #9CDCFE\">htmlBody<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #9CDCFE\">htmlBody<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">);<\/span><\/span><\/code><\/pre><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<p><\/p>\n<\/div>\n","protected":false},"featured_media":0,"parent":1186,"menu_order":3,"comment_status":"open","ping_status":"closed","template":"","meta":{"nav_title":"","positive":"","negative":"","footnotes":""},"docs_category":[],"class_list":["post-1190","docs","type-docs","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/1190","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/types\/docs"}],"replies":[{"embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/comments?post=1190"}],"version-history":[{"count":9,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/1190\/revisions"}],"predecessor-version":[{"id":4230,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/1190\/revisions\/4230"}],"up":[{"embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/1186"}],"wp:attachment":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/media?parent=1190"}],"wp:term":[{"taxonomy":"docs_category","embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs_category?post=1190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}