2017-01-30 2 views
-1

Я хочу отправить электронное письмо в C# ASP.NET, проблема в том, что я помечен этой ошибкой "возвращает void, ключевое слово return не должно соблюдаться по выражению объекта ". В обоих «обратных» отметках те же ошибки, что это?Возвращает void, ключевое слово return не должно сопровождаться выражением объекта C#

try 
     { 
      MailMessage mail = new MailMessage(); 
      SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); 
      mail.From = new MailAddress("[email protected]", "jhon", Encoding.UTF8); 
      mail.Subject = "test email"; 
      mail.Body = "test email c#"; 
      mail.To.Add("[email protected]"); 
      SmtpServer.Port = 587; 
      SmtpServer.Credentials = new System.Net.NetworkCredential("[email protected]", "password"); 
      SmtpServer.EnableSsl = true; 
      SmtpServer.Send(mail); 
      return true; 
     } 
     catch (Exception ex) 
     { 
      return false; 
     } 
+0

Что возвращаемый тип вашего метода, где вы с помощью этого кода? – apomene

+0

возвращает метод boolean? – markg

+0

У вас есть подпись типа 'void'? – Agalo

ответ

4

Это сообщение об ошибке означает, что ваш метод в возвращаемом типе void, в то время как ваш код означает, что ваш метод должен возвращаться true для успешно отправленных сообщений электронной почты или false о сбоях.

Возвращаемый тип метода изменения до bool должен исправить эту проблему. Тем не менее, лучший подходом является сохранением метода void, и бросить специальное исключение, указывающее неудачную попытку отправить по электронной почте:

public class SendMailException : Exception { 
    public SendMailException(Exception cause) : base(cause) { 
    } 
} 
... 
try { 
    SmtpServer.Send(mail); 
    // return true is removed 
} catch (Exception cause) { 
    throw new SendMailException(cause); 
    // return false is removed 
} 
+0

Кроме того, если в какой-то момент намерение состоит в том, чтобы вырваться из кода, если возникает условие, но НЕ выбрасывать ошибку, просто используйте 'return;', когда тип метода является 'void'. – CDove

1

я думаю, что ваша функция определяются как пустота, и вы возвращаетесь булево, попробуйте изменить возвращаемое значение, как ожидается, BOOL, как так:

bool myFunction(){ 

вместо

void myFunction(){