Отправка почты на яндекс

489
14 августа 2017, 08:15

Добрый день, возможно ли с помощью класса SmtpClient отправить почту на яндекс? Перепробовал уже кучу разных вариантов, никак не могу понять в чем заключается проблема.

UPD Попробовал вариант, предложенный @sp7 но у меня не работает:

    public static void SendEmail(string to, string from, string boby, string subject)
    {
        MailMessage mail = new MailMessage();
        mail.From = new MailAddress(from); // Адрес отправителя
        mail.To.Add(new MailAddress(from)); // Адрес получателя
        mail.Subject = "Заголовок";
        mail.Body = "Письмо........................";
        SmtpClient client = new SmtpClient();
        client.Host = "smtp.yandex.ru";
        client.Port = 587; // Обратите внимание что порт 587
        client.EnableSsl = true;
        client.Credentials = new NetworkCredential(from, "TYTPAROL"); // Ваши логин и пароль
        try
        {
            client.Send(mail);
        }
        catch (Exception ex)
        {
            Debug.Print(ex.ToString());
        }
    }

Вызвано исключение: "System.Net.Mail.SmtpException" в System.dll System.Net.Mail.SmtpException: Неправильная последовательность команд. Отклик сервера: 5.5.4 Error: send AUTH command first. в System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response) в System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, MailAddress from, Boolean allowUnicode) в System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, Boolean allowUnicode, SmtpFailedRecipientException& exception) в System.Net.Mail.SmtpClient.Send(MailMessage message) в ExceptionHandler.Components.MailSender.SendEmail(String to, String from, String boby, String subject)

UPD Попробовал вариант, предложенный @sp7 для почты на mail.ru и все работает:

        from = "КакаятоПочта@mail.ru";
        client.Host = "smtp.mail.ru";

Пожалуйста если будете отвечать не посылайте меня на ответы пяти летней давности, походу много воды утекло. Спасибо!

Answer 1

Вот пример отправки письма:

static void Main(string[] args)
{
    MailMessage mail = new MailMessage();
    mail.From = new MailAddress("myAddress@yandex.ru"); // Адрес отправителя
    mail.To.Add(new MailAddress("clientAddress@mail.ru")); // Адрес получателя
    mail.Subject = "Заголовок";
    mail.Body = "Письмо........................";
    SmtpClient client = new SmtpClient();
    client.Host = "smtp.yandex.ru";
    client.Port = 587; // Обратите внимание что порт 587
    client.EnableSsl = true;
    client.Credentials = new NetworkCredential("address@yandex.ru", "password"); // Ваши логин и пароль
    client.Send(mail);
    Console.ReadKey();
}
Answer 2

Я пользовался таким способом, особо проблем не возникало.

using System;
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Text;
public class SettingMessage
{
    public static void MessageSend()
    {
        try
        {
            using (var mess = new MailMessage())
            {
                var client = new SmtpClient("smtp.server.ru", 25); // smtp сервер, номер порта ["smtp.mail.ru",25);]
                client.Credentials = new NetworkCredential("Твоя почта", "Твой пароль");
                client.EnableSsl = true;
                mess.From = new MailAddress("Твоя почта");
                mess.To.Add(new MailAddress("Кому отправлять"));
                mess.Subject = Environment.UserName;
                mess.SubjectEncoding = Encoding.UTF8;
                mess.Priority = MailPriority.High;
                mess.IsBodyHtml = false;
                mess.Body = "Заголовок";
                try
                {
                    var attachfile = "С:\\file.txt"; // полный путь к Вашему файлу.
                    if (File.Exists(attachfile)) // Проверка есть ли файл на диске?!
                    {
                        var SF = new Attachment(attachfile);
                        mess.Attachments.Add(SF); // прикрепляем какой-нибудь файл.
                    }
                }
                catch { // тут лови исключения}
                client.Send(mess); // для отправки сообщения
               // mess?.Dispose(); // освобождение ресурсов
            }
        }
        catch
        {
            return;
        }
    }
}
Answer 3

Отправить возможно. Нужно включить SSL, а вот порт, как это ни странно, оставить по умолчанию - 25. К тому же письма должны отправляться строго на адрес, на который настроен SmtpClient. То есть, если вы с помощью сервера Яндекса попробуете отправить письмо на любой другой адрес, кроме своего, - оно не отправится.

READ ALSO
Задать SelectedIndex в ComboBox при привязке данных

Задать SelectedIndex в ComboBox при привязке данных

ComboBox привязан при определенной коллекции данных, которая заполняется полученными из интернета данными после запуска программыНужно что...

204
Реализация Undo/Redo для свойств ViewModel

Реализация Undo/Redo для свойств ViewModel

Есть класс PersonVm, который представляет информацию о человеке:

354
Включить и выключить TextBox с помощью кнопки Button c#

Включить и выключить TextBox с помощью кнопки Button c#

Подскажите пожалуйста, как сделать чтобы при нажатии на Button один раз TextBox включился и второй раз нажать на этот же Button TextBox должен выключитсяСпасибо

278