Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

Открыть новую тему     Написать ответ в эту тему

mxm1975



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andre_d
 

Цитата:
А существует ли  что-нибудь живое?

 
https://www.slant.co/topics/4111/~documentation-tools-for-net-developers

Всего записей: 279 | Зарегистр. 31-07-2002 | Отправлено: 15:50 18-04-2022
Rayinad

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andre_d
Цитата:
А существует ли  что-нибудь живое?
Посмотри здесь - https://github.com/EWSoftware/SHFB/releases

Всего записей: 80 | Зарегистр. 13-10-2017 | Отправлено: 17:11 18-04-2022 | Исправлено: Rayinad, 17:15 18-04-2022
Starve



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, как включить в своём приложении на .Net 6.0 LTS (Приложение Windows Forms) поддержку тёмной темы? Попробовал, по умолчанию не работает.

Всего записей: 454 | Зарегистр. 19-03-2015 | Отправлено: 14:32 22-04-2022
4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется функция, которая возвращает строку и которая запускается в отдельном потоке.

Код:
Thread trExportReportToPDF = new Thread(() => ExportReportToPDF());
trExportReportToPDF.Start();

Вопрос: как получить значение функции после её выполнения?

Всего записей: 5572 | Зарегистр. 31-05-2009 | Отправлено: 11:35 13-05-2022 | Исправлено: 4seasons, 11:36 13-05-2022
mxm1975



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
4seasons
 
1. не делать так
2. почитать про BackgroundWorker  
https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.backgroundworker?view=netframework-4.8
 
...и тоже так не делать
 
3. почитать про TPL, async\await и вернуться к п.2
https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/task-parallel-library-tpl
 
 

Цитата:
() => ExportReportToPDF()

 
это -- анонимная функция с вызовом ExportReportToPDF
можно объявить внешнюю переменную и "складывать" туда "значение функции" (что бы это ни значило), помучиться с блокировками, синхронихацией... вобщем твой путь -- п.2 и п.3 (в будущем)
 
если всё вышенаписанное непонятно, а задача срочная, могу "набросать" пример

Всего записей: 279 | Зарегистр. 31-07-2002 | Отправлено: 15:54 13-05-2022
4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mxm1975
Цитата:
BackgroundWorker

BackgroundWorker требует System.Windows.Forms, а у меня приложение консольное, потому не годится.

Всего записей: 5572 | Зарегистр. 31-05-2009 | Отправлено: 16:46 13-05-2022 | Исправлено: 4seasons, 16:47 13-05-2022
mxm1975



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
штош...
 
https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/how-to-return-a-value-from-a-task
 
https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task?redirectedfrom=MSDN&view=netframework-4.8#waiting-for-one-or-more-tasks-to-complete
 
обрати внимание, что Task может быть не закончен и обращение к Result приведёт к блокировке потока.
 

Всего записей: 279 | Зарегистр. 31-07-2002 | Отправлено: 17:15 13-05-2022
4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Неожиданно обострился вопрос в связи с отправкой писем по SMTP от Google.
29 апреля мне на почту пришло письмо от Google:

Цитата:
30 мая вы можете потерять доступ к приложениям, использующим небезопасную технологию входа
Чтобы защитить ваш аккаунт, Google больше не будет поддерживать сторонние приложения или устройства, которые предлагают войти в аккаунт Google только с помощью имени пользователя и пароля. Вместо этого вам потребуется выполнять вход с помощью функции Войти с аккаунтом Google или использовать более защищенные технологии, например OAuth 2.0.
Подробнее ...  

Тем не менее, вплоть до 09 часов утра 07 июня из приложения .NET письма благополучно отправлялись по SMTP.
А во второй половине дня 07 июня, письма по SMTP из .NET перестали отправляться с ошибкой:

Цитата:
SMTP-серверу требуется безопасное соединение, или клиент не прошел проверку подлинности. Ответ сервера был следующим: требуется проверка подлинности 5.7.0. Узнайте больше на сайте

 
Не знаю, связано ли это с письмом от Google или нет. В общем нужна статистика.
 
Если кто оправляет письма по SMTP от Google скажите, как у вас там сейчас обстоят дела?

Всего записей: 5572 | Зарегистр. 31-05-2009 | Отправлено: 19:19 07-06-2022 | Исправлено: 4seasons, 13:22 08-06-2022
mxm1975



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Если кто оправляет письма по SMTP от Google скажите, как у вас там сейчас обстоят дела?

 
у меня отправляются, примерно так:
 

Код:
 
                ServicePointManager.ServerCertificateValidationCallback =
                    delegate(object s, X509Certificate certificate,
                        X509Chain chain, SslPolicyErrors sslPolicyErrors)
                    { return true; };
 
                SmtpClient client = new SmtpClient();
                client.Host = "smtp.gmail.com";
                client.Credentials = new NetworkCredential("ПОЛЬЗОВАТЕЛЬ@gmail.com", "СПЕЦ-КЛЮЧ");
                client.Port = 587;
                client.EnableSsl = true;
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
 
                using (MailMessage msg = new MailMessage())
                {
                    msg.From = new MailAddress("АДРЕС");
                    msg.To.Add(new MailAddress("ЕЩЁ АДРЕС"));
                    ......
                    client.Send(msg);
                }
 


Всего записей: 279 | Зарегистр. 31-07-2002 | Отправлено: 17:25 10-06-2022
4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mxm1975
Цитата:
"СПЕЦ-КЛЮЧ"

А это что за ключ и как его можно получить?

Всего записей: 5572 | Зарегистр. 31-05-2009 | Отправлено: 17:27 10-06-2022
mxm1975



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
https://support.google.com/accounts/answer/185833?authuser=2
 

Цитата:
 
 
Sign in with App Passwords
Tip: App Passwords aren’t recommended and are unnecessary in most cases. To help keep your account secure, use "Sign in with Google" to connect apps to your Google Account.  
 
An App Password is a 16-digit passcode that gives a less secure app or device permission to access your Google Account. App Passwords can only be used with accounts that have 2-Step Verification turned on.
 
When to use App Passwords
Tip: iPhones and iPads with iOS 11 or up don’t require App Passwords. Instead use “Sign in with Google.”
 
If the app doesn’t offer “Sign in with Google,” you can either:
 
Use App Passwords
Switch to a more secure app or device
Create & use App Passwords
If you use 2-Step-Verification and get a "password incorrect" error when you sign in, you can try to use an App Password.
 
Go to your Google Account.
Select Security.
Under "Signing in to Google," select App Passwords. You may need to sign in. If you don’t have this option, it might be because:
2-Step Verification is not set up for your account.
2-Step Verification is only set up for security keys.
Your account is through work, school, or other organization.
You turned on Advanced Protection.
At the bottom, choose Select app and choose the app you using and then Select device and choose the device you’re using and then Generate.
Follow the instructions to enter the App Password. The App Password is the 16-character code in the yellow bar on your device.
Tap Done.
 
 

 
Добавлено:
4seasons
 
 
 
Добавлено:
4seasons
 
https://stackoverflow.com/questions/32260/sending-email-in-net-through-gmail?rq=1

Всего записей: 279 | Зарегистр. 31-07-2002 | Отправлено: 17:28 10-06-2022
4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mxm1975

Код:
 
                SmtpClient client = new SmtpClient();
                client.Host = "smtp.gmail.com";
                client.Credentials = new NetworkCredential("ПОЛЬЗОВАТЕЛЬ@gmail.com", "СПЕЦ-КЛЮЧ");
                client.Port = 587;
                client.EnableSsl = true;
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
 
                using (MailMessage msg = new MailMessage())
                {
                    msg.From = new MailAddress("АДРЕС");
                    msg.To.Add(new MailAddress("ЕЩЁ АДРЕС"));
                    ......
                    client.Send(msg);
                }
 

Судя по твоему коду, в новом способе отправки писем по smtp.gmail.com все тоже, что и было, только вместо своего пароля используется "СПЕЦ-КЛЮЧ", который можно получить следуя инструкции Как войти в аккаунт с помощью паролей приложений
 
Я правильно понял?
 
PS
Есть еще один способ отправки писем от google с помощью GMAIL API  
GMAIL API sending email with attachment

Всего записей: 5572 | Зарегистр. 31-05-2009 | Отправлено: 11:04 11-06-2022 | Исправлено: 4seasons, 15:25 12-06-2022
mxm1975



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
4seasons
 

Цитата:
Я правильно понял?

 
Наверное. Я лет 10 назад это "сделал и забыл"
 

Цитата:
Есть еще один способ отправки писем от google

 
сейчас мне этот больше нравится
 
Добавлено:
4seasons
 
GoogleWebAuthorizationBroker.AuthorizeAsync(
....
)).Result
 
 
с этим будь осторожнее, автор не заморачивается -- у него консольное приложение, а как у тебя неизвестно

Всего записей: 279 | Зарегистр. 31-07-2002 | Отправлено: 19:06 14-06-2022
4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mxm1975
Цитата:
с этим будь осторожнее

У меня с этим все давно отработано на примере GoogleDrive.
Я уже лет 10 работаю с GoogleDrive через API по отправке-загрузке архивов баз программным путем.
А с GoogleGmail в плане авторизации все тоже самое, что и на GoogleDrive, единственно с формированием писем там все свое, но это уже мелочи, главное что почта отправляется без проблем.
 

Цитата:
мне этот больше нравится

И раз уж тебе Gmail API тоже нравится, может поможешь разобраться с кириллицей в содержимом письма

Код:
  Public Sub SendHTMLmessage()
 
    Dim mail As MailMessage = New MailMessage()
    mail.Subject = "Проверка почтового ящика " & tbxEmailFS.Text
    'mail.Body = "Это <b><i>проверка работы</i></b> почтового ящика " & tbxEmailFS.Text
    'mail.BodyEncoding = System.Text.Encoding.UTF8
    mail.IsBodyHtml = True
    mail.From = New MailAddress(tbxEmailFS.Text)
    mail.To.Add(New MailAddress("emailto@gmail.com"))
    Dim mimeMessage As MimeKit.MimeMessage = MimeKit.MimeMessage.CreateFromMailMessage(mail)
    Dim message As Google.Apis.Gmail.v1.Data.Message = New Google.Apis.Gmail.v1.Data.Message()
    message.Raw = EncodeBase64(mimeMessage.ToString())
 
    gsGooglGmail.Users.Messages.Send(message, "me").Execute()
 
  End Sub
 
  Public Function EncodeBase64(ByVal text As String) As String
 
    ' Encodes a text-string for sending as an email message
    Dim bytes As Byte() = System.Text.Encoding.UTF8.GetBytes(text)
    Return System.Convert.ToBase64String(bytes).Replace("+"c, "-"c).Replace("/"c, "_"c).Replace("=", "")
 
  End Function
 

В этом примере текст в mail.Body на кириллице приходит кракозябрами, при том что тема письма на кириллице в письме отображается правильно.
Пробовал установить

Код:
mail.BodyEncoding = System.Text.Encoding.GetEncoding("windows-1251")

и

Код:
Dim bytes As Byte() = System.Text.Encoding.GetEncoding("windows-1251").GetBytes(text)

не помогло, может ты поможешь с этим разобраться?

Всего записей: 5572 | Зарегистр. 31-05-2009 | Отправлено: 19:33 14-06-2022 | Исправлено: 4seasons, 19:56 14-06-2022
mxm1975



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
4seasons
 

Цитата:
У меня с этим все давно отработано на примере GoogleDrive

это чудесно, конечно, но я про синхронный вызов асинхронного метода из примера
async\await context и прочие дедлоки (в консоли всё норм)
 
 

Цитата:
раз уж тебе Gmail API тоже нравится, может поможешь разобраться с кириллицей в содержимом письма

не уловил связи, но попробовал -- вроде-бы получилось
 

Цитата:
тема письма на кириллице в письме отображается правильно

у меня наоборот, но раз у тебя норм, то и ладно -- тем более где-то читал, что subject -- вообще 7bit
не стал ничего делать
 

Цитата:
 
From: ...
Reply-To: ....
MIME-Version: 1.0
Date: ....
Message-ID: ...
Subject: =?UTF-8?B?cmF3IHRleHQgc3ViamVjdCAtIMOQwrbDkeKAucOR4oCaw5DCuMOR4oCYIMOQwrXDkSDDkQ==?=
    =?UTF-8?B?4oCaw5HFkiDDkMKyw5DCtcORIMOQwrXDkMK7w5DCuMOQwrU=?=
To: ......@yahoo.com
Content-Type: multipart/alternative; boundary="000000000000d6d49205e17185aa"
Content-Length: 428
 
--000000000000d6d49205e17185aa
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
 
KiBzb21lIGh0bWwgdGVzdCB0ZXh0INC90LUg0LvQtdC/0L4g0LvQuCDQvdC1INCx0Y/RiNC40YLR
liAqDQo=
--000000000000d6d49205e17185aa
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: base64
 
PGI+IHNvbWUgaHRtbCB0ZXN0IHRleHQg0L3QtSDQu9C10L/QviDQu9C4INC90LUg0LHRj9GI0LjR
gtGWIDwvYj4NCg==
--000000000000d6d49205e17185aa--
 

 

 
ну и немного кода

Код:
 
    string credsFilePath = @"........\gmailAPI\client_secret_dev.json";
    string[] Scopes = new []{ GmailService.Scope.GmailSend };
 
    string credPath = "token.json";
    var credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
        (await GoogleClientSecrets.FromFileAsync(credsFilePath)).Secrets,
        Scopes,
        "user",
        CancellationToken.None,
        new FileDataStore(credPath, true));
 
    var service = new GmailService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = "API key GMail test",
    });
 
    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    var bodyBuilder = new BodyBuilder
    {
        TextBody = "raw text body токмо волею пославшей мя жоны",
        HtmlBody = "<b> some html test text не лепо ли не бяшиті </b>"
    };
 
    using var mimeMessage = new MimeMessage
    {
        From = {InternetAddress.Parse(new ParserOptions(), fromEmailAddress)},
        To = {InternetAddress.Parse(new ParserOptions(), toEmailAddress)},
        ReplyTo = {InternetAddress.Parse(new ParserOptions(), fromEmailAddress)},
        Subject = "raw text subject - жытиё есть веселие",
        Body = bodyBuilder.ToMessageBody(),
    };
 
    mimeMessage.Prepare(EncodingConstraint.EightBit);
    var debugString = mimeMessage.ToString();
    var formatOptions = new FormatOptions
    {
        International = true,
        ParameterEncodingMethod = ParameterEncodingMethod.Rfc2231,
        AllowMixedHeaderCharsets = true,
    };
 
    using var ms = new MemoryStream();
    mimeMessage.WriteTo(formatOptions, ms);
 
    var bytes = ms.ToArray();
    var rawString = Base64UrlEncode(bytes);
    var message = new Message
    {
        Raw = rawString,
    };
 
    var executeMessage = await service.Users.Messages.Send(message, "me").ExecuteAsync();
 
 

Всего записей: 279 | Зарегистр. 31-07-2002 | Отправлено: 03:49 15-06-2022 | Исправлено: mxm1975, 03:53 15-06-2022
4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mxm1975
Цитата:
немного кода

Спасибо большое за код.
Чтобы решить проблему кириллицы в теле письма мне из него понадобилась всего одна строчка:

Код:
  Public Sub SendHTMLmessage()
 
    Dim mail As MailMessage = New MailMessage()
    mail.Subject = "Проверка почтового ящика " & tbxEmailFS.Text
    mail.Body = "Это <b><i>проверка работы</i></b> почтового ящика " & tbxEmailFS.Text
    mail.BodyEncoding = System.Text.Encoding.UTF8
    mail.IsBodyHtml = True
    mail.From = New MailAddress(tbxEmailFS.Text)
    mail.To.Add(New MailAddress("emailto@gmail.com"))
    Dim mimeMessage As MimeKit.MimeMessage = MimeKit.MimeMessage.CreateFromMailMessage(mail)
    mimeMessage.Prepare(EncodingConstraint.EightBit)
    Dim message As Google.Apis.Gmail.v1.Data.Message = New Google.Apis.Gmail.v1.Data.Message()
    message.Raw = EncodeBase64(mimeMessage.ToString())
 
    gsGooglGmail.Users.Messages.Send(message, "me").Execute()
 
  End Sub
 
  Public Function EncodeBase64(ByVal text As String) As String
 
    ' Encodes a text-string for sending as an email message
    Dim bytes As Byte() = System.Text.Encoding.UTF8.GetBytes(text)
    Return System.Convert.ToBase64String(bytes).Replace("+"c, "-"c).Replace("/"c, "_"c).Replace("=", "")
 
  End Function
 

после чего и тема письма и тело письма кириллицу стали отображать правильно
 

Всего записей: 5572 | Зарегистр. 31-05-2009 | Отправлено: 13:21 15-06-2022 | Исправлено: 4seasons, 13:30 15-06-2022
mxm1975



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
4seasons
ура!
 
надо будет как-то попробовать понять почему у меня "тема письма" поломана -- это проблема\особенность yahoo или нужно всё как у тебя сделать.
 

Всего записей: 279 | Зарегистр. 31-07-2002 | Отправлено: 13:38 15-06-2022
pavki



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят,  
 
Есть сайт (application) на IIS работает через scriptProcessor dll появилась такая необходимость перехватить запрос localhost/data обработать и вернуть своё view при определенном условии, если условия не срабатывают перенаправить обратно на localhost/data  
разместил рядом с этим с сайтом asp net core app пробовал перехватывать запрос /data и возвращать своё view это работает, а вот если условия не подходят редиректить  обратно не выходит  
Redirect("~/data")
 
возможно редиректить на сайт на том же хосте?  
 

Всего записей: 109 | Зарегистр. 01-11-2009 | Отправлено: 17:28 22-12-2022 | Исправлено: pavki, 17:31 22-12-2022
Vlimiik



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте! Вопрос к профильным программистам. Проблема связана с куки-файлами в браузере Edge. В общем, сложилась ситуация: утрачен доступ к почте; сайт помнит данные авторизации, но они не сохранены в браузере, так как Edge уже много раз обновлялся, и возможно тогда отсутствовала эта опция. Стоит вопрос о создании нового аккаунта, чего хотелось бы избежать. Оптимальный вариант - восстановить как-то пароль из тех данных, которые используются браузером для автоматического входа на сайте.
Предполагаю, что можно найти те самые, нужные, файлы и посмотреть их содержание. Я пользовался софтом, который ищет пароли в браузере - этих записей нет.
У меня есть кое какой опыт программирования, но именно с куки-файлами пока практически не сталкивался. Нужна помощь.

Всего записей: 501 | Зарегистр. 11-08-2007 | Отправлено: 10:59 21-03-2023
DenSyo

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vlimiik
обычно, имя пользователя и пароль передаются в параметрах post запроса авторизации и далее нигде не участвуют. почтовый клиент в браузере, скорее всего, использует выданный ему токен в ответ на авторизацию, вытянуть из которого пароль, даже если он участвует в формировании токена, невозможно. мы стараемся, чтобы ваши пароли нельзя было украсть и если и храним их, то только на своих серверах. обычно, нам достаточно хранить только хэш вашего пароля и сам он не нужен.

Всего записей: 218 | Зарегистр. 19-01-2008 | Отправлено: 10:36 24-03-2023 | Исправлено: DenSyo, 10:37 24-03-2023
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru