System.Net.MailのMailMessageクラスを利用したメール送信アプリケーション作成時に問題が発生した。
簡単に言えばこのクラスは日本規格対応されていない為発生した現象だ。
対象相手はNTTのiFAXだ。
通常このクラスはUTF-8を前提に作られており、Shift-jis対応を行おうとした際には各パートでエンコードを変更しなければならない。
エンコード自体はできるのだが、メールヘッダーの記述順序が存在し、それが原因でこのクラスの利用が見送られた。
内容:
* 解説書上の以下の記述とSystem.Net.Mailクラスから生成される現象について記します。
*
* 解説書:メールヘッダーのbody部のContent-Type第一句に次の定義が必要
* Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit
*
* System.Net.Mailで作成した場合の第一句:
* Content-Type: multipart/alternative
*
* これはSystem.Net.Mailクラスで作成されるメールヘッダーはjis・shift-jis規格に完全対応していない為発生する。(UTF-8対応)
* このクラスにあるMailMessageクラスのHeaderメソッドはメールヘッダーを独自に生成する機能では無く、HTMLとテキストを混在して生成できるクラス
* AlternateViewクラスを利用してshift-jisにエンコードしたbody部を作成する必要がある。
* ただ、このクラスを利用すると必ずContent-Type: multipart/alternativeがセットされる為、
* 今回の要求には全く合わない。
*
* これを回避する方法はSocketプログラム(TCP/IPプログラム)を別途手組みで作成する必要がある。
納期との噛み合いもあり無償のツールを利用する事で回避できたが、この問題は各国の仕様に振り回されている感が大きい。
2008年10月15日水曜日
2008年8月8日金曜日
app.configからconnectionStringを取得
app.configファイルからデータベースへのコネクションストリングを取得する方法:
使用するクラス
ConfigurationManager
namespace:System.Configuration
注意:
1.System.Configuration.dll への参照を追加する事で使用可能になります。
2.staticな ConnectionStringSettings クラスを使う事でスレッドセーフなコネクションストリングを生成できます。
例:
using System.Configuration;
...
ConnectionStringSettings conStrings =
ConfigurationManager.ConnectionStrings[SendMail
Biz.Properties.Settings.SendMailConnectionString;
//コネクションストリングの取得
Console.WriteLine(conStrings .ConnectionString);
Console.WriteLine(conStrings .ProviderName);
使用するクラス
ConfigurationManager
namespace:System.Configuration
注意:
1.System.Configuration.dll への参照を追加する事で使用可能になります。
2.staticな ConnectionStringSettings クラスを使う事でスレッドセーフなコネクションストリングを生成できます。
例:
using System.Configuration;
...
ConnectionStringSettings conStrings =
ConfigurationManager.ConnectionStrings[SendMail
Biz.Properties.Settings.SendMailConnectionString;
//コネクションストリングの取得
Console.WriteLine(conStrings .ConnectionString);
Console.WriteLine(conStrings .ProviderName);
2008年7月15日火曜日
Access2007でのフォームの移動可能プロパティ
ある事をきっかけにAccess2007の作成したフォームが、タグとして組み込まれてしまっているので、ウィンドウ化できないかとのご質問。
初めて作ったら確かにそのように表示されてしまう。
Access2007のテンプレートアプリケーションと比較したところあるプロパティが違っていた。
『移動可能』プロパティだ!!
ここが初期値として『いいえ』になっているので、最大化・最小化ボタンの表示が『はい』になってもウィンドウで表示されず、タグで表示されてしまう。
以外なトラップだ。。。
初めて作ったら確かにそのように表示されてしまう。
Access2007のテンプレートアプリケーションと比較したところあるプロパティが違っていた。
『移動可能』プロパティだ!!
ここが初期値として『いいえ』になっているので、最大化・最小化ボタンの表示が『はい』になってもウィンドウで表示されず、タグで表示されてしまう。
以外なトラップだ。。。
2008年6月10日火曜日
2008年6月4日水曜日
Accessで『多数のトランザクション処理中にエラー メッセージ "ファイルの共有ロック数が制限を超えています" が表示される』が出たら!!
Access上で大量のトランザクションが発生したらよく出ます。
この値を変更すれば問題ないかと思います。
それにしてもAccessでは大量トランザクションを走らせる事を前提にしていないことが良くわかる。
確かに大量データであればServerとして稼動目的としているDBを使ったほうが良いという事なのだが。。。
たぶん最適な方法!!
『SetOption メソッドを使用して MaxLocksPerFile の値を一時的に変更する 』
DAOを使います。
DAO.DBEngine.SetOption dbmaxlocksperfile,15000
参考:
http://support.microsoft.com/kb/815281/ja
この値を変更すれば問題ないかと思います。
それにしてもAccessでは大量トランザクションを走らせる事を前提にしていないことが良くわかる。
確かに大量データであればServerとして稼動目的としているDBを使ったほうが良いという事なのだが。。。
たぶん最適な方法!!
『SetOption メソッドを使用して MaxLocksPerFile の値を一時的に変更する 』
DAOを使います。
DAO.DBEngine.SetOption dbmaxlocksperfile,15000
参考:
http://support.microsoft.com/kb/815281/ja
2008年5月30日金曜日
2008年5月28日水曜日
2008年5月26日月曜日
CSVファイルの取込
Accessでは簡単に出来るCSVファイルのC#(.NET Framework 2.0)でのインポート
TextFieldParserクラスで簡単に出来る。
ただし、TextFieldParserクラスはMicrosoft.VisualBasic.dllに存在する為、参照設定をする事。
名前空間:Microsoft.VisualBasic.FileIO;
参考記事
2008年5月24日土曜日
モーダルダイアログの表示
どうやらモーダルダイアログをWeb上で表示させるにはメンテナンス上リスキーらしい。
とりあえず以下の方法
- JavaScript の showModalDialog() を使用
- JavaScript の window.open() を使用してフォーカスを常に取得
- Ajax Control Toolkit の ModalPopupExtender コントロールを使用
Ajax Control ToolKitの使用方法は以下のとおりに・・・
Microsoftのサイト
2008年4月18日金曜日
仮想ドライブでisoファイルを取り込む
isoファイルを仮想ドライブで開く方法:
1.仮想ドライブで検索
2.フリーソフトをダウンロード
検索で引っかかったソフト
Virtual CloneDrive :http://www.slysoft.com/ja/virtual-clonedrive.html
これでOK
登録:
投稿 (Atom)