✉ email.link.mn

Тохиргооны заавар

1. Project үүсгэх

link.mn-ээр нэвтэрч Project-ууд хэсгээс шинэ project үүсгэнэ. Баланс цэнэглэгдсэний дараа илгээлт идэвхжинэ.

2. Домайн нэмж DNS тохируулах

Project → Домайн → домайнаа нэмнэ. Харуулсан бичлэгүүдийг домайн бүртгэгч (DNS провайдер) дээрээ нэмнэ:

Анхаар: зарим DNS провайдер host нэрийн ард домайныг автоматаар залгадаг. Тэр тохиолдолд зөвхөн эхний хэсгийг (ж: abc._domainkey) оруулна. DNS тархахад хэдэн минутаас 72 цаг хүртэл болно.

3. SMTP хэрэглэгч үүсгэх

Project → SMTP хэрэглэгч → үүсгэх. Нууц үг зөвхөн нэг удаа харагдана — заавал хадгалаарай. Мартсан бол "Нууц үг шинэчлэх" хийнэ.

Hostemail-smtp.ap-northeast-1.amazonaws.com
Port587 (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).

Тооцоо ба хязгаар

Үнэ, багцын мэдээлэл: link.mn/services/email.

Алдаа гарлаа. Дахин ачаалах 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.