Heba Kamel Ответов: 3

отправка почты успешно выполняется в localhost, но не при публикации на сервере


Привет,
Я пытаюсь отправить почту из gmail, и она успешно отправляется в localhost
но когда публиковали сайт на сервере не отправляли
здесь есть помощь?
это мой код.
MailMessage mail = new MailMessage();
            mail.Subject = strSubject;
            mail.From = new MailAddress("xyz@gmail.com");
            mail.To.Add(ToEmail);
            mail.Bcc.Add("abc@gmail.com");
            mail.Subject = strSubject;
            mail.Body = strBody;
            mail.IsBodyHtml = true;

            SmtpClient smtp = new SmtpClient("smtp.gmail.com", 25);
            smtp.EnableSsl = true;
            NetworkCredential netCre = new NetworkCredential("xyz@gmail.com", "myPassword");
            smtp.Credentials = netCre;
            try
            {
                smtp.Send(mail);
            }
            catch (Exception ex)
            {
                if (ex.InnerException != null)
                {
                    string exInner = ex.InnerException.ToString();
                }
                msg = false;
            }

Sergey Alexandrovich Kryukov

Он будет успешно пинговать, если машина подключена к интернету? Зачем пинговать его снова?
—СА

Sergey Alexandrovich Kryukov

Одна несвязанная проблема: поймать исключение. Во-первых, вы блокируете распространение исключений, молча. Во-вторых, ваше назначение InnerException может быть неплохой идеей, но она ничего не делает; вы должны повторно создать исключение. В-третьих, как правило, довольно плохо обрабатывать исключения слишком локально.

Кстати, почему бы не использовать SMTP-сервер хостинг-провайдера? Это самое обычное дело.

—СА

Michael_Davies

Gmail обычно использует порт 465 для SMTP, вы пробовали это вместо 25.

3 Ответов

Рейтинг:
2

Member 14863691

ниже прилагается решение для работы на локальной машине и сервере.

строка из письма = "from@gmail.com";
Получить помощь получить помощь = Новый получить помощь(fromEmail, "to@gmail.com", "субъекта",тело);
почта.IsBodyHtml = true;
SmtpClient smtpClient = новый SmtpClient("smtp.gmail.com", 587);
smtpClient.EnableSsl = true;
smtpClient.UseDefaultCredentials = false;
smtpClient.Учетные данные = новый NetworkCredential(fromEmail, frompassword);
smtpClient.Отправить(mailMessage);


CHill60

Что это добавляет, чего еще не было сказано в решении 1? Ничего.

Рейтинг:
14

F-ES Sitecore

Решение заключается в не использовании Gmail SMTP-сервера, предоставленный вашим хостинг-провайдера.

Вещи, на которые вы не должны тратить время | The ASP.NET форумы[^]


Рейтинг:
1

koolprasadd

Если он работает на локальном, а теперь и на сервере, то там не может быть проблемы с кодом, вам нужно проверить другие вещи, такие как настройки брандмауэра.
Какую именно ошибку вы получили ?
попробуйте использовать порт № 587, см. ниже фрагмент кода

MailMessage mail = new MailMessage();
 mail.Subject = "Your Subject";
 mail.From = new MailAddress("senderMailAddress");
 mail.To.Add("ReceiverMailAddress");
 mail.Body = "Hello! your mail content goes here...";
 mail.IsBodyHtml = true;

 SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
 smtp.EnableSsl = true;
 NetworkCredential netCre = new NetworkCredential("SenderMailAddress","SenderPassword" );
 smtp.Credentials = netCre;

 try
  {
   smtp.Send(mail);                
  }
  catch (Exception ex)
  {               
  }