WedX - журнал о программировании и компьютерных науках

Пользовательское действие сохранения не отправляет электронную почту?

Я хочу получить адрес электронной почты получателя и отправителя из внешнего интерфейса!

Я создал действие сохранения «Пользовательская отправка электронной почты» в этом месте: «Sitecore/System/Modules/Settings/Save Actions/» и добавил его в действие «Сохранить» кнопки «Отправить».

В действии «Пользовательская отправка электронной почты» на вкладке «Содержимое» в разделе «Данные» я объявил «Сборка: .Helper, Class:.Helper.CustomEmail»

а в разделе «Отправить» в поле «Параметр» я указал: Хост: smtp.gmail.com, Порт: 587, Логин: [email protected], Пароль: *, IsBodyHtml: true, включить SSL: правда

и в поле «Редактор» я объявил «Редактор: управление: SendMail.Editor».

Но при нажатии на действие «Пользовательская отправка электронной почты» в форме я не ввел значение в поле «Кому», «Копия», «СКК» и т. д.

И в форме я взял три поля "Кому", "От", "Сообщение". Все, что я хочу, это

  • «Я хочу получить адрес получателя и отправителя из внешнего интерфейса»

Это мой код в классе CustomEmail.cs:

public class CustomEmail : ISaveAction, ISubmit
    {
        public void Execute(Sitecore.Data.ID formid, AdaptedResultList fields, params object[] data)
        {
            NameValueCollection formData = new NameValueCollection();
            foreach (AdaptedControlResult acr in fields)
            {
                formData[acr.FieldName] = acr.Value;
            }
            try
            {
                // get field values of form
                string emailTo = formData["To"];
                string emailFrom = formData["From"];
                string personalMsg = formData["Message"];

                bool result = false;
                if (!string.IsNullOrEmpty(emailFrom) && !string.IsNullOrEmpty(emailTo))
                {
                    // send mail
                    result = SendEmail(emailTo, emailFrom, personalMsg);

                }
                // if mail sending fail then show error massege
                if (result == false)
                {
                    Sitecore.Diagnostics.Log.Error("Some error occcured while sending email", this);
                }

            }
            catch (Exception ex)
            {
                Sitecore.Diagnostics.Log.Error(ex.Message.ToString(), this);
            }
        }


        #region SendEmail function
        /// <summary>
        ///  send mail
        /// </summary>
        /// <param name="To"></param>
        /// <param name="From"></param>
        /// <param name="Message"></param>
        public static bool SendEmail(string To, string From, string Message)
        {
            bool result = true;

            try
            {

                MailMessage mailMsg = new MailMessage();

                MailAddress mailFrom = new MailAddress(From);
                mailMsg.From = mailFrom;

                try
                {
                    MailAddress mailTo = new MailAddress(To);
                    mailMsg.To.Add(mailTo);
                }
                catch
                {

                }
                mailMsg.Body = Message;
                mailMsg.IsBodyHtml = true;

                var smtp = new SmtpClient(Sitecore.Configuration.Settings.MailServer, Sitecore.Configuration.Settings.MailServerPort);
                smtp.EnableSsl = true;
                smtp.Send(mailMsg);
            }
            catch
            {
                result = false;

            }

            return result;
        }



        #endregion

        public void Submit(Sitecore.Data.ID formid, AdaptedResultList fields)
        {
            Execute(formid, fields);
        }

        #region IOnLoad Members

        public void OnLoad(bool isPostback, RenderFormArgs args)
        {


        }

        #endregion
    }

В web.config я добавил код:

<setting name="MailServer" value="smtp.gmail.com" />
   <setting name="MailServerUserName" value="***@gmail.com" />
   <setting name="MailServerPassword" value="***" />
   <setting name="MailServerPort" value="587" />

<system.net>
    <mailSettings>
      <smtp deliveryMethod="Network">
        <network enableSsl="true" />
      </smtp>
    </mailSettings>
  </system.net>

Я получил это исключение:

  • Для SMTP-сервера требуется безопасное соединение, иначе клиент не прошел проверку подлинности. Ответ сервера был: 5.5.1 Требуется аутентификация. Узнайте больше на

Пожалуйста, решите эту проблему.


Ответы:


1

Мне кажется, вам нужно добавить учетные данные в свой SmtpClient.

var smtp = new SmtpClient(Sitecore.Configuration.Settings.MailServer, Sitecore.Configuration.Settings.MailServerPort);
smtp.Credentials = new System.Net.NetworkCredential("username", "password")
smtp.EnableSsl = true;
smtp.Send(mailMsg);
30.10.2013
  • Этот. SMTP-сервер Gmail определенно требует аутентификации 30.10.2013
  • Да, теперь он работает. Но если вы хотите взять «Отправитель» из внешнего интерфейса (имеется в виду поле «От») и не хотите указывать имя пользователя и пароль, то что делать? 30.10.2013
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]