Вы должны войти, чтобы создавать сообщения и темы.

Пробую изучать C# нужна подсказка или помощ

1◄Страница 5 из 7► 7

понял ✅, спасибо 🤝, поменял.
И всё же, как можно убрать это окно?
т.е. если я правильно понял, то в ключе Скопированоshutdown -s -f -t нельзя избавится от этого окна?

Ну и чтобы избавиться от уведомления можно сделать внутренний таймер, который в последний момент будет вызывать выключение и уведомление просто не успеет появиться.

можешь намекнуть, что за "внутренний таймер"?

Сделать так, чтобы программа внутри себя начала отсчет и после вызвала выключение.
первый попавшийся ответ гугл на timers c#
либо, через async / await, но это надо контроллировать

Сейчас проверил, у Меня такая команда не вызывает уведомлений: Скопированоshutdown /s /f /t 36000 /c " ". 
Попробуй так вызывать выключение:Скопировано$"shutdown -s -f -t {result} -c \" \""

Спасибоyuri, 
то, что надо 👌, сейчас работает всё, как и хотел🙌
и без таймеров обошлось😃
проект программы тут,  сама программа тут. может кому-то пригодится

Далее есть в мыслях сделать программу напоминалку, что бы например в блокнот записать все даты дней рождения, и программу синхронизировать с датой и временем компа, и например, что бы она работала в скрытом режиме (автозагрузке), наподобие умного ланчера, и как только дата настала, то эта программа выдавала например messagebox ✉ по середине экрана.

Лайкнули yuri и Nik_Dilayks
yuriNik_Dilayks

Всем привет 🙌
Хочу написать программу, которая будет отправлять письма на почту.
Делаю асинхронно (как на сайте metanit), ошибок нет, но письма не отправляются.
Может это из-за двухэтапной аутентификации? 

мой код

using System;
using System.Net;
using System.Net.Mail;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TestProject
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        void button1_Click(object sender, EventArgs e)
        {
            SendEmailAsync().GetAwaiter();

            async Task SendEmailAsync()
            {
                MailAddress from = new MailAddress("123@gmail.com", "Отправитель");
                MailAddress to = new MailAddress("321@gmail.com", "получатель");
                MailMessage m = new MailMessage(from, to);
                m.Subject = "Тест";
                m.Body = "Письмо-тест 2 работы smtp-клиента";
                SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
                smtp.Credentials = new NetworkCredential("123@gmail.com", "password");
                smtp.EnableSsl = true;
                await smtp.SendMailAsync(m);
            }
        }
    }
}

 

Всем привет
нашёл, рабочий код отправки писем на stackoverflow

сам код

string fromUser = richTextBox1.Text;    // Получим комментарий пользователя
int mark = trackBar1.Value;             // Получим оценку приложения
string uemail = textBox1.Text;          // Получим Email пользователя
string upassword = textBox2.Text;              // Нам понадобится и пароль от Email пользователя
                                        // Как Вы понимаете, рассылать что-то от имени
                                        // чужого аккаунта просто так не получится,
                                        // Так что без авторизации никуда!
try
{
    MailAddress from = new MailAddress(uemail);
    MailAddress to = new MailAddress(myEmail);
    MailMessage message = new MailMessage(from, to) // Формируем сообщение с нужными заголовками
                                                    // Заголовок "от кого" ныне часто игнорируется,
                                                    // и на его место ставится реальный адрес отправителя,
                                                    // так что подписаться миллионером дядей Петей не получится
    {
        Subject = "Твое приложение оценили!",
        IsBodyHtml = false,
        Body = $"Your mark is {mark}{Environment.NewLine}{fromUser}"
    }; 
    SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587)
    {
        Credentials = new NetworkCredential(uemail, upassword),
        EnableSsl = true
    };
    smtp.Send(message);                             // Отправляем наше письмо
    MessageBox.Show("Сообщение успешно отправлено. Спасибо!");
    Close();
}
catch (FormatException)
{
    MessageBox.Show("Неверный формат электронной почты. Почта должна иметь окончания - @gmail/yandex/mail/bk/list и другие");
    textBox1.Clear();
}
catch (ArgumentException)
{
    MessageBox.Show("Строка с адресом не должна быть пуста");
}
catch (Exception ex)
{
    MessageBox.Show(ex.HelpLink);
}

 


Но, этот код работает, только когда нет двухэтапной аутентификации, а если есть на почте, то улетает в ошибку (ex.HelpLink).
Кто-нибудь знает, как это исправить, что бы работала программа и с двухэтапной аутентификацией ?

Приветствую. На сколько я знаю, то для gmail для использования pop3/imap/smt через профиль на сайте генерируется специальный пароль. Погуглите на эту тему. Там это буквально в пару кликов настраивается.

P.S.  Для других почтовых ящиков с поддержкой pop3/imap/smtp и двухфакторной аутентификации аналогично генерируется отдельный пароль.

приветствую Adler, 
Спасибо, нашёл, действительно отправляет, нужно просто подсовывать в программу C#, не оригинальный свой пароль, а тот который для сторонних приложений.
Задать пароль можно, в своей учётке: упарвление аккаунтом google, потом в безопасность и там защитить аккаунт.

Всем привет,
Подскажите пожалуйста, как сделать так, что бы при Drag and Drop файлы прикреплялись к письму на отправку по протоколу gmail?
В код, я добавил прикрепление файлов Скопированоmessage.Attachments.Add(new Attachment(@"C:\Users\Desktop\40.jpg" style="color: #25d39d !important"));
т.е. если укажешь путь к файлу, то отправляет один файл, тот который укажешь, я хочу сделать как в видео , что бы работало с помощью Drag and Drop.
Погуглив, нашёл две похожие статьи 1 и 2 , но разобраться сам не могу, прошу помощи.
Можно ли  это сделать без добавления СкопированоMicrosoft Outlook. Object Library?
Такую форму сделал

код программы

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Text;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace TestProject
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
// событие на нажатие клавиши Enter 
            KeyPreview = true;
            KeyDown += (a, e) => { if (e.KeyValue == (char)Keys.Enter) { button1_Click(button1, null); } };
// установили свой шрифт, заранее добавили его в ресурсы
            PrivateFontCollection myfont = new PrivateFontCollection();
            using (MemoryStream fontStream = new MemoryStream(Properties.Resources.MyFont))
            {
                var data = Marshal.AllocCoTaskMem((int)fontStream.Length);
                byte[] fontdata = new byte[fontStream.Length];
                fontStream.Read(fontdata, 0, (int)fontStream.Length);
                Marshal.Copy(fontdata, 0, data, (int)fontStream.Length);
                myfont.AddMemoryFont(data, (int)fontStream.Length);
                Marshal.FreeCoTaskMem(data);
            }

            Font = new Font(myfont.Families[0], 12);
            Controls.OfType<Control>().Where(x => x.GetType().GetProperty("UseCompatibleTextRendering") != null)
                .ToList().ForEach(x => x.GetType().GetProperty("UseCompatibleTextRendering").SetValue(x, true));
        }
        void button1_Click(object sender, EventArgs e)
        {
            string fromUser = richTextBox1.Text; 
            string uemail = textBox1.Text;    
            string upassword = textBox2.Text; 
                                                          
            try
            {
                MailAddress from = new MailAddress(uemail);
                MailAddress to = new MailAddress("почта на которую отправлять письма@gmail.com");
                MailMessage message = new MailMessage(from, to) 
                                                              
                {
                    Subject = "Твое приложение оценили!",
                    IsBodyHtml = false,
                    Body = $"{Environment.NewLine}{fromUser}"
                };
                SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587)
                {
                    Credentials = new NetworkCredential(uemail, upassword),
                    EnableSsl = true                    
                };   
// прикрепляем файл, который хотим отправить             
                message.Attachments.Add(new Attachment(@"C:\Users\virus\Desktop\40.jpg" style="color: #25d39d !important"));

                smtp.Send(message);                             // Отправляем наше письмо
                MessageBox.Show("Сообщение успешно отправлено. Спасибо!");
                Close();
            }
            catch (FormatException)
            {
                MessageBox.Show("Неверный формат электронной почты. Почта должна иметь окончания - @gmail/yandex/mail/bk/list и другие");
                textBox1.Clear();
            }
            catch (ArgumentException)
            {
                MessageBox.Show("Строка с адресом не должна быть пуста");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.HelpLink);
            }
        }
        void textBox1_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
        }
        void textBox2_Click(object sender, EventArgs e)
        {
            textBox2.Text = "";
        }
// делаем Drag and Drop
        void panel1_DragEnter(object sender, DragEventArgs e)
        {
           if(e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                label1.Text = "Отпустите мышь";
                e.Effect = DragDropEffects.Copy;
            }
        }

        void panel1_DragLeave(object sender, EventArgs e)
        {
            label1.Text = "Перетащите файлы сюда";
        }

        void panel1_DragDrop(object sender, DragEventArgs e)
        {
            label1.Text = "";
            List<string> paths = new List<string>();

            foreach (string obj in (string[])e.Data.GetData(DataFormats.FileDrop))
                if (Directory.Exists(obj))
                    paths.AddRange(Directory.GetFiles(obj, "*.*", SearchOption.AllDirectories));
                else
                    paths.Add(obj);
            label2.Text = string.Join("\r\n", paths);
        }
    }
}

 

Всем привет
Ребят, как в письмо добавить несколько вложений? (например 2-3-5 файлов)

вот мой код:

foreach (string item in label2.Text.Split('\n'))
               {
                   message.Attachments.Add(new Attachment(item));
               }

 


на сайте увидел такой код:

Message.Attachments.Add(new System.Net.Mail.Attachment(strAttPath));

делаю так же, но не работает много вложение. 
Подскажите пожалуйста, как исправить?

Всем привет 🙌
Подскажите пожалуйста, как указать имя файла и расширение файла так: @"C:\Users\virus\Desktop\Fail.exe" , чтоб когда качало любой файл по ссылке, скачивало самого себя (т.е. если файл *.exe то чтоб качало *.exe  а если файл *.mp4 то чтоб сохраняло файл с своим именем  .mp4), как это написать в коде?

вот код

using (WebClient wc = new WebClient())
            {
                wc.DownloadProgressChanged += (s, a) =>
                {
                    progressBar1.Value = a.ProgressPercentage;
                };
                wc.DownloadFileAsync(new Uri($"{textBox1.Text}"), @"C:\Users\virus\Desktop\Fail.exe");
            }

 

Спасибо

Цитата: Aleksey от 11.03.2023, 21:39

понял ✅, спасибо 🤝, поменял.
И всё же, как можно убрать это окно?
т.е. если я правильно понял, то в ключе Скопированоshutdown -s -f -t нельзя избавится от этого окна?

Ну и чтобы избавиться от уведомления можно сделать внутренний таймер, который в последний момент будет вызывать выключение и уведомление просто не успеет появиться.

можешь намекнуть, что за "внутренний таймер"?

какая версия Windows?

Цитата: sigus от 03.04.2023, 15:59
Цитата: Aleksey от 11.03.2023, 21:39

понял ✅, спасибо 🤝, поменял.
И всё же, как можно убрать это окно?
т.е. если я правильно понял, то в ключе Скопированоshutdown -s -f -t нельзя избавится от этого окна?

Ну и чтобы избавиться от уведомления можно сделать внутренний таймер, который в последний момент будет вызывать выключение и уведомление просто не успеет появиться.

можешь намекнуть, что за "внутренний таймер"?

какая версия Windows?

Windows 10 Pro x64 (1803 build 17134)

Цитата: Aleksey от 03.04.2023, 16:11
Цитата: sigus от 03.04.2023, 15:59
Цитата: Aleksey от 11.03.2023, 21:39

понял ✅, спасибо 🤝, поменял.
И всё же, как можно убрать это окно?
т.е. если я правильно понял, то в ключе Скопированоshutdown -s -f -t нельзя избавится от этого окна?

Ну и чтобы избавиться от уведомления можно сделать внутренний таймер, который в последний момент будет вызывать выключение и уведомление просто не успеет появиться.

можешь намекнуть, что за "внутренний таймер"?

какая версия Windows?

Windows 10 Pro x64 (1803 build 17134)

нужно навсегда убрать это окно?

1◄Страница 5 из 7► 7