отправка почты через C #

Я знаю, как отправлять почту с помощью C # через SMTP моего провайдера, но мой SMTP начал заносить мои электронные письма в черный список и отмечать их как спам. Итак, у меня есть платный сервер, на котором я могу настроить учетные записи электронной почты. Я хочу отправлять почту через свой SMTP-сервер.

Я использую WPF, если это может помочь.

это мой код (электронные письма / pwd удалены)

try
{
    SmtpClient client = new SmtpClient("got it from the CPanel");
    client.UseDefaultCredentials = false;
    NetworkCredential basicAuthInfo = new NetworkCredential("email username", "email password");
    client.Credentials = basicAuthInfo;

    MailAddress from = new MailAddress("from email address");
    MailAddress to = new MailAddress("to email address");

    MailMessage mail = new MailMessage(from,to);

    mail.Subject = txt_subj.Text.ToString();
    mail.SubjectEncoding = Encoding.UTF8;

    mail.Body = "<b>Test Mail</b><br>using <b>HTML</b>.";
    mail.BodyEncoding = Encoding.UTF8;

    mail.IsBodyHtml = true;

    client.Send(mail);

    mail.IsBodyHtml = true;
    client.Send(mail);
    }
    catch (SmtpException ex)
    {
        MessageBox.Show("SMTP Exception has occured: " + ex.Message);
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error Occured: " + ex.Message);
    }

Всегда выдает такую ​​ошибку:

«Произошло исключение SMTP: Ошибка при отправке почты».

Что я здесь делаю не так?

ИЗМЕНИТЬ

Это ошибка, которую я получаю, когда пытаюсь ex.ToString():

System.Net.Mail.SmtpException: Failure sending mail. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 92.242.144.5:25
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object owner, Boolean async, IPAddress& address, Socket& abortSocket, Socket& abortSocket6, Int32 timeout)
at System.Net.PooledStream.Activate(Object owningObject, Boolean async, Int32 timeout, GeneralAsyncDelegate asyncCallback)
at System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate asyncCallback)
at System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout)
at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)
at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)
at System.Net.Mail.SmtpClient.GetConnection()
at System.Net.Mail.SmtpClient.Send(MailMessage message)
--- End of inner exception stack trace ---
at System.Net.Mail.SmtpClient.Send(MailMessage message)
at RemoteMySQL.mail.button1_Click(Object sender, RoutedEventArgs e) in D:\SIKAS_TEST\RemoteMySQL\RemoteMySQL\mail.xaml.cs:line 53

person sikas    schedule 24.11.2010    source источник
comment
Есть ли внутреннее исключение? Попробуйте ex.ToString(), это даст немного больше информации   -  person PostMan    schedule 25.11.2010
comment
или поставить точку останова на этой строке и погрузиться в нее. Какова настоящая причина?   -  person John Gardner    schedule 25.11.2010
comment
Я обновил сообщение с внутренним исключением   -  person sikas    schedule 25.11.2010


Ответы (2)


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

System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 92.242.144.5:25

Забудьте пока свой код. Вам необходимо убедиться, что вы действительно можете установить SMTP-соединение с почтовым сервером. Убедитесь, что имя хоста правильное, проверьте брандмауэры и т. Д.

Если у вас установлен клиент Telnet, вы можете сделать это для быстрой проверки:

telnet <host> 25

Если вы не получили ответа от почтового сервера, вам нужно начать выяснять причину.

person Nigel Whatling    schedule 25.11.2010
comment
Я обнаружил, что почтовый сервер из CPanel не используется. поэтому я использовал основной почтовый сервер домена, а не поддомен. - person sikas; 25.11.2010

Убедитесь, что вы указали способ доставки почты в app.config или web.config:

<system.net>
    <mailSettings><!-- set your pickup folder or SMTP server here --></mailSettings>
</system.net>
person realworldcoder    schedule 24.11.2010
comment
Учитывая, что он все это настраивает явно, я не думаю, что эти настройки будут иметь значение. - person Michael Shimmins; 25.11.2010