使用控制台应用程序c#

时间:2017-01-23 12:20:01

标签: c# email console-application

我设法创建了一个简单的应用程序,它将发送带有特定文本的电子邮件,但我想知道这是否可以发送相同的电子邮件,但文本内容被复制到剪贴板?

在我的oMail.TextBody中,我想粘贴剪贴板的内容并通过电子邮件发送。

    static void Main(string[] server)
    {
        SmtpMail oMail = new SmtpMail("TryIt");
        EASendMail.SmtpClient oSmtp = new EASendMail.SmtpClient();

        // Set sender email address
        oMail.From = "myEmail";

        // Set recipient email address
        oMail.To = "myEmail";

        // Set email subject
        oMail.Subject = "test email from c# project";

        // Set email body
        oMail.TextBody = "Clipboard content pasted here..."
     }

有什么办法吗?另外,我是using EASendMail名称空间。

1 个答案:

答案 0 :(得分:0)

在控制台应用程序中,可以在某些线程状态中访问剪贴板,特别是STA。

请查看this SO question以获取解释。

所以,编写一个这样的静态方法:

static string GetClipboardText()
{
    string result = string.Empty;
    Thread staThread = new Thread(x =>
    {
        try
        {
            result = Clipboard.GetText();
        }
        catch (Exception ex)
        {
            result = ex.Message;
        }
    });
    staThread.SetApartmentState(ApartmentState.STA);
    staThread.Start();
    staThread.Join();
    return result;
}

并在主方法

中使用它
oMail.TextBody = GetClipboardText();