Member 14743579 Ответов: 2

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


я пытаюсь отправить данные по электронной почте,такие как имя,контакт,адрес электронной почты, город,сообщение эти данные поступают из html. как я могу отправить эти данные в тело электронной почты?

Что я уже пробовал:

public void contactus()
	{
        
        string name = Request.Form.Get("name");
        string contact = Request.Form.Get("contact No.");
        string email = Request.Form.Get("email");
        string city = Request.Form.Get("city");
        string message = Request.Form.Get("message");
      
        SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
        client.EnableSsl = true;
        client.Timeout = 10000;
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.UseDefaultCredentials = false;
        client.Credentials = new NetworkCredential("shss@gmail.com", "1857");
        MailMessage msg = new MailMessage();
        msg.To.Add("shss@gmail.com");
        msg.From = new MailAddress("shss@gmail.com");
        msg.Subject = "new user data"; 

// i am using body to send data but it send only last body data
      
        msg.Body = name;
        msg.Body = contact;
        msg.Body = email;
        msg.Body = city;
        msg.Body = message;
        client.Send(msg);
        Message.Show("Data Submitted");

2 Ответов

Рейтинг:
4

Richard MacCutchan

Вы заменяете msg.body с каждым полем по очереди, так что оно будет содержать только message. Вам нужно добавить все после первого поля, используя += оператор таким образом:

msg.Body = name;
msg.Body += contact;
msg.Body += email;
msg.Body += city;
msg.Body += message;

Однако контент в конечном итоге будет выглядеть примерно так
"John Doe1-800-123-4567johndoe:gmail.comSeattlePlease reply to this message"

Вам нужно добавить больше пробелов и символов новой строки, чтобы сообщение было читабельным.

[редактировать]
На практике, вероятно, было бы лучше использовать StringBuilder чтобы создать тело сообщения перед добавлением его к фактическому сообщению.
[/редактировать]


Рейтинг:
2

MadMyche

Только несколько вещей выделялись для меня в этом сообщении. Первый из которых заключается в том, как вы заполняете msg.Body. Как Ричард как уже отмечалось, вы фактически перезаписываете, когда добавляете к нему, а не добавляете к нему.

Предпочтительным способом построения строки является использование соответствующего имени StringBuilder класс. Сочетая это с string.Format метод может дать нам хорошее многострочное сообщение с ключами и значениями

StringBuilder sb = new StringBuilder();
  sb.AppendLine(string.Format("Name: {0}", name));
  sb.AppendLine(string.Format("Contact No: {0}", contact));
  sb.AppendLine(string.Format("Email: {0}", email));
  sb.AppendLine(string.Format("City: {0}", city));
  sb.AppendLine(string.Format("Message: {0}", message));

msg.Body = sb.ToString();
Другой пункт заключается в том, что вы используете GMail в качестве почтового сервера. Google использует дополнительные меры безопасности для защиты вашей учетной записи, и это добавляет дополнительные проблемы программному доступу, а именно то, что их учетные записи не могут быть доступны большинству клиентов POP &SMTP (email), которые они называют Менее Безопасные Приложения У вас есть несколько вариантов того, что вы можете сделать, описанных в упомянутой статье.

Рекомендации:
Класс Microsoft Docs > StringBuilder[^]
Microsoft Docs > String.Метод Форматирования[^]
Google Accounts => менее безопасные приложения & ваш аккаунт Google[^]