- - PR -
WinXP VS2003環境で、ファイルを添付したメール送信ができない
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-03-26 11:55
毎々お世話になっております。
Windows XP Pro Visual Studio 2003にて、 C# コンソールアプリケーションの保守を行っています。 ここで、System.Web.Mail 名前空間のメール送信クラスを 使用してメールを送信している処理があるのですが、ファイルを添付しない場合は問題なくメールが遅れるのですが、ファイルを添付するとエラーになってしまいます。 今まで Windows2000 Proで開発していた時は動いていたのですが、XPにした途端動かなくなってしまいました。 コードですが以下になります。 ============================================================================ using System.Web.Mail; MailMessage msg = new MailMessage(); msg.From = "XXXXXX@XXXX.jp"; //実在するメールアドレスを記載 msg.To = "XXXXXX@XXXX.jp"; //実在するメールアドレスを記載 msg.Subject = "test"; msg.Body = "testaaa"; msg.Attachments.Add(new MailAttachment(@".\\\\test.txt", MailEncoding.Base64)); SmtpMail.SmtpServer = "XXX.XXX.XXX.XXX"; //実在するSMTPサーバをIPアドレスで指定 SmtpMail.Send(msg); ============================================================================ エラーですが、お決まりの、”'CDO.Message' オブジェクトにアクセスできませんでした。”でした。。。 InnerExceptionですが、 System.Reflection.TargetInvocationException ”呼び出しのターゲットが例外をスローしました。” 更にInnerExceptionが System.Runtime.InteropServices.COMException ”指定されたプロトコルは不明です。” でした。 InnerExceptionの部分についても調べましたが、技術不足で原因を特定することはできませんでした。 他に試したことですが、 ・Windows FireWall を無効にする ・VS2005で同じコードを実行してみる ⇒ 同様のエラーとなります ・VS2005でSystem.Net.Mailに代謝して実行 ⇒ 問題なく送信可能 ・ローカルにはOffice2003がインストールされているが、CDOもインストールされている CDOか何かがおかしいのかなと思っているのですが、どなたかアドバイスいただけませんでしょうか? よろしくお願いいたします。 | ||||
|
投稿日時: 2008-03-26 19:15
できあがったコードを他の OS、2000 とか Server 2003 とかに持っていくと、どうなりますか?
(問題の切り分け) | ||||
|
投稿日時: 2008-03-26 19:49
Jitta様
いつもお世話になっております。 先に記載しましたソースをReleaseでビルドし、以下環境に配置し実行しました。 ・Windows2000 Server SP3 ・Windows2003 Server Standard Edition SP1 ※どちらのサーバも、以前Windows2000でコンパイルしたアプリは問題なく動いていました。 結果はローカルでデバッグした時と同様エラーになってしまいました。 エラーメッセージも一緒です。 因みに、VS2003については、SP1を当ててあります。 それと、ローカルのOS Windows XP Pro(SP2)に関しては、ドメインに参加していて様々な制限がついているようです。 引き続きよろしくお願いいたします。 | ||||
|
投稿日時: 2008-03-26 21:10
その XP のアセンブリだけが、何らかの修正でおかしくなったのかな?と、思ったのですが、違うようですね。
ところで、円マークはおかしくなるので全角にしますが、 > msg.Attachments.Add(new MailAttachment(@".¥¥¥¥test.txt", MailEncoding.Base64)); 本当にこう書いてあります?掲示板の都合で増殖しただけで、本当は2つ? "@" マークを付けるなら、円マークは1つでいいはず。 | ||||
|
投稿日時: 2008-03-26 21:37
それ以前に、カレントディレクトリをあてにしているのが間違いなんじゃ? プログラマが想定しているカレントディレクトリと、添付ファイルが実際に存在するフォルダが一致してないだけな気が。 | ||||
|
投稿日時: 2008-03-27 08:41
Jitta様 渋木様
御返信ありがとうございます。 ソースコードをコピペする際に、なぜか『¥』が増えてしまったようです。 実際には、『.¥test.txt』でした。混乱させてしまいすみません。
添付しようとするファイルが無い場合は、msg.Attachments.Add のタイミングで、 『メールアタッチメント”.¥test.txt”が無効です』 というエラーを吐くので、パスが間違っている事は無い!と思っていました。が、、、、、 実際に渋木様の言うとおり、試しに絶対パスに変えて動かしてみたところ、、、 なんと動きました!!! メールを添付する際にはエラーにならずに、送信する際にエラーになってしまう。。。私の認識が間違っていたようです。以前動いていたものも見てみましたが、確かに保存先のパスが絶対パスになっていました、、、 お二人お蔭で解決することができました!いつも助けていただいております。 どうもありがとうございました。 |
1