Как настроить разные экземпляры stmpclient в web.config? - PullRequest
4 голосов
/ 03 февраля 2012

Я не верю, что это вопрос MvcMailer (я использую этот почтовик), но я пытаюсь создать поиск в Googleplex, чтобы выяснить, как отправлять электронные письма из разных учетных записей на основе моего контекста.

Мне нужно отправить два электронных письма с двух разных учетных записей электронной почты. Я пытался использовать

mailMessage.From = new MailAddress("some-other-email@gmail.com");

в MvcMailer, но это даже не отображается в электронном письме, которое я выгружаю во временный каталог. Он отображается как то, что находится в web.config: "some-email@gmail.com".

Это мой web.config для MvcMailer:

<mailSettings>
      <!-- Method#1: Configure smtp server credentials -->
      <!--<smtp from="some-email@gmail.com">
        <network enableSsl="true" host="smtp.gmail.com" port="587" userName="some-email@gmail.com" password="valid-password" />
      </smtp>-->
      <!-- Method#2: Dump emails to a local directory -->

            <smtp from="some-email@gmail.com" deliveryMethod="SpecifiedPickupDirectory">
                <network host="localhost" />
                <specifiedPickupDirectory pickupDirectoryLocation="c:\temp\" />
            </smtp>

    </mailSettings>

Это код почтовой программы:

public virtual MailMessage EMailConsultation(EMailConsultationData model)
        {
            var mailMessage = new MailMessage { Subject = "INQUIRY: E-Mail Consultation" };

            mailMessage.From = new MailAddress("some-other-email@gmail.com");//I tested this to see if at the very least it would show up in the e-mail, but it didn't.

            mailMessage.To.Add(model.EMail);

            ViewData = new ViewDataDictionary(model);
            PopulateBody(mailMessage, viewName: "InquiryEMailConsultation");

            return mailMessage;
        }

Опять же, приведенный выше код работает для отправки электронной почты. Я просто не знаю, как настроить почтовую программу для отправки с указанного адреса электронной почты, а не просто с «some-email@gmail.com», как в файле web.config. У меня есть несколько MailMessages, и мне нужно отправить определенные сообщения из другой учетной записи электронной почты.

Буду очень признателен за любую помощь / примеры кода.

Ответы [ 2 ]

5 голосов
/ 28 февраля 2012

Вы можете создать свой собственный объект SmtpClient в коде и отправить сгенерированное письмо с этим. И используйте только 1 настройку smtp в файле web.config (по умолчанию).

в вашем web.config для MvcMailer:

<mailSettings>
    <smtp from="some-email@gmail.com" deliveryMethod="SpecifiedPickupDirectory">
        <network host="localhost" />
        <specifiedPickupDirectory pickupDirectoryLocation="c:\temp\" />
    </smtp>
</mailSettings>

и используйте MyMailer.EMailConsultation().Send();

, если вам нужно отправить электронное письмо через Google (например), используйте это:

using (var googleSmtp = new SmtpClient("smtp.gmail.com", 587))
{
    googleSmtp.EnableSsl = true;
    googleSmtp.Credentials = new NetworkCredential("some-email@gmail.com", "valid-password");

    googleSmtp.Send(MyMailer.EMailConsultation());
}
0 голосов
/ 28 мая 2012

Кроме того, вы можете создать свой пользовательский раздел веб-конфигурации для обработки нескольких записей с резервным и все. Смотри http://www.coralys.com/Articles/Custom-ASPNET-Config-Sections.aspx

...