MailMessage是否需要任何设置来初始化?

时间:2016-11-21 04:27:43

标签: c# php

在我的控制台程序中,我想使用System.Net.Mail.MailMessage向某人发送电子邮件。但是,我无法初始化它:(

名称空间:

using System.Net;
using System.Net.Mail;

代码:

class emailHelper
{
    string to = "jane@address.com";
    string from = "ben@address.com";
    MailMessage message = new MailMessage(from, to);// errors here
}

错误消息是关于:

  

字段初始值设定项不能引用非静态字段,方法或   property' programA.emailHelper.from'

     

字段初始值设定项不能引用非静态字段,方法或   property' programA.emailHelper.to'

我不知道在使用MailMessage之前我是否会错过任何设置。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

正如错误消息所述

  

字段初始值设定项不能引用非静态字段,方法或   属性

这意味着您无法使用字段初始化另一个字段。但是你可以在这里使用构造函数,你的类实现将如下所示:

class emailHelper
{
    string to = "jane@address.com";
    string from = "ben@address.com";
    MailMessage message; // Declare here
    public emailHelper() // Constructor
    {
        message = new MailMessage(from, to);//initialize here
    }
}

或者像这样使用只读属性getter:

public MailMessage Message
{
    get { return new MailMessage(from, to); }
}

答案 1 :(得分:0)

错误消息为您提供所有信息。

  

字段初始值设定项不能引用非静态字段,方法或   属性

因此,如果您想使其工作,您应该将字符串字段设置为静态。我怀疑你想要什么。

class emailHelper
{
    static string to = "jane@address.com";
    static string from = "ben@address.com";
    MailMessage message = new MailMessage(from, to);// errors here
}

就像我说的那样,这不是你想要的一个辅助方法,而是静态地址和来自地址。您的代码应如下所示:

public class EmailHelper
{
    public string To {get; set;}
    public string From {get; set;}
    public MailMessage message {get; set;}

    public EmailHelper(string to, string from)
    {
         To = to;
         From = from;

         message = new MailMessage(from, to);
    }

}

在这种情况下,您有来自帮助程序的地址,您可以创建多个MailMessage类。

答案 2 :(得分:0)

  

字段初始值设定项无法引用非静态字段,方法或   property'field'实例字段不能用于初始化其他字段   方法外的实例字段。如果您正在尝试初始化a   在方法外部变量,考虑执行初始化   在类构造函数中

查看文档:{​​{3}}

// CS0236.cs
public class MyClass
{
   public int i = 5;
   public int j = i;  // CS0236
   public int k;      // initialize in constructor

   MyClass()
   {
      k = i;
   }

   public static void Main()
   {
   }
}