Как отправлять и получать электронную почту в почтовом отправлении (настроенном для поддомена) из корневого домена

Mailgun рекомендует создавать записи DNS (TXT, MX,..) для субдомена, но состояния отправки и получения с корневым доменом возможны после более поздней конфигурации. Я создал все необходимые шаги для mail.example.com у моего регистратора и в Mailgun (добавление домена, настройка маршрутов и т.д.). Теперь я могу получать и отправлять электронные письма на настроенный [email protected]

Что мне теперь нужно изменить, чтобы отправлять и получать по адресу [email protected]? Каковы необходимые изменения в регистраторе, почтовом отправлении и в моих настройках smtp в gmail (для отправки из gmail через mailgun)?

Большое спасибо!

Ответ 1

Если вы настроите Mailgun для субдомена, вы можете отправлять электронные письма из вашего основного домена, передавая правильную переменную to. Например, используя Node.js + nodemailer + nodemailer-mailgun-transport:

var nodemailer = require('nodemailer'),
    mg = require('nodemailer-mailgun-transport'),
    auth = { api_key: 'foobar', domain: 'mail.example.com' },
    nodemailerMailgun = nodemailer.createTransport(mg({ auth: auth }));

nodemailerMailgun.sendMail({
    from: '[email protected]',
    to: '[email protected]',
    subject: 'Hey you, awesome!',
    text: 'Mailgun rocks, pow pow!'
}, someCallback);

Или вы можете прочитать о других методах отправки через API в своих документах. В любом случае, даже если ваш Mailgun настроен для поддомена, вы можете отправить письмо из своего основного домена.

Однако (!) ваши записи MX настроены для вашего поддомена, и, следовательно, вы можете получать там электронные письма. Чтобы получать электронную почту в свой основной домен, добавьте свой основной домен в панель управления Mailgun, например. не mail.example.com, но example.com и выполните соответствующую конфигурацию на вашей панели управления DNS для этого основного домена, пример конфигурации для DigitalOcean DNS для example.com (не поддомена):

TXT    @                v=spf1 include:mailgun.org ~all
TXT    krs._domainkey   k=rsa; p=MIGfM...blablabla
CNAME  email            mailgun.org.
MX     10               mxa.mailgun.org.
MX     10               mxb.mailgun.org.

Имейте в виду, что Mailgun не имеет функций почтового ящика, он может перенаправлять входящие письма только в том случае, если у вас есть соответствующий набор правил. Большинство людей делегируют свои записи MX основного домена в более управляемый ESP, например Gmail. У вас может быть только один набор записей MX для домена, поэтому вам нужно выбрать Gmail или Mailgun.

Ответ 2

Для этого вам нужно использовать mailgun-js

  • Требовать mailgun-js от npm

    var Mailgun = require ('mailgun-js');

2. Задайте параметры для mailgun. то есть apiKey и домен.

var options = {

    apiKey: 'YOUR_API_KEY',
    domain: 'YOUR_DOMAIN'
};
  1. Создайте способ создания электронной почты с этими параметрами.

    var mailgun = new Mailgun (параметры);

  2. Отправьте электронное письмо после установки для него требуемого параметра.

    var data = {
        //From email
        from: '',
        // Email to contact
        to: 'To Email address',
        // CC email
        ccTo: 'CC address if any'
        // Subject
        subject: 'Mail subject',
        // Email msg
        html: 'email message or html'
    };
    
    // Send email
    mailGun.messages().send(data, callbackFunction() {
    
    });
    

Ответ 3

Я использую Mailgun недолго, но я могу помочь с тем, что я узнал до сих пор.

Ваши записи DNS могут быть настроены для Mailgun или стороннего пользователя, такого как Gmail. Я не думаю, что они будут использовать оба. Я не уверен, что это будет с маршрутизацией, потому что он не знал, куда идти.

Для субдомена Mailgun вы использовали mail.example.com с адресом электронной почты [email protected]. Mine работает, но я вообще не создал адреса электронной почты. Мои форматы электронной почты по-прежнему [email protected].

Я собираюсь вставить это из полученного мной письма и отредактировать его в соответствии с приведенным вами примером:

Похоже, вы установили записи MX для корневого домена example.com, однако домен, который вы используете с Mailgun, - mail.example.com. Вам нужно будет изменить имя хоста из example.com на mail.example.com, чтобы они правильно маршрутизировались.

Поскольку Mailgun не имеет почтовых ящиков, получение электронной почты с Mailgun требует использования субдомена с записями MX, указывающих на Mailgun, а также с использованием нашей функции Routes. Хороший способ понять маршруты - это сложный механизм фильтрации и пересылки. С помощью маршрутов вы можете:

  • пересылать входящее письмо в другую среду хранения (например, адрес электронной почты или конечную точку на вашем сервере
  • временно сохранять сообщение (на срок до 3 дней) и извлекать его с помощью API сообщений
  • прекратить обработку сообщения (т.е. отбрасывать определенные сообщения, а не пересылать или хранить их)

Ответ 4

Если вы пытаетесь использовать пакет Django Anymail для отправки электронной почты Mailgun из поддомена, вам нужно отправить электронное письмо с помощью объекта EmailMultiAlternatives и указать домен отправителя электронной почты следующим образом:

from django.core.mail import EmailMultiAlternatives

msg = EmailMultiAlternatives("Subject", "text body",
                             "[email protected]", ["[email protected]"])
msg.esp_extra = {"sender_domain": "mg.example.com"}

msg.send()