ошибка при отправке электронной почты - PullRequest
0 голосов
/ 27 марта 2012

Я использую код, описанный в этом вопросе. Однако при отправке электронного письма получите следующую ошибку.

Почтовый ящик недоступен. Ответ сервера: пожалуйста, авторизуйтесь на использовать этот почтовый сервер

Есть идеи, что может быть не так?

UPATE: Вот код

System.Net.Mail.SmtpClient Client = new System.Net.Mail.SmtpClient(); 
MailMessage Message = new MailMessage("From", "To", "Subject", "Body"); 
Client.Send(Message); 

Со следующим в App.config.

 <system.net> 
    <mailSettings> 
      <smtp from="support@MyDomain1.com"> 
        <network host="smtp.MyDomain1.com" port="111" userName="abc" password="helloPassword1" /> 
      </smtp> 
    </mailSettings> 
  </system.net> 

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

Код, размещенный там, должен работать.если это не так, вы можете попытаться установить имя пользователя и пароль в коде, а не читать их из web.config.

Пример кода от systemnetmail.com :

static void Authenticate()
{
   //create the mail message
   MailMessage mail = new MailMessage();

   //set the addresses
   mail.From = new MailAddress("me@mycompany.com");
   mail.To.Add("you@yourcompany.com");

   //set the content
   mail.Subject = "This is an email";
   mail.Body = "this is the body content of the email.";

   //send the message
   SmtpClient smtp = new SmtpClient("127.0.0.1");

   //to authenticate we set the username and password properites on the SmtpClient
   smtp.Credentials = new NetworkCredential("username", "secret"); 
   smtp.Send(mail);

}
1 голос
/ 27 марта 2012

Да, сервер smtp сообщает вам, что для ретрансляции электронной почты вам необходимо пройти аутентификацию, прежде чем пытаться отправить электронную почту. Если у вас есть учетная запись на сервере smptp, вы можете соответствующим образом установить учетные данные для объекта SmtpClient. В зависимости от механизма аутентификации, поддерживаемого сервером smtp, порт и т. Д. Могут отличаться.

Пример из MSDN:

public static void CreateTestMessage1(string server, int port)
{
            string to = "jane@contoso.com";
            string from = "ben@contoso.com";
            string subject = "Using the new SMTP client.";
            string body = @"Using this new feature, you can send an e-mail message from an application very easily.";
            MailMessage message = new MailMessage(from, to, subject, body);
            SmtpClient client = new SmtpClient(server, port);
            // Credentials are necessary if the server requires the client 
            // to authenticate before it will send e-mail on the client's behalf.
            client.Credentials = CredentialCache.DefaultNetworkCredentials;

      try {
              client.Send(message);
      }
            catch (Exception ex) {
              Console.WriteLine("Exception caught in CreateTestMessage1(): {0}", 
                    ex.ToString() );
      }              
}

Суть в том, что ваши учетные данные не передаются на SMTP-сервер, иначе вы не получите эту ошибку.

...