none
【C#】System.Net.Mailを利用してメール送信する際、宛先が複数ある場合について RRS feed

  • 質問

  • お世話になります。

    C#Windowsフォームの操作でご質問させて下さい。

     

    System.Net.Mailを利用して、DataTable(下記のコーディングではテーブル名をTBLとしています)の

    TANTOU」フィールドに入力されている人にメールを送信するプログラム作成しております。

    TANTOU」フィールドにはアルファベットで宛先の名前が入力されておりますが、

    重複データがあるためグループ化し、アットマーク以下を追記して使用したいと考えております。

    Linqを使用してグループ化してみましたが、2か所でエラーとなりうまく行きませんでした。

     

    1つ目:GroupByに赤波線のエラーとなりました。

        ⇒エラー内容:’ DataTable’’GroupeBy’の定義が含まれておらず、型’ DataTable’

           最初の引数を受け付ける拡張メソッド’GroupeBy’が見つかりませんでした。

          Usingディレクトリまたはアセンブリを参照が不足していないことを確認してください。

     

    2つ目:foreach (var group in query)queryに赤波線のエラーとなりました。

        ⇒エラー内容:foreachステートメントは、‘?’が‘GetEnumerator’の

         パブリックインスタンス定義を含んでいないため、型‘?’の変数に対しで使用できません。

        

    <試してみたコーディング>

    //MailMessageの作成

     MailMessage msg = new MailMessage();

     //送信者(メールアドレスが"〇×@xxx.co.jp"の場合)

     msg.From = new MailAddress("〇×@xxx.co.jp");

     //宛先(TBL"TANTOU"をグループ化し、@xxx.co.jpを追記)

     

         var query = TBL.GroupBy(x => x.TANTOU);

     

          foreach (var group in query)

          {

              msg.To.Add(new MailAddress("group.Key + @rexxam.co.jp"));

           }

     

    修正方法をご教示いただけたらと思っております。

    C#は学習し始めて間もないため分からないことも多く、大変恐れ入りますがよろしくお願い致します。

     

     

    【環境】

    ・作成しているもの:VisualC#Windows Forms アプリ

    OSWindows10

    .NET のバージョン:4.7.03056

    C#のバージョン:visual studio 2017

    ・接続データベース:Oracle


    2018年10月25日 6:24

回答

  • LinqはEnumerableなものにしか適用できません。よって、以下のようにします。

    var query = TBL.AsEnumerable().GroupBy(x => x.TANTOU);

    DataTableが型付けされていなければ、

    var query = TBL.AsEnumerable().GroupBy(x => x["TANTOU"]);

    queryのエラーは、上記に修正すれば無くなるはずです。

    #ご質問のタイトルと内容が合わないようです。タイトルはご質問の内容を直接表すようにされると良いです。


    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2018年10月25日 7:24
    モデレータ

すべての返信

  • LinqはEnumerableなものにしか適用できません。よって、以下のようにします。

    var query = TBL.AsEnumerable().GroupBy(x => x.TANTOU);

    DataTableが型付けされていなければ、

    var query = TBL.AsEnumerable().GroupBy(x => x["TANTOU"]);

    queryのエラーは、上記に修正すれば無くなるはずです。

    #ご質問のタイトルと内容が合わないようです。タイトルはご質問の内容を直接表すようにされると良いです。


    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2018年10月25日 7:24
    モデレータ
  • trapemiya様

    お教えいただいた方法でエラー回避が出来ました。

    お忙しいところありがとうございました。

    また、タイトルにやりたいことを書いてしまい、質問内容と合致しておらず、

    分かりにくい質問になってしまい大変申し訳ありませんでした。

    次回より回答していただく方が分かりやすいように、投稿前によく点検しようと思います。

    エラーは回避出来ましたが msg.To.Add以降の部分の書き方が間違っているようなので

    自身でもう一度よく考えてみたいと思います。

    いつもありがとうございます。

    2018年10月25日 8:32