2017-01-23 2 views
0

特定のテキストの電子メールを送信する単純なアプリケーションを作成することができましたが、同じ電子メールを送信することは可能ですが、クリップボードにコピーされていますか?コンソールアプリケーションを使用して電子メールでクリップボードのコンテンツを送信するC#

私の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名前空間です。

+0

は 'Clipboard.GetText()' – Pikoh

+0

@Pikoh がご提案いただきありがとうございますあなたの主な方法でそれを使用します。

だから、このような静的メソッドを書きますしかし、どこでそれを使うべきですか? 'oMail.TextBody = Clipboard.GetText();' 私はそれを試しましたが、空の電子メールを送信しています。 –

+0

まず、クリップボードにテキスト – Pikoh

答えて

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(); 
+0

あなたの答えをありがとう。 しかし、私が行ったことは、変更を加えずにコードを残すことでしたが、 'static void Main(string [] server)'の上に '[STAThread]'を追加しました。私のために働く。ありがとうございました –

関連する問題