C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 添付メールとして送信


(過去ログ 41 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■21541 / inTopicNo.1)  添付メールとして送信
  
□投稿者/ kaoru (20回)-(2008/07/03(Thu) 22:24:48)

分類:[C#] 

いつもたいへんお世話になります。
まずは相談から。
オープンダイアログで選択した画像ファイルを添付メールとして送信しようと思っています。
現在は、バッチファイルとコマンドライン版のbase64、sendmailを使っています。これをC#だけで行えたらと考えています。

最初は、選択した画像の一覧さえ取得できれば、そこから先は従来の外部のbase64、sendmailを使えばよいかと思っていたのですが(弱い)、せっかくなのでぜんぶ(あるいは一部を)置き換えたいと考えました(前向き)。
最初は、C#でのBase64エンコードを調べていたのですが、どうもBase64にしてからメールを送信するよりは、いきなりメール送信してしまったほうが処理が少ないように思えました。ざっと見ると、かなりBase64の処理と、メールの処理のコードが違っているので、ひとつの処理をふたつに分けて二度手間するのはちょっと現状のわたしのレベルではとうてい無駄が多いというか無理な難問に直面しすぎると考えました。
メールを送信するC#のプログラムはいくつか見つけたのですが、たいていのサンプルの問題は次の2点と考えています。

・メールアドレスや各種設定を決め打ちしている。外部のファイルから読みたい。ファイルは下記の通り。ふたつのファイルからなっている。現在のところ送信先は固定。
・smtp認証が必要なので認証に対応したい。Port587も対応したい。Portと認証対応のソースは見当たらない? まだ探せてないです。そんなことないか。次のようなのがありますね。これで試しはしたのですが、どうもメールが届かない…。なにか問題が起きていることだけはわかっています。

//MailMessageの作成
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(
"from@xxx.xxx", "to@xxx.xxx", "題名", "本文");

System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient();
//SMTPサーバーを指定する
sc.Host = "localhost";
//ポート番号を指定する
sc.Port = 25;
//メッセージを送信する
sc.Send(msg);

//後始末
msg.Dispose();
http://dobon.net/vb/dotnet/internet/smtpport.html

設定ファイルは下記の通り。

sendmail.ini
[SMTP]
Host=server.smtp.ne.jp
Port=587
Mail=kaoru@gmail.com
Name=kaoru
Jconv=0
ASMTPUse=1
User=kaoru@gmail.com
Pass=password
[POP3]
POPUse=0
Host=server.pop.ne.jp
Port=110
User=kaoru
Pass=password

to_mailaddress.txt
tomail@tomail.ne.jp

これで進めてなんとかなりそうですかね〜?
ご意見賜りたく。

引用返信 編集キー/
■21545 / inTopicNo.2)  Re[1]: 添付メールとして送信
□投稿者/ れい (687回)-(2008/07/04(Fri) 08:00:50)
No21541 (kaoru さん) に返信
> オープンダイアログで選択した画像ファイルを添付メールとして送信しようと思っています。
> 現在は、バッチファイルとコマンドライン版のbase64、sendmailを使っています。これをC#だけで行えたらと考えています。
>
> 最初は、選択した画像の一覧さえ取得できれば、そこから先は従来の外部のbase64、sendmailを使えばよいかと思っていたのですが(弱い)、せっかくなのでぜんぶ(あるいは一部を)置き換えたいと考えました(前向き)。

従来のものが動いているのであればそれを使うのをオススメします。

> これで進めてなんとかなりそうですかね〜?
> ご意見賜りたく。

パスワードをファイルに保存するという部分は考慮する必要があると重いますが、
この仕様で可能か不可能か、という話なら可能だと思います。

> 最初は、C#でのBase64エンコードを調べていたのですが、どうもBase64にしてからメールを送信するよりは、いきなりメール送信してしまったほうが処理が少ないように思えました。ざっと見ると、かなりBase64の処理と、メールの処理のコードが違っているので、ひとつの処理をふたつに分けて二度手間するのはちょっと現状のわたしのレベルではとうてい無駄が多いというか無理な難問に直面しすぎると考えました。
> メールを送信するC#のプログラムはいくつか見つけたのですが、たいていのサンプルの問題は次の2点と考えています。

プログラムの学習の方法は人それぞれで、
サンプルから学ぶというのも有効な方法だと思いますが。

プログラムというのは自分で創造する作業であって
用途にぴったりあうサンプルを探す作業ではありません。

やりたい事を要素に分解し、
要素ごとにサンプルを見つけ、理解し、
それを組み合わせて目的を達成しましょう。

また、サンプルが見つかることはそう多くありません。
MSDNなどを参照し、自分で試す癖を付けたほうがよいと思います。

ファイルの読み書きも、
SmtpClientクラスで認証を用いる方法も、
MSDNにたくさん書かれています。
引用返信 編集キー/
■21596 / inTopicNo.3)  Re[2]: 添付メールとして送信
□投稿者/ kaoru (21回)-(2008/07/05(Sat) 07:16:53)
No21545 (れい さん) に返信
れいさん、コメントありがとうございました。
昨日1日かけて、添付メールとして送信することはできるようになりました。わたしの印象としては、サンプルはけっこう充実しているのですが、それをアレンジして取り込むのがむずかしいです。ともあれ今後ともよろしくお願いします。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -