ASP.NET Входная строка была в неправильном формате - PullRequest
0 голосов
/ 24 ноября 2011

Я создал элемент управления, который создает электронное приглашение на событие. Пользователь вводит свою информацию в текстовые поля, и система собирает эту информацию, добавляет ее в HTML-код для электронного письма и затем отправляет ее.

Я сталкиваюсь с ошибкой, когда объединяю все части. Мой код ниже.

protected void Button1_Click(object sender, EventArgs e)
 {
    SmtpClient smtpClient = new SmtpClient();
    MailMessage message = new MailMessage();

    MailAddress fromAddress = new MailAddress(YourEmailBox.Text, YourNameBox.Text);

    message.From = fromAddress;

    message.To.Add(FriendEmailBox.Text);
    message.Subject = EmailSubject;
    message.IsBodyHtml = true;
    message.Body = "<html>" + string.Format(EmailBody, YourNameBox.Text, PersonalNoteBox.Text) + "</html>";
    smtpClient.Send(message);

    YourNameBox.Text = YourEmailBox.Text = FriendNameBox.Text = FriendEmailBox.Text = PersonalNoteBox.Text = string.Empty;
    Label1.Text = "Email Successfully sent!";

}

Это дает мне входную строку не было в правильном формате ошибка в этой строке:

message.Body = "<html>" + string.Format(EmailBody, YourNameBox.Text, PersonalNoteBox.Text) + "</body></html>";

Не могли бы вы мне помочь?

Ответы [ 5 ]

4 голосов
/ 24 ноября 2011

Почему бы просто не сделать:

message.Body = string.Format("<html>{0}</html>",EmailBody.Text)

Я не понимаю, почему у вас есть 3 аргумента, переданных в строку. Например, "<html>" + string.Format("3","4","5") + "</html>" будетпроизводить

<html>3</html>

1 голос
/ 24 ноября 2011

Как XaiSoft указал, что вы используете string.Format() неправильно, замените:

message.Body =  "<html>" + string.Format(EmailBody, YourNameBox.Text, PersonalNoteBox.Text) + "</html>";

на:

message.Body = string.Format(@"<html>{0}<br /><br />{1}<br /><br />{2}</html>",
                             EmailBody, YourNameBox.Text, PersonalNoteBox.Text)

Если YourNameBox.Text и PersonalNoteBox.Text не обязательны, выв конце вашего письма вы получите 4 дополнительных перевода строки.Если это является какой-то проблемой, вы всегда можете сделать это тоже:

var name = string.IsNullOrEmpty(YourNameBox.Text) 
              ? string.Empty 
              : string.Format(@"<br /><br />{0}", YourNameBox.Text);

var personalNote = string.IsNullOrEmpty(YourNameBox.Text) 
                      ? string.Empty 
                      : string.Format(@"<br /><br />{0}", PersonalNoteBox.Text);

message.Body = string.Format(@"<html>{0}{1}{2}</html>", EmailBody, name, personalNote);

РЕДАКТИРОВАТЬ

Также обратите внимание на символ @, используемый в строках формата.Это будет трактовать вашу строку как литерал, игнорируя любые escape-символы, которые также могут быть причиной вашей проблемы.

1 голос
/ 24 ноября 2011

Может быть, это вместо этого?

message.Body = "<html>" + string.Format(EmailBody.Text, YourNameBox.Text, PersonalNoteBox.Text) + "</html>";

(добавление .Text в EmailBody, предполагая, что EmailBody - это некий текстовый элемент управления)

0 голосов
/ 23 сентября 2014

В моем случае String.Replace - единственное, что сработало для меня, когда дело доходит до замены значений в html-строке значений.

"{0}». Заменить ( "{0}", YourValue)

0 голосов
/ 24 ноября 2011

Я бы предположил, что переменная EmailBody не содержит правильное количество элементов формата для string.Format для работы.

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