Asp.Net MVC Email: в заголовке письма обнаружен недопустимый символ - PullRequest
0 голосов
/ 19 декабря 2018

Я разработал приложение, которое позволяет отправлять электронные письма нескольким получателям.Чтобы получать электронные письма от получателей, я использую автозаполнение и разделяю различные электронные письма с помощью "," Пример: aaa @ gmail.com, bbb @ gmail.com

Проблема заключается в том, что при нажатии кнопки для отправки, это не работает, и вы получаете следующую ошибку: В заголовке письма обнаружен недопустимый символ: ','.

Image of error

Контроллер

[HttpPost]
        [ValidateInput(false)]
        public ActionResult Index(EmailModel model, List<HttpPostedFileBase> attachments)
        {
            model.Email = "xxxxx@gmail.com";
            using (MailMessage mm = new MailMessage(model.Email, model.Destinatário))
            {
                mm.From = new MailAddress("xxxxx@gmail.com");
                model.Password = "xxxxx";
                mm.Subject = model.Assunto;
                mm.Body = model.Mensagem;

                foreach (HttpPostedFileBase attachment in attachments)
                {
                    if (attachment != null)
                    {
                        string fileName = Path.GetFileName(attachment.FileName);
                        mm.Attachments.Add(new Attachment(attachment.InputStream, fileName));
                    }
                }
                mm.IsBodyHtml = true;
                SmtpClient smtp = new SmtpClient();
                smtp.Host = "smtp.gmail.com";
                smtp.EnableSsl = true;
                NetworkCredential NetworkCred = new NetworkCredential(model.Email, model.Password);
                smtp.UseDefaultCredentials = true;
                smtp.Credentials = NetworkCred;
                smtp.Port = 587;
                smtp.Send(mm);
                ViewBag.Message = "Sucess!";
            }
            return View();
        }

JavaScript

 <script type="text/javascript">
        $(function () {

            $("#email").autocomplete({
                source: function (request, response) {
                    $.ajax(
                        {
                            url: '/Email/AutoComplete/',
                            data: "{ 'prefix': '" + GetCurrentSearchTerm(request.term) + "'}",
                            dataType: "json",
                            type: "POST",
                            contentType: "application/json; charset=utf-8",
                            cache: false,
                            success: function (data) {
                                response($.map(data, function (item) {
                                    return {
                                        label: item.label,
                                        value: item.val,
                                        nome: item.val
                                    };
                                }))
                            }
                        })
                },
                select: function (event, ui) {
                    var LastValue = splitCurrentText(this.value);
                    LastValue.pop();
                    LastValue.push(ui.item.value);
                    LastValue.push("");
                    this.value = LastValue.join(",");
                    return false;
                },
                focus: function () {
                    return false;
                }
            });
            function splitCurrentText(LastTerm) {

                return LastTerm.split(/,\s*/);
            }

            function GetCurrentSearchTerm(LastTerm) {

                return splitCurrentText(LastTerm).pop();
            }
        });
    </script>

1 Ответ

0 голосов
/ 19 декабря 2018

Класс MailMessage не поддерживает адреса, разделенные запятыми.Вместо этого добавьте каждый адрес отдельно к члену To, например:

using (MailMessage mm = new MailMessage())
{
    var toAddresses = model.Destinatário.Split(new [] {";"}, StringSplitOptions.RemoveEmptyEntries);

    foreach (var toAddress in toAddresses)
    {
        mm.To.Add(new MailAddress(toAddress));
    }

    mm.From = new MailAddress("xxxxx@gmail.com");
    model.Password = "xxxxx";
    mm.Subject = model.Assunto;
    mm.Body = model.Mensagem;
    ...
}

См. Также: Как отправить электронную почту нескольким получателям с помощью MailMessage?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...