c#で 簡単なメール(添付ファイル無し)を送信(できたら受信も)するプログラムのサンプルを掲載したホームページ・書籍をご紹介いただけませんか。
よろしくお願いいたします。
外出時、自宅に泥棒などが侵入した際、赤外線センサーなどで、これを検知し、PIC,AVR等のマイコンのプログラムで処理、シリアル通信などでパソコンに信号を送り、これをイベントとして、VC#のプログラムから、空メールを送信・・・という超簡単な仕組みを作りつつあります。
VC#によるメール送信のプログラムでは件名、宛先アドレス、本文(例:いろは・・・)は固定で構いません。
環境はOSが、WINDOWS7 HOME PREMIUM、開発は
VC# 2008 EPRESS EDITIONです。
メールサーバーを自身で用意するのではなく、契約しているプロバイダ(OCN等)のSMTPサーバーに接続します。
いろいろWEBで検索したり、VC#逆引き・・などの書籍を当たっているのですが
どれもIIS云々と説明されており、パソコンでIISを設定したりするのですが、SMTPも導入することが前提のようで、いろいろ試しましたがよくわかりません。
IISなどを使わない簡単な方法を是非ご教示ください。
今は、下記のように自分なりにPGMを作り、FORMで件名、本文などを入力し、ボタン1を押すと
メールが送信されるはず・・・と思うのですが
応答なし・・・で止まってしまいます。
private void button1_Click(object sender, EventArgs e)
{
TcpClient tcp = new TcpClient();
StreamWriter wr = null;
string send="USER xxxxxxx\nPASS xxxxx\nQUIT\n";
try
{
tcp.Connect("pop.xxx.xxxx", 110);
wr = new StreamWriter(tcp.GetStream());
wr.Write(send);
SmtpClient sm = new SmtpClient("smtp.xxxx.xxxx");
sm.Send("myadress@xxx.xxx.xxx",
textBox1.Text, ・・・送信先メールアドレス
textBox2.Text, ・・・件名
textBox3.Text);・・・本文
label2.Text = "OK";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
wr.Close();
tcp.Close();
}
}
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
/*
検証環境:Windows XP SP3・Yahoo Japanのアカウント・Gmailのアカウント
開発環境:MonoDevelop 2.2.2+ Mono 2.6.4 / .NET Framework 4.0
まぁ大して影響ないでしょう。
*/
using System;
using System.IO;
using System.Net.Sockets;
using System.Net.Mail;
/* 一応Yahoo Japan経由でGmailに送れたのでそのコードを示す */
/* そっちでうまくいかないときにファイアーウォールとかが原因になっていたとしても知らん。*/
namespace Q5870044
{
class MainClass
{
public static void Main (string[] args)
{
/* 一応 POP Before SMTPを想定。使える無料のメールサーバとしてYahoo Japanのものを選択しました。 */
/* もちろんパスワードとユーザー名は差し替えてあります。作業中に間違ってとあるところで一回公開しちゃいましたが、消えるかなああ(汗 */
TcpClient tcp = new TcpClient();
StreamWriter sw = null;
System.Collections.Generic.List<string> send = new System.Collections.Generic.List<string>(){"USER foo","PASS bar","QUIT"};
tcp.NoDelay = true;
tcp.Connect("pop.mail.yahoo.co.jp", 110);
NetworkStream ns = tcp.GetStream();
sw = new StreamWriter(ns);
/* 一応念のため */
sw.AutoFlush = false;
/* この方がエレガントかなと。*/
sw.NewLine = "\r\n";
send.ForEach(delegate(string s){
while(!ns.DataAvailable){
}
/*
受け取んなきゃダメっぽいです。最初ReadToEndとか使って嵌ってました。
1000バイト超えたら?知らん。
やらずに、最初のものを送信して二つ目を送信しない、とか、
相手の返事待たずに
このへんの分析はメーラーのThunderbirdとパケットキャプチャのWireSharkで動きを把握しています。
*/
byte[] x = new byte[1000];
ns.Read(x,0,1000);
sw.WriteLine(s);
/* Flushしておく */
sw.Flush();
});
tcp.Close();
/* ストリームをクローズしなきゃダメって書いてある。多分これでも大丈夫だと思うけど*/
sw.Close();
/* 受信したから送信。*/
SmtpClient sm = new SmtpClient("smtp.mail.yahoo.co.jp",587);
sm.Credentials = new System.Net.NetworkCredential("xxxx","xxxx");
/* SSLに対応していないようなのでEnableSslとかをtrueにしたら怒られました。なんで、MSの実装は"メールアドレスが正しくないFormatException"とかいうんでしょうね */
sm.Send("xxxx@yahoo.co.jp","himajin100000@example.com","b","c");
/*
ちゃんと完了していることを確認するため、以上の意味はない。
実際にはForEachのwhile等をちゃんと抜けているのかどうかとか
非同期なのに、処理が途中でハングしてないか、等の確認にもこの手の奴使ってますが、ソース中には残していません
*/
System.Console.WriteLine("OK1");
}
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- その他(メールソフト・メールサービス) Windows10付属のメール、なぜ設定が劇的に簡単になったのか? 1 2022/12/16 13:14
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Outlook(アウトルック) outlookの送信エラーについて 1 2022/05/13 12:04
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでoutlook365が起動しません。
-
送信先のメールアドレスが存在...
-
Perl でメールを受信・・・不可...
-
テストってどこまで?
-
c#で 簡単なメール(添付ファ...
-
VBAでsmtp認証をするには?
-
【C言語】メールを送信するプロ...
-
例外処理のフローチャートの記...
-
'Range'メソッドは失敗しました
-
Excel VBAでリンク切れをチェッ...
-
LCD ディスプレイを Raspberry ...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
VBA This Workbookモジュール...
-
モジュールの最大数はいくつな...
-
【vba】フォームに書いてあ...
-
VBSがコンパイルエラーになりま...
-
VBAで旧字体を異字体に一括で変...
-
Access VBA標準モジュールにつ...
-
Form間の値の渡し方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでoutlook365が起動しません。
-
【C言語】メールを送信するプロ...
-
Net::SMTPでメールを送信したい...
-
フォームデータ-の送信時の確認...
-
VBScriptで、メールの送信をし...
-
server errorで困ってます。
-
Exchangeを使用したメール送信...
-
LotusScript メール作成方法が...
-
さくらインターネットでの添付...
-
ウィンドウズ上で動くメールサ...
-
CGI(Perl)からメールを送信する...
-
BASP21使用のメール送信でコマ...
-
CGI(Perl)でメールフォームを作...
-
DreamWeaverCS4でのフォーム作...
-
VBAでsmtp認証をするには?
-
perl 自動返信メールプログラム...
-
ASPでのsendmail(BASP21の使用...
-
リンクをクリックするだけでC...
-
プロキシ経由でjavamailを使っ...
-
javamailでメール送信ができません
おすすめ情報