Tiger1074 Ответов: 1

Asp.net контактная форма C# работает на локальном хосте, но не на сервере


Привет,

Ниже приведена контактная форма, которую я закодировал с помощью C#, она отлично работает на локальном хосте, но не на сервере, когда я ее публикую. Я был бы признателен за время и усилия для помощи.

охраняемых недействительными btnsnd_Click(объект отправителя, EventArgs в электронной)
{
пробовать
{
если(стр.Функция IsValid)
{
Получить помощь получить помощь = Новый получить помощь();
почта.От = Новый адрес электронной почты(ваш @ email.Текст);
почта.Для.Добавить("mygmail@gmail.com");

почта.Тело = "имя отправителя :- + Твое имя.Текст + "
"
+ "Электронная Почта Отправителя :"+ Ваш @ email.Текст + "
" + "Предмет : - + Ваш субъект.Текст + "
"
+ "Комментарий :" + Комментарии.Текст;

почта.IsBodyHtml = true;
почта.Приоритет = MailPriority.Обычный;

SmtpClient smclient = новый SmtpClient();
smclient.Хозяин = "smtp.gmail.com";


Системы.Нет.А networkcredential NetworkCred = новая система.Нет.А networkcredential();
NetworkCred.Имя пользователя = "gmail@gmail.com";
NetworkCred.Password = "myPass";

smclient.UseDefaultCredentials = true;
smclient.EnableSsl = true;
smclient.Учетные Данные = NetworkCred;
smclient.Порт = 587;
smclient.DeliveryMethod =
System.Net.Mail.SmtpDeliveryMethod.Сеть;
smclient.Отправить(mailMessage);

lblcommnet.Текст = "";
lblcommnet.ForeColor = Система.Рисование.Цвет.Зеленый;
}
}
поймать (исключение бывший)
{
lblcommnet.Text = "существует неизвестная проблема";
lblcommnet.ForeColor = Система.Рисование.Цвет.Красный;
}
}

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

Я изменил порт # на 25 и 465, но они не работают как на локальном хосте, так и на сервере. Кроме того, учетные данные, которые я использовал как для false, так и для true, и ничего не изменилось.

F-ES Sitecore

Возможно, существует проблема подключения между вашим веб-хостом и smtp-сервером gmail. Самое простое решение-не отправлять электронную почту через gmail в первую очередь, используйте smtp-сервер, предоставленный вашим хостом\сетевым администратором.

Richard MacCutchan

Вы уверены, что поля вашей формы можно напрямую адресовать через ASP.NET-что? Было бы также полезно, если бы вы объяснили должным образом подробно, что вы имеете в виду под, "это не работает".

1 Ответов

Рейтинг:
1

MadMyche

Как насчет того, чтобы я помог тебе помочь самому себе?

Первое, что я бы сделал, это починил ваш try...catch что так близко к тому, чтобы быть сделанным правильно

catch (Exception ex) {
   lblcommnet.Text = "There is an unknown problem";
   lblcommnet.ForeColor = System.Drawing.Color.Red;
}
Мое предложение состояло бы в том, чтобы фактически использовать переменную, которой вы назначили исключение; возможно,
catch (Exception ex) {
   lblcommnet.Text = ex.Title;
   lblcommnet.ForeColor = System.Drawing.Color.Red;
}
это сообщит вам, с каким типом исключения вы имеете дело; или вы можете использовать некоторые другие свойства класса исключений, чтобы получить дополнительную информацию.
Вы также можете записать в журнал всю информацию об исключениях, чтобы помочь себе.

Во-вторых, это касается тестирования против производства для этого. Вы упомянули об изменении UseDefaultCrentials и порта... Но все, что работает в тесте, должно работать в производстве, если только не будет изменено что-то еще, например адрес электронной почты.

Скорее всего, это будет проблема с конкретной используемой учетной записью GMail. В своей цели уменьшить злоупотребление они держат его на довольно жестком поводке. Если вы хотите использовать определенный адрес gmail, эта учетная запись должна быть зарегистрирована и настроена на разрешить менее безопасные приложения Другое дело даже при этом, что они будут время от времени посылать предупреждение системы безопасности когда неопознанное устройство (например, рабочий сервер) пытается использовать учетную запись, особенно в первый раз.


Tiger1074

Спасибо за все комментарии. Я действительно сменил учетную запись с gmail на godaddy, которая у меня была в самом начале, а затем связался с ними , чтобы узнать, почему я не получаю сообщения на свою электронную почту из контактной формы, и ответ был, потому что строка темы пуста!!!!!

Кто-нибудь знает, почему? Он прислал мне электронное письмо с информацией, и да, он не получает текст темы.

Спасибо, если кто-нибудь знает, почему.

MadMyche

Причина, по которой строка темы пуста, заключается в том, что вы никогда не заполняли это свойство; вы только помещаете тему в тело письма. Попробуйте добавить эту строку:
mailMessage.Subject = YourSubject.Text;

Tiger1074

Я извлекаю его из текстового поля с идентификатором YourSubject который является:

YourSubject.текст

Правильно ли это?

MadMyche

Вернуть его-это нормально.... Проблема в том, что вы не добавляете его к почта.Предмет собственность, что не то же самое, что включение субъекта в тело. Смотрите мой последний комментарий

Tiger1074

Большое спасибо. Начать работать:)

Если у вас есть такая возможность, пожалуйста, скажите мне разницу между темой письма и другими словами, такими как имя, адрес электронной почты и т. д. Потому что я просто извлекаю их из формы и не создаю свойство, как вы упомянули для субъекта.

Спасибо снова

MadMyche

Для этого я отсылаю вас к документации класса MailMessage
https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.mailmessage?view=netframework-4.8

Tiger1074

Большое спасибо

MadMyche

Если это помогло вам и решило вашу проблему, не могли бы Вы отметить это как решенное и проголосовать за ответ?