2017-01-30 48 views
-1

C#ASP.NETで電子メールを送信したいのですが、このエラーをマークするのが問題です。オブジェクト表現によって」。両方の "return"マークで同じエラー、これは何ですか?戻り値void、戻り値のキーワードの後に​​オブジェクト式を付けることはできません。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

bool myFunction(){ 

:ブールは、そのようBOOLすることが期待戻り値を変更してみてください? – apomene

+0

このメソッドはブール値を返しますか? – markg

+0

メソッドシグネチャに 'void '戻り値の型がありますか? – Agalo

答えて

4

このエラーメッセージは、あなたのコードは、あなたのメソッドが失敗を示すために正常に送信された電子メールのためのtrue、またはfalseを返すべきであることを意味している間、あなたのメソッドの戻り値の型は、voidであることを意味します。

メソッドの戻り値の型を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

また、条件が発生したときにコードを抜け出そうとするが、エラーをスローしないようにするには、メソッドの型「無効」です。 – CDove

1

私はあなたの関数は、ボイドのように定義されていることを考えると、あなたは戻っていますあなたはこのコードを使用して、メソッドの戻り値の型は何代わり

void myFunction(){ 
関連する問題