Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.216.83.240] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Здравствуйте .Не отправляется почта, в результате выдает: "Sorry - we couldn't send the email ".
Пока только учусь . Набросала простую модель с 3-х полей: public class Data { public string email { get; set; } public string subject { get; set; } public string body { get; set; } } Также контролёры : public class HomeController : Controller { [HttpGet] public ActionResult Index() { return View(); } [HttpPost] public ActionResult Index(Data d) { return View("Thanks",d); } } И представления: Index: <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: <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 это сделать. Может кто знает , в чём ошибка ? Пожалуйста , подскажите . Заранее огромное спасибо!!! |
Сообщ.
#2
,
|
|
|
Цитата Nastya2410 @ Может кто знает , в чём ошибка ? У Вас в блоке catch никак не обрабатывается Exception, а в ней как раз информация о том, что случилось. По моему Гугль использует SSL, а Вы ее не включили, но могу ошибаться. Переделайте пока catch, чтобы он показывал какое именно исключение происходит: catch (Exception ех) { //Как правильно показать ex.Message? } |
Сообщ.
#3
,
|
|
|
Цитата Vladimir @ Извините за мою глупость, но как там catch правильно отработать? Просто думала , что при неудачи должно выводится сообщение и всё( На счёт SSL : Вот так подключила.. WebMail.EnableSsl = true; Но всё равно не отсылает ( Может проблема в WebMail.SmtpServer = "smtp.gmail.com"; ? |
Сообщ.
#4
,
|
|
|
гугл не даст просто так шуровать через свои серваки почту, надо с авторизацией делать
например отправка почты может выглядеть вот так // 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 |
Сообщ.
#5
,
|
|
|
Цитата Besha @ То есть , через Webmail не получится уже эт сделать ? Этот код , который Вы написали - это в try нужно вставлять? Первая часть - регестрирует SMTP? client.Credentials = new System.Net.NetworkCredential("user@gmail.com", "password"); и вот этот участок кода , я так понимаю, отправляет само сообщение: 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); Добавлено Сейчас отправление почты выглядит так: @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> Но знаю- это неправильно . Объясните , пожалуйста , что не так? Очень хочется научиться этому , но не могу разобраться до конца |
Сообщ.
#6
,
|
|
|
Цитата Nastya2410 @ Этот код , который Вы написали - это в try нужно вставлять? можно и туда Цитата Nastya2410 @ - что вот эта строка делает ? прочитал , что Возвращает или задает учетные данные, используемые для проверки подлинности отправителя. Чьи здесь должны быть данные : отправителя или получателя? отправителя у вас должен быть зареган ящик, вместо user@gmail.com вставляете свой ящик, допустим nastya@gmail.com, ну и пасс от этого ящика и письмо будет отправлено с этого ящика Цитата Nastya2410 @ Сейчас отправление почты выглядит так: так у вас там строчки с авторизацией нету как раз той, про которую вы спрашивали Цитата Nastya2410 @ прочитал , не палимся, настя, не палимся |
Сообщ.
#7
,
|
|
|
Цитата Besha @ Так если там нужна почта отправителя , то могу ли я так написать: client.Credentials = new System.Net.NetworkCredential(@Model.email, "password"); Отправитель же вводит свой адресс в текстовое поле при заполнении . Тогда , получается , нужно чтобы он и пароль свой вводил? И почта должна быть только ....@gmail.com ? Про авторизацию - не понятно ничего Я думала , что это имеется в виду вот этот код // Command line argument must the the SMTP host. SmtpClient client = new SmtpClient(); client.Port = 587; client.Host = "smtp.gmail.com"; client.EnableSsl = true; ..... |
Сообщ.
#8
,
|
|
|
Цитата Nastya2410 @ Отправитель же вводит свой адресс в текстовое поле при заполнении . Тогда , получается , нужно чтобы он и пароль свой вводил? И почта должна быть только ....@gmail.com ? на прямую ты ничего не отошлешь тебе надо отослать, как бы со своего ящика от которого и вводишь пасс, а клиенты всего лишь пишут свое мыло на которое получают письмо с твоео ящика вообщем смотри я маленький вебпроект накидал, думаю так понятней будет Прикреплённый файлWebApplication2.rar (21,16 Кбайт, скачиваний: 172) |
Сообщ.
#9
,
|
|
|
Цитата Besha @ Что-то я не понимаю ... то есть , клиент вводит свой ящик ,нажимает отправить - и письмо должно прийти ему от меня что-ли ?? |
Сообщ.
#10
,
|
|
|
Цитата Nastya2410 @ то есть , клиент вводит свой ящик ,нажимает отправить - и письмо должно прийти ему от меня что-ли ?? угу ... можете завести себе другой ящик с которого клиенту будут письма отсылаться, что б с вашего личного не шла отсылка... |
Сообщ.
#11
,
|
|
|
Цитата Besha @ То есть в моём случае вот так должно быть? @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> Добавлено А если нужно наоборот , чтобы пользователь ввёл свой ящик и с его ящика пришло письмо на мой ящик? |
Сообщ.
#12
,
|
|
|
Цитата Nastya2410 @ То есть в моём случае вот так должно быть? ну как-то так, только пасс свой тут на форуме не публикуйте в исходнике Цитата Nastya2410 @ А если нужно наоборот , чтобы пользователь ввёл свой ящик и с его ящика пришло письмо на мой ящик? ну пусть поделится с вами своим пассом вобїете его ящик и будете с его ящика себе письма получать |
Сообщ.
#13
,
|
|
|
Цитата Besha @ Всё равно не получается ничего Вот по файлам весь проект ещё раз: Index: @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: namespace Proga.Controllers { public class HomeController : Controller { [HttpGet] public ActionResult Index() { return View(); } [HttpPost] public ActionResult Index(Data d) { return View("Thanks", d); } } } Я уже не знаю, что ему не так( Вы ещё говорили об авторизации какой-то . Я так не поняла на счёт неё |
Сообщ.
#14
,
|
|
|
Цитата Nastya2410 @ А если нужно наоборот , чтобы пользователь ввёл свой ящик и с его ящика пришло письмо на мой ящик? я понял, вам должны идти отзывы, ну зарегайте ящик feedback@gmail.com и с этого ящика будут вам на ваш ящик приходить письма (в качестве получателя укажите свой ящик) которые будут отправлять пользователи т.е. получится что пользователи будут слать вам письма от имени feedback@gmail.com Цитата Nastya2410 @ Вы ещё говорили об авторизации какой-то . ввод логина и пароля это оно и есть ...строчка с логином и паролем это оно и есть Цитата Nastya2410 @ Всё равно не получается ничего вы на том проекте что я прилепил пробовали? получается? прицепите ваш проект попробую глянуть |
Сообщ.
#15
,
|
|
|
Цитата Besha @ Вот архив, посмотрите , пожалуйста . Прикреплённый файлProga.rar (47,12 Кбайт, скачиваний: 170) |