Тохиргооны заавар
1. Project үүсгэх
link.mn-ээр нэвтэрч Project-ууд хэсгээс шинэ project үүсгэнэ. Баланс цэнэглэгдсэний дараа илгээлт идэвхжинэ.
2. Домайн нэмж DNS тохируулах
Project → Домайн → домайнаа нэмнэ. Харуулсан бичлэгүүдийг домайн бүртгэгч (DNS провайдер) дээрээ нэмнэ:
- DKIM — 3 ширхэг CNAME бичлэг. Эдгээр тавигдмагц домайн баталгаажна.
- MAIL FROM —
mail.таны-домайндээр MX ба SPF (TXT) бичлэг. SPF/DMARC alignment-д хэрэгтэй. - DMARC —
_dmarc.таны-домайнTXT (зөвлөмж).
Анхаар: зарим DNS провайдер host нэрийн ард домайныг автоматаар залгадаг. Тэр тохиолдолд зөвхөн эхний хэсгийг (ж: abc._domainkey) оруулна. DNS тархахад хэдэн минутаас 72 цаг хүртэл болно.
3. SMTP хэрэглэгч үүсгэх
Project → SMTP хэрэглэгч → үүсгэх. Нууц үг зөвхөн нэг удаа харагдана — заавал хадгалаарай. Мартсан бол "Нууц үг шинэчлэх" хийнэ.
| Host | email-smtp.ap-northeast-1.amazonaws.com |
|---|---|
| Port | 587 (STARTTLS, санал болгох) · 465 (TLS) · 2587 |
| Нэвтрэлт | Username / password (LOGIN эсвэл PLAIN) |
| From | Баталгаажсан домайны дурын хаяг, ж: noreply@таны-домайн |
Жишээ: .NET (MailKit)
using var client = new MailKit.Net.Smtp.SmtpClient();
await client.ConnectAsync("email-smtp.ap-northeast-1.amazonaws.com", 587, MailKit.Security.SecureSocketOptions.StartTls);
await client.AuthenticateAsync("SMTP_USERNAME", "SMTP_PASSWORD");
var msg = new MimeKit.MimeMessage();
msg.From.Add(MimeKit.MailboxAddress.Parse("noreply@example.mn"));
msg.To.Add(MimeKit.MailboxAddress.Parse("user@gmail.com"));
msg.Subject = "Сайн байна уу";
msg.Body = new MimeKit.TextPart("plain") { Text = "Туршилт" };
await client.SendAsync(msg);
await client.DisconnectAsync(true);
Жишээ: Node.js (nodemailer)
const transporter = nodemailer.createTransport({
host: "email-smtp.ap-northeast-1.amazonaws.com", port: 587, secure: false,
auth: { user: process.env.SMTP_USERNAME, pass: process.env.SMTP_PASSWORD },
});
await transporter.sendMail({ from: "noreply@example.mn", to: "user@gmail.com", subject: "Сайн байна уу", text: "Туршилт" });
Жишээ: PHP / Laravel (.env)
MAIL_MAILER=smtp
MAIL_HOST=email-smtp.ap-northeast-1.amazonaws.com
MAIL_PORT=587
MAIL_USERNAME=SMTP_USERNAME
MAIL_PASSWORD=SMTP_PASSWORD
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@example.mn
Жишээ: Python
import smtplib, ssl
from email.message import EmailMessage
msg = EmailMessage(); msg["From"] = "noreply@example.mn"; msg["To"] = "user@gmail.com"
msg["Subject"] = "Сайн байна уу"; msg.set_content("Туршилт")
with smtplib.SMTP("email-smtp.ap-northeast-1.amazonaws.com", 587) as s:
s.starttls(context=ssl.create_default_context())
s.login("SMTP_USERNAME", "SMTP_PASSWORD"); s.send_message(msg)
HTTP API (link.mn API key)
SMTP-ээс гадна https://email.link.mn/api/v1 HTTP API-аар илгээж болно. Key-г link.mn консол-оос авна
(lk_live_… бодит, lk_test_… sandbox — шалгалт хийгээд илгээхгүй, төлбөргүй).
Эхлээд энэ project-ийн Тохиргоо → link.mn холболт хэсэгт тухайн link.mn төслийн key-г оруулж холбоно.
Key-г зөвхөн сервер талд, орчны хувьсагчид хадгална — browser/апп руу бүү гарга.
Тодорхойлолт: /openapi.json.
LINK_API_KEY=lk_live_xxxxxxxx
LINK_EMAIL_BASE_URL=https://email.link.mn/api/v1
curl
curl -X POST "$LINK_EMAIL_BASE_URL/emails" \
-H "Authorization: Bearer $LINK_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1001-confirm" \
-d '{"from":"Дэлгүүр <no-reply@shop.mn>","to":["user@gmail.com"],"subject":"Захиалга баталгаажлаа","html":"<p>Баярлалаа!</p>"}'
Node.js (сервер)
const base = process.env.LINK_EMAIL_BASE_URL ?? "https://email.link.mn/api/v1";
const res = await fetch(`${base}/emails`, {
method: "POST",
headers: { Authorization: `Bearer ${process.env.LINK_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ from: "no-reply@shop.mn", to: ["user@gmail.com"], subject: "Сайн байна уу", text: "Туршилт" }),
});
if (!res.ok) throw new Error((await res.json()).detail); // RFC 9457 Problem Details
C# (сервер)
var http = new HttpClient { BaseAddress = new Uri((Environment.GetEnvironmentVariable("LINK_EMAIL_BASE_URL") ?? "https://email.link.mn/api/v1") + "/") };
http.DefaultRequestHeaders.Authorization = new("Bearer", Environment.GetEnvironmentVariable("LINK_API_KEY"));
var res = await http.PostAsJsonAsync("emails", new { from = "no-reply@shop.mn", to = new[] { "user@gmail.com" }, subject = "Сайн байна уу", text = "Туршилт" });
res.EnsureSuccessStatusCode();
Алдааны кодууд: invalid_api_key, key_revoked (401), insufficient_funds (402),
service_not_enabled, forbidden_origin, project_not_linked (403), validation_error,
domain_not_verified (422), rate_limited, quota_exceeded (429, Retry-After), service_unavailable (503).
Тооцоо ба хязгаар
- Нэг хүлээн авагч = нэг имэйл (To, Cc, Bcc бүгд тоологдоно).
- Баланс дуусахад илгээлт автоматаар зогсож, цэнэглэхэд дахин нээгдэнэ.
- Шинэ project өдөрт хязгаартай; хэрэглээ хэвийн бол хязгаарыг нэмүүлнэ.
- Bounce 10%, complaint 0.3%-иас давбал илгээлт автоматаар зогсоно. Spam илгээхийг хориглоно.
Үнэ, багцын мэдээлэл: link.mn/services/email.