На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Использование WebMail
    Здравствуйте .Не отправляется почта, в результате выдает: "Sorry - we couldn't send the email ".

    Пока только учусь . Набросала простую модель с 3-х полей:
    ExpandedWrap disabled
          public class Data
          {
              public string email { get; set; }
              public string subject { get; set; }
              public string body { get; set; }
       
          }


    Также контролёры :

    ExpandedWrap disabled
          public class HomeController : Controller
          {
              [HttpGet]
       
              public ActionResult Index()
              {
                  return View();
              }
       
              [HttpPost]
          
             public ActionResult Index(Data d)
              {
                  return View("Thanks",d);
              }
            
          }


    И представления:

    Index:

    ExpandedWrap disabled
      <body>
          <div>
          
              @using (Html.BeginForm())
              {
                  <p>Your email: @Html.TextBoxFor(x=>x.email)</p>
                  
                  <p>Subject: @Html.TextBoxFor(x=>x.subject)</p>
                  
                  <p>Body:@Html.TextAreaFor(x=>x.body)</p>
                  
                  <input type="submit" value="Send"/>
              }    
       
              
       
          </div>
      </body>


    Thanks:

    ExpandedWrap disabled
      <body>
          <div>
              @{
                  try
                  {
                      WebMail.SmtpServer = "smtp.gmail.com";
                      WebMail.Send(
                          "n_****@mail.ru",
                          @Model.subject,
                          @Model.body,
                          @Model.email
                          );
       
                  }
                  catch (Exception)
                  {
                      @:<b>Sorry - we couldn't send the email
                  }
              }
              
       
              Tanks for your letter. Subject : @Model.subject
              
          </div>
      </body>



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

    Сейчас нужно имеено через WebMail это сделать.

    Может кто знает , в чём ошибка ? Пожалуйста , подскажите .
    Заранее огромное спасибо!!!
      Цитата Nastya2410 @
      Может кто знает , в чём ошибка ?


      У Вас в блоке catch никак не обрабатывается Exception, а в ней как раз информация о том, что случилось. По моему Гугль использует SSL, а Вы ее не включили, но могу ошибаться. :-?


      Переделайте пока catch, чтобы он показывал какое именно исключение происходит:

      ExpandedWrap disabled
                    catch (Exception ех)
                    {
                        //Как правильно показать ex.Message?
                    }
        Цитата Vladimir @


        Извините за мою глупость, но как там catch правильно отработать?

        Просто думала , что при неудачи должно выводится сообщение и всё(

        На счёт SSL : Вот так подключила..

        ExpandedWrap disabled
           WebMail.EnableSsl = true;


        Но всё равно не отсылает (


        Может проблема в WebMail.SmtpServer = "smtp.gmail.com"; ?
          гугл не даст просто так шуровать через свои серваки почту, надо с авторизацией делать :yes:

          например отправка почты может выглядеть вот так

          ExpandedWrap disabled
            // Command line argument must the the SMTP host.
            SmtpClient client = new SmtpClient();
            client.Port = 587;
            client.Host = "smtp.gmail.com";
            client.EnableSsl = true;
            client.Timeout = 10000;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            client.Credentials = new System.Net.NetworkCredential("user@gmail.com","password");
             
            MailMessage mm = new MailMessage("donotreply@domain.com", "sendtomyemail@domain.co.uk", "test", "test");
            mm.BodyEncoding = UTF8Encoding.UTF8;
            mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
            mm.Subject = "this is a test email.";
            mm.Body = "this is my test email body";
             
            client.Send(mm);


          вот еще отправка почты
          http://www.c-sharpcorner.com/Blogs/14416/s...in-C-Sharp.aspx

          http://stackoverflow.com/questions/704636/...er-with-c-sharp
          Сообщение отредактировано: Besha -
            Цитата Besha @

            То есть , через Webmail не получится уже эт сделать ?

            Этот код , который Вы написали - это в try нужно вставлять?
            Первая часть - регестрирует SMTP?
            ExpandedWrap disabled
              client.Credentials = new System.Net.NetworkCredential("user@gmail.com", "password");
            - что вот эта строка делает ? прочитал , что Возвращает или задает учетные данные, используемые для проверки подлинности отправителя. Чьи здесь должны быть данные : отправителя или получателя?

            и вот этот участок кода , я так понимаю, отправляет само сообщение:


            ExpandedWrap disabled
               MailMessage mm = new MailMessage(@Model.email, "n****@mail.ru",@Model.subject,@Model.body);
                              mm.BodyEncoding = UTF8Encoding.UTF8;
                              mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
                              mm.Subject = @Model.subject;
                              mm.Body = @Model.body;
               
                              client.Send(mm);


            Добавлено
            Сейчас отправление почты выглядит так:

            ExpandedWrap disabled
              @model Proga.Models.Data
              @using System.Net.Mail
              @using System.Text
              @{
                  ViewBag.Title = "Thanks";
              }
               
              <h2>Thanks</h2>
               
              <body>
                  <div>
                      @{
                          try
                          {
                              // Command line argument must the the SMTP host.
                              SmtpClient client = new SmtpClient();
                              client.Port = 587;
                              client.Host = "smtp.gmail.com";
                              client.EnableSsl = true;
                              client.Timeout = 10000;
                              client.DeliveryMethod = SmtpDeliveryMethod.Network;
                              client.UseDefaultCredentials = false;
                              client.Credentials = CredentialCache.DefaultNetworkCredentials;
               
                              MailMessage mm = new MailMessage(@Model.email, "n*****@mail.ru",@Model.subject,@Model.body);
                              mm.BodyEncoding = UTF8Encoding.UTF8;
                              mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
                              mm.Subject = @Model.subject;
                              mm.Body = @Model.body;
               
                              client.Send(mm);
                              
                          }
                          catch (Exception)
                          {
                            
                              @:<b>Sorry - we couldn't send the email
                          }
                      }
               
               
                      Tanks for your letter. Subject : @Model.subject
               
                  </div>
              </body>



            Но знаю- это неправильно .

            Объясните , пожалуйста , что не так? Очень хочется научиться этому , но не могу разобраться до конца :wall:
            Сообщение отредактировано: Nastya2410 -
              Цитата Nastya2410 @
              Этот код , который Вы написали - это в try нужно вставлять?

              можно и туда :)

              Цитата Nastya2410 @
              - что вот эта строка делает ? прочитал , что Возвращает или задает учетные данные, используемые для проверки подлинности отправителя. Чьи здесь должны быть данные : отправителя или получателя?

              отправителя
              у вас должен быть зареган ящик, вместо user@gmail.com вставляете свой ящик, допустим nastya@gmail.com, ну и пасс от этого ящика и письмо будет отправлено с этого ящика

              Цитата Nastya2410 @
              Сейчас отправление почты выглядит так:

              так у вас там строчки с авторизацией нету :) как раз той, про которую вы спрашивали


              Цитата Nastya2410 @
              прочитал ,

              не палимся, настя, не палимся :D
              Сообщение отредактировано: Besha -
                Цитата Besha @

                Так если там нужна почта отправителя , то могу ли я так написать:

                ExpandedWrap disabled
                  client.Credentials = new System.Net.NetworkCredential(@Model.email, "password");


                Отправитель же вводит свой адресс в текстовое поле при заполнении . Тогда , получается , нужно чтобы он и пароль свой вводил?
                И почта должна быть только ....@gmail.com ?


                Про авторизацию - не понятно ничего
                Я думала , что это имеется в виду вот этот код

                // Command line argument must the the SMTP host.
                ExpandedWrap disabled
                   SmtpClient client = new SmtpClient();
                                  client.Port = 587;
                                  client.Host = "smtp.gmail.com";
                                  client.EnableSsl = true;
                                  .....
                  Цитата Nastya2410 @
                  Отправитель же вводит свой адресс в текстовое поле при заполнении . Тогда , получается , нужно чтобы он и пароль свой вводил?
                  И почта должна быть только ....@gmail.com ?

                  на прямую ты ничего не отошлешь тебе надо отослать, как бы со своего ящика от которого и вводишь пасс, а клиенты всего лишь пишут свое мыло на которое получают письмо с твоео ящика вообщем смотри я маленький вебпроект накидал, думаю так понятней будет :)
                  Прикреплённый файлПрикреплённый файлWebApplication2.rar (21,16 Кбайт, скачиваний: 172)
                  Сообщение отредактировано: Besha -
                    Цитата Besha @

                    Что-то я не понимаю ... то есть , клиент вводит свой ящик ,нажимает отправить - и письмо должно прийти ему от меня что-ли ??
                      Цитата Nastya2410 @
                      то есть , клиент вводит свой ящик ,нажимает отправить - и письмо должно прийти ему от меня что-ли ??

                      угу ... можете завести себе другой ящик с которого клиенту будут письма отсылаться, что б с вашего личного не шла отсылка...
                      Сообщение отредактировано: Besha -
                        Цитата Besha @

                        То есть в моём случае вот так должно быть?

                        ExpandedWrap disabled
                          @model Proga.Models.Data
                          @using System.Net.Mail
                          @using System.Text
                          @{
                              ViewBag.Title = "Thanks";
                          }
                           
                          <h2>Thanks</h2>
                           
                          <body>
                              <div>
                                  
                                  
                           
                                  @{
                                      string msg = string.Empty;
                                      try
                                      {
                                          
                                          SmtpClient client = new SmtpClient();
                                          client.Port = 587;
                                          client.Host = "smtp.gmail.com";
                                          client.EnableSsl = true;
                                          client.Timeout = 10000;
                                          client.DeliveryMethod = SmtpDeliveryMethod.Network;
                                          client.UseDefaultCredentials = false;
                                          client.Credentials = new System.Net.NetworkCredential("nastya.g2410@gmail.com", "nastya2410"); //с него будет рассылка
                           
                                          MailMessage mm = new MailMessage("",@Model.email, "test", "test"); //textbox2 это то окошко куда клиент вводит свое мыло и куда пойдет почта
                                          mm.BodyEncoding = UTF8Encoding.UTF8;
                                          mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
                                          mm.Subject = "this is a test email.";
                                          mm.Body = "this is my test email body";
                                          
                           
                                          client.Send(mm);
                                          
                                      }
                                      catch (Exception ex)
                                      {
                                          @:<b>Sorry - we couldn't send the email
                                           msg = ex.Message;
                                          
                                      }
                                      
                                  }
                           
                           
                                  Tanks for your letter. Subject : @Model.subject
                           
                              </div>
                          </body>


                        Добавлено
                        А если нужно наоборот , чтобы пользователь ввёл свой ящик и с его ящика пришло письмо на мой ящик?
                          Цитата Nastya2410 @
                          То есть в моём случае вот так должно быть?

                          ну как-то так,
                          только пасс свой тут на форуме не публикуйте в исходнике :D

                          Цитата Nastya2410 @
                          А если нужно наоборот , чтобы пользователь ввёл свой ящик и с его ящика пришло письмо на мой ящик?

                          :huh: :D
                          ну пусть поделится с вами своим пассом вобїете его ящик и будете с его ящика себе письма получать
                            Цитата Besha @

                            Всё равно не получается ничего :wall:

                            Вот по файлам весь проект ещё раз:
                            Index:
                            ExpandedWrap disabled
                              @model Proga.Models.Data
                               
                              @{
                                  Layout = null;
                              }
                              @{
                                  ViewBag.Title = "Feedback";
                              }
                               
                              <!DOCTYPE html>
                               
                              <html>
                              <head>
                                  <meta name="viewport" content="width=device-width" />
                                  <title>FeedBack</title>
                              </head>
                              <body>
                                  <div>
                                  
                                      @using (Html.BeginForm())
                                      {
                                          <p>Your email: @Html.TextBoxFor(x=>x.email)</p>
                                          
                                          <p>Subject: @Html.TextBoxFor(x=>x.subject)</p>
                                          
                                          <p>Body:@Html.TextAreaFor(x=>x.body)</p>
                                          
                                          <input type="submit" value="Send"/>
                                      }    
                               
                                      
                               
                                  </div>
                              </body>
                              </html>


                            Thanks выше был .

                            И HomeController:

                            ExpandedWrap disabled
                              namespace Proga.Controllers
                              {
                               
                               
                                  public class HomeController : Controller
                                  {
                                      [HttpGet]
                               
                                      public ActionResult Index()
                                      {
                                          return View();
                                      }
                               
                                      [HttpPost]
                               
                                      public ActionResult Index(Data d)
                                      {
                                          return View("Thanks", d);
                                      }
                               
                                  }
                               
                                  
                              }


                            Я уже не знаю, что ему не так(

                            Вы ещё говорили об авторизации какой-то . Я так не поняла на счёт неё
                              Цитата Nastya2410 @
                              А если нужно наоборот , чтобы пользователь ввёл свой ящик и с его ящика пришло письмо на мой ящик?

                              я понял, вам должны идти отзывы, ну зарегайте ящик feedback@gmail.com и с этого ящика будут вам на ваш ящик приходить письма (в качестве получателя укажите свой ящик) которые будут отправлять пользователи т.е. получится что пользователи будут слать вам письма от имени feedback@gmail.com

                              Цитата Nastya2410 @
                              Вы ещё говорили об авторизации какой-то .

                              ввод логина и пароля это оно и есть ...строчка с логином и паролем это оно и есть

                              Цитата Nastya2410 @
                              Всё равно не получается ничего

                              вы на том проекте что я прилепил пробовали? получается?

                              прицепите ваш проект попробую глянуть
                                Цитата Besha @

                                Вот архив, посмотрите , пожалуйста .
                                Прикреплённый файлПрикреплённый файлProga.rar (47,12 Кбайт, скачиваний: 170)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0643 ]   [ 20 queries used ]   [ Generated: 27.04.24, 11:10 GMT ]