Linux上Cプログラムでメール送信を行いたいと思って
います。
Cからシステムコールでsendmailを実行する方法は
わかったのですが、純粋にSMTPサーバーにC言語から
アクセスして送信する方法など可能なのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

可能ですよ。

実際に sendmail のプログラムもそうやって作られている
のだし。

socket で通信するプログラムが組めて、SMTP のプロトコルを理解していれば
誰でも作れます。SMTP のプロトコルは RFC(1123だったかな?)を読めば
わかります。

SMTP サーバに対して、ポート23で connect して、HELO して、MAIL して
RCPT して、DATA して、QUIT する、って感じ。


そんなに難しいプログラムには(エラー処理なんかをはしょれば)ならない
ですが、少なくとも popen で sendmail を使うよりは、ずうっと面倒です。
    • good
    • 0
この回答へのお礼

なるほどー。
telnetでsmtpサーバに接続した時に入力するコマンド
手順をソケットプログラムで送信していけばいいと
いうことですね。

やってみます。有難うございました。

お礼日時:2001/08/10 17:20

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qメールの署名設定

メールの署名設定がリッチテキスト形式のなっていて、テキスト形式に代えると青字のアドレスが黒字になってしまします。
返信の場合は変えても大丈夫なのですが、どうすればテキスト形式に変更できますか?

Aベストアンサー

オプションでテキスト形式で作成するようにしていますよね?
それでもリッチテキストになってしまうのですか?
返信するときに元のメールと同じ形式にする、とかしてます?

それ以外に設定はありません。
これでもおかしいなら、IEを再インストールしてみましょう。

QC# SmtpでYahooサーバーから送信

お世話になります。

VCS2010Expressで、簡単なメールソフトを作成しようとしているのですが、
SmtpExceptionが発生してしまい、送ることができません。

Yahoo側の設定も、正しく行ったと思うのですが、原因の解る方、
ご助力をお願いいたします。

=================================================================
private void button1_Click(object sender, EventArgs e)
{
SmtpClient sm = new SmtpClient("smtp.mail.yahoo.co.jp", 25);
sm.Credentials = new System.Net.NetworkCredential("ログイン名","パスワード");
sm.Send("自分@yahoo.co.jp","宛先@yahoo.co.jp", "b", "c");


MessageBox.Show("きちんと送れたようです。");
}
=======================================================================
Yahoo側でも、Yahooでリバーとやらの設定も有効にし、
下記のサイトで書かれている内容も確認しました。
http://www.yahoo-help.jp/app/answers/detail/p/565/a_id/47648
http://www.yahoo-help.jp/app/answers/detail/p/536/a_id/43934/faq/pc-home

しかし、その結果SmtpException、メールを送信できませんでした。(添付図)
と出てしまいます。

原因と対策を、何卒よろしくお願いいたします。

お世話になります。

VCS2010Expressで、簡単なメールソフトを作成しようとしているのですが、
SmtpExceptionが発生してしまい、送ることができません。

Yahoo側の設定も、正しく行ったと思うのですが、原因の解る方、
ご助力をお願いいたします。

=================================================================
private void button1_Click(object sender, EventArgs e)
{
SmtpClient sm = new SmtpClient("smtp.mail.yahoo.co.jp", 25);
sm.Credentials = new ...続きを読む

Aベストアンサー

SmtpClient sm = new SmtpClient("smtp.mail.yahoo.co.jp", 25);

YahooのSmtpポートは25番は使えません。587番を使ってみてください。

QOutlook 2003 メール返信時の署名のずれについて

よろしくお願いします。
現在の設定
【OS】 Windows XP
【メール】 OutLook 2003
【形式】  HTML
【フォント】MS P明朝 新規・返信すべて
【署名】 返信時、新規作成時に設定

メールを返信する際に、署名を設定しているのですが、
相手のフォントが自分のフォントと違っている
場合、署名がずれておかしな形になります。
どんなフォントでも署名がずれないやり方って
ありますでしょうか?

Aベストアンサー

基本的にありません。

もともとメールは単なるテキストです。
質問者さんは、HTML形式でメールを送られているようですが、
メールを受け取った方が、HTMLメールに対応していなければ、
文字サイズやフォントはすべて無効になり、
相手の環境に依存します。

また、HTMLメールで同じフォントを指定している場合でも、
Windows XPとVistaでは、見え方が異なるようです。

メールの署名を凝ったものにするのも結構ですが、
ちょっとでもずれると表示が激しく乱れるようなものは
避けた方が無難と思います。

QBorland C++ Builderで簡単なC言語プログラムの作成・実行

Borland C++ Builderで簡単なCのプログラムを作り実行させるにはどうしたらよいですか?
DOS窓上でコンパイルするのではなく、Borland C++ Builderのメニューから行いたいのです。
一応、「ファイル→新規作成→その他→Cファイル」でCのファイルは作成できるのですが、このファイルを「プロジェクト→ユニットのコンパイル」でコンパイルすることができません。
Formオブジェクト(?)を作成しておくとコンパイルできます。
Formは特に必要ないので、FormなしでCのファイルだけをコンパイルしたいのです。

DOS窓でのコンパイル・実行はできます。

事情があってBorland C++ Builderを使わなくてはなりませんので、他のIDEはこの際全く解決になりません。

よろしくお願いします。

Aベストアンサー

プロジェクトを[コンソールアプリケーション]で作成して置く必要があります。

TurboC++での例。
画面は多少違いますがC++Builderでも同じです。
http://www.asahi-net.or.jp/~qb3k-kwsk/rpg/program/tool/tcpp/tcpp.html

Qアウトルックのメール送信時に手動で署名を入れたいのですが

アウトルック200のメール送信時に、通常は署名を入れない状態にしておいて、必要な時にだけ手動で入れるようにするにはどうすれば良いのでしょうか?
メール本文作成画面で、挿入から定型句の中の署名を選んで入れることはできるのですが、それだと、ツールのオプションののメール形式の中の署名で作成された署名が入力されずに、ただ単純に名前だけ入力されます。
アウトルックのヘルプを見たら、メール作成のエディタをワードにした時とアウトルックにした時とでは違うらしく、ワードをエディタとして選んだ場合、手動で入力される署名は、ワード起動時に入力した使用者名が挿入されるとのこと。
ならば、アウトルック上で作った署名を手動で入力するには、エディタをアウトルックにしないと不可能なのでしょうか?
それと、エディタをワードにした場合とアウトルックにした場合とでは何が違うのでしょうか?どちらの方が便利でしょうか?

Aベストアンサー

アウトルック2000を使ってます。
アウトルックのツールメニューのオプションでメール形式を選びます。
ここでたくさんの署名を作る事が出来ます。
私の場合、遊び感覚や正式な署名など色々作っています。
私は通常使用頻度の高い署名を設定してます。

テキストメール・HTMLメール・雛型メールについての署名の事。

メールを書くとき署名が既に入る設定にしていますが、その署名を使いたくないときは、面倒でもデリートで裂く一旦削除します。
メール作成画面で、挿入メニューの署名を選択すると、たくさん作った署名にタイトルを付けてありますので数ある署名から適宜を選びます。


ワードなどのオフィスドキュメントのメールについての事。

ワードエディターでの署名はワードのツールメニューの中のオプションの全般タブに電子メールオプションがあります。
その中で電子メール用の署名を作ります。そこでも色々な署名が出来ます。
そこで各種作るとワードメールを使った場合、挿入から署名を選ぶとワード起動時の使用者名の他にも、先ほど作った署名を任意に選ぶ事が出来ます。

余談ですが、動画のイラスト入り署名も出来ますよ。


説明が下手で申しわけありません。
わからなかったら補足します。

間違いなく出来ますよ。
色々署名で楽しんでいます。

(奥が深いです)

アウトルック2000を使ってます。
アウトルックのツールメニューのオプションでメール形式を選びます。
ここでたくさんの署名を作る事が出来ます。
私の場合、遊び感覚や正式な署名など色々作っています。
私は通常使用頻度の高い署名を設定してます。

テキストメール・HTMLメール・雛型メールについての署名の事。

メールを書くとき署名が既に入る設定にしていますが、その署名を使いたくないときは、面倒でもデリートで裂く一旦削除します。
メール作成画面で、挿入メニューの署名を選択すると、...続きを読む

QC言語からC++の関数をコールする方法について

初めて質問させて頂きます。
質問は2つあります。

●1つ目の質問です。
この度、C言語ベースのプログラムに、C++で作成した関数を使用することになりました。
方法としてextern等を駆使しつつ、ラッパー関数を使って対応しております。
そこで質問なのですが、この場合、ラッパー関数に使用するファイル形式はcppまたはcのどちらが正しいのでしょうか?(どちらでも動きました)


●2つ目の質問です。
Windows環境(vs2005)では無事、CからC++の関数を呼ぶことに成功はしました。

しかし、本当に動かしたいのはLinuxでの環境になります。
先程作成したラッパー関数のファイルとC++で作成した関数のファイルをライブラリ(soファイル)化したものを使用し、コンパイルとリンクは問題なく通すことに成功したのですが、
実行させてみると、Cの関数からラッパー関数をコールしているのは確実なのですが、ラッパー関数の処理を通らず、プログラムが止まってしまいます。
試しにラッパー関数の処理を「return 0;」だけにして実行させてみましたが現象は変わらずでした。
そのため、ラッパー関数を呼ぶための何かに問題があると思っています。

ここで質問なのですが、ビルドのときにライブラリをリンクさせるだけでは駄目なのでしょうか。また、他に思い当たることがありましたらご教示頂きたいです。
Windows環境(vs2005)では期待する動作をしているためプログラムは問題ないと思っています。

初めて質問させて頂きます。
質問は2つあります。

●1つ目の質問です。
この度、C言語ベースのプログラムに、C++で作成した関数を使用することになりました。
方法としてextern等を駆使しつつ、ラッパー関数を使って対応しております。
そこで質問なのですが、この場合、ラッパー関数に使用するファイル形式はcppまたはcのどちらが正しいのでしょうか?(どちらでも動きました)


●2つ目の質問です。
Windows環境(vs2005)では無事、CからC++の関数を呼ぶことに成功はしました。

しかし、本当に動かしたいの...続きを読む

Aベストアンサー

「ラッパー関数」は共有ライブラリ (DLL) 内に配置していると解釈して思い当たる事を。

> ●1つ目の質問です。

DLL を C からも使いたい場合に、DLL から公開 (export) する関数を、C++ で書くべきか C で書くべきかという事でしたら、どちらでも構いません。(もちろん、C++ で公開する関数を書く時は extern "C" を付ける必要はありますが、それだけです。)

> ●2つ目の質問です。
> ここで質問なのですが、ビルドのときにライブラリをリンクさせるだけでは駄目なのでしょうか。また、他に思い当たることがありましたらご教示頂きたいです。

DLL (.so) はどこに配置しているのでしょうか。Windows と Linux では DLL の検索パスが異なります。
Windows → http://msdn.microsoft.com/ja-jp/library/7d83bc18(v=vs.90).aspx (MSDN)
Linux → http://en.wikipedia.org/wiki/Rpath (英語Wikipedia)

Windows は実行ファイルと同じディレクトリに DLL があるかどうか確認しますが、Linux では (恐らくセキュリティを考慮に入れて) 既定では、実行ファイルと同じディレクトリにある DLL を確認しません。

処理系 (OS, コンパイラ) に依存するかも知れませんが例えば:

(a) リンク時 (~コンパイル時) に RPATH に実行ファイルと同じディレクトリを追加する (オプション -Wl,-R,'$ORIGIN') か
$ gcc -o 実行ファイル fuga -L何とか -lかんとか -Wl,-R,'$ORIGINI'
($ORIGIN は「実行ファイルと同じディレクトリ」という意味の特別な指定だそうです。参考 URL 参照下さい)

(b) または、実行時に LD_LIBRARY_PATH 環境変数に DLL の配置場所を指定するか
$ export LD_LIBRARY_PATH='DLL のあるディレクトリ'
$ ./実行ファイル ...

すれば良いです。

# しかし、DLL が見付からなければプログラムの起動時点で失敗するはずなのですが、
# > 実行させてみると、Cの関数からラッパー関数をコールしているのは確実
# は不思議ですね…もしかして DLL を遅延ロード (dynamic loading) とかしていますか?

参考URL:http://itee.uq.edu.au/~daniel/using_origin/

「ラッパー関数」は共有ライブラリ (DLL) 内に配置していると解釈して思い当たる事を。

> ●1つ目の質問です。

DLL を C からも使いたい場合に、DLL から公開 (export) する関数を、C++ で書くべきか C で書くべきかという事でしたら、どちらでも構いません。(もちろん、C++ で公開する関数を書く時は extern "C" を付ける必要はありますが、それだけです。)

> ●2つ目の質問です。
> ここで質問なのですが、ビルドのときにライブラリをリンクさせるだけでは駄目なのでしょうか。また、他に思い当たることがあ...続きを読む

QMicrosoft Office Outlookメール文に署名貼付で

Microsoft Office Outlookメールを利用しております。
Outlook expressの時は、メール文中に署名の貼付が、メニュー[挿入]、[署名]から署名を挿入できましたが、Microsoft Office Outlookでは、どのようにすれば良いのでしょうか、よろしく、お願い致します。

Aベストアンサー

Microsoft Office : Office Outlook 2003 コミュニケーション テクニック - 署名を作成してメールを使い分けたい!
http://www.microsoft.com/japan/office/previous/2003/experience/workstyle/tips/outlook/tips3.mspx

Outlook 2007 で電子メールの署名を作成する方法
http://support.microsoft.com/kb/931825/ja

QC言語のプログラムが実行できません。

C言語のプログラムが実行できません。

コンパイルは出来るんですが、実行すると、「Segmentation fault」と表示されてしまいます。

これは何のエラーなんでしょうか?
基本的な事かもしれませんが、分かる方宜しくお願い致します。

Aベストアンサー

僕も何度も出したなぁ。

ひとくちにSegmentation faultといっても、それこそさまざまな要因があるので、
これだけで原因を突き止めるのは非常に難しいです。

コンパイルはあくまで文法としてみているだけであり、
処理の流れ、メモリ確保など、プログラムそのものを見ているわけではありません。
このエラーが出るのは文法などよりもっと上位の原因なのです。
たとえばですが。
長さ10の配列があったとして、11番目以降を参照したりすると、
そういうのが出たような気がします。

ですから、変数があれば、その内容をprintf文で逐一出していき、
変な値が入っていないとか、少しずつ直していくしかないと思います。

Qヤフーメールで署名がつけられない

ヤフーのメールを使っています。昨日あたりに突然仕様変更がありました。

そして、メール作成画面の下にあった、「メールに署名を入れる」とかいうボタンが見当たらなくなりました。この仕様で署名を入れるにはどうすればいいのでしょうか?

設定画面の「全てのメールに署名を入れる」だと、個人的には都合が悪いです。あと、これにチェックを入れて自分にテスト送信してみても、署名がありませんでした。

勝手に仕様変えるのって不便極まりないですね。

Aベストアンサー

#1です。

私は、YahooBB会員ですが、署名の入り具合を確認しました。

Yahooの契約IDのybb.ne.jpでの送信では、メールオプションの「メールアドレスの追加・編集・削除」の編集で作成した署名が、

yahoo.co.jpでの送信では、メールオプションの「署名」の項目で作成した署名が、「すべての送信メールに署名を付ける」を有効にすると、そのまま本文にそれぞれの署名が自動的に入るようです。

従って、作成画面での「利用する」のチェック入れは無くなって、不要であれば、本文から削除する必要があります。

追加アドレスでも使う署名はそれぞれ会員IDと同じですが、「署名を利用する」のチェックを入れる項目は作成画面にあって、チェックを入れてそのまま送信するとそのメールに自動的に入るようです。

まだ、完全にすべてのIDに行き渡っていない仕様のようですが、確認した状況はそのようになっていました。

QC言語C++言語アセンブラ言語の就職先

自分は以前Javaプログラマをやってました。

あまりに、便利なライブラリばかりで、「なんかプログラムを書いているというより、ソフトウェアの振る舞いを書いているだけだ。。」とおもってしまい、すきになれませんでした。正直、苦痛でした。

今、上記言語を勉強しているのですが、コンピュータの根本からプログラムをしている実感が沸き、とても面白いです。

でも、これらの言語を習得したところでどんなところに就職できるのかさっぱりわかりませんし、需要があるのかもしりません。いわゆる組み込み系統は就職できるんでしょうが、私としてはアルゴリズムでUNIXのプログラムをシコシコ書いているような作業がすきなのです。いってみれば、私はクラシックな人間だとおもいます。

そんな僕ですが、就職先はあるのでしょうか?よろしくお願いします。

Aベストアンサー

 勉強熱心ですね。
 実際に、kamkamkam3-san の言われている、
「なんかプログラムを書いているというより、ソフトウェアの振る舞いを書いているだけだ。。」というのは的を得ています。
 
 経験からなんですが、ソフトウェア会社では、ノウハウとしてライブラリをもっています。ちょうど、Java のクラス・ライブラリーなようなものです。ですから、それらを使って製品を効率良く製品をつくれるかが重要です。実際のソフトウェア・エンジニアは、それをうまく使って効率良くコーディングすることを要求されます。

 ソフトウェア業界は、1人で閉じた製品を開発することは、まずないです。製品=プロジェクトだとすると、最低3名~100人以上が同時進行となります。そうなると、割り当てられたノルマを効率良く行うかが評価のポイントになります。つまり、「ソフトウェアの振る舞いを書いているだけ」ということにもなります。

 コンピュータ言語は、あくまでもツール(道具)です。
 kamkamkam3-san が、今後どういった分野の仕事を希望している(興味がある)かが重要だと思います。
 その答えとして、「C言語C++言語アセンブラ言語」を勉強することで実感できると思います。ですので、ぜひ、勉強を続けてください。

 勉強熱心ですね。
 実際に、kamkamkam3-san の言われている、
「なんかプログラムを書いているというより、ソフトウェアの振る舞いを書いているだけだ。。」というのは的を得ています。
 
 経験からなんですが、ソフトウェア会社では、ノウハウとしてライブラリをもっています。ちょうど、Java のクラス・ライブラリーなようなものです。ですから、それらを使って製品を効率良く製品をつくれるかが重要です。実際のソフトウェア・エンジニアは、それをうまく使って効率良くコーディングすることを要求さ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング