
まだC言語を習い始めて間もないため初歩的な質問になってしまうことをご了承ください
現在講義の一環で電子メールの送信について学んでいます
開発環境はWindows上に仮想OSとしてUbuntu14.01で開発しています
電子メールの送信自体はネットで調べてmailコマンドとvimコマンドで/.mailrcを編集してgmailのsmtpを経由してすぐにできました
さてここからが本題です
次の課題がC言語で実装するということになりました。しかし1から全てC言語で実装というわけではなくsystem関数を使用しても構わないとのことでそれだけならsystem関数でmailコマンドを行うだけでいいのですが/.mailrcの編集やメールの送信内容もC言語で実装することになりました。それでmailコマンドはsystem関数で実装するとしてsmtpの設定をする.mailrcに直接echoで書き込めばいいかと思いまして下のようなプログラムを書いてみました。
char型の中身は仮設定していますがいずれはscanf関数で編集できるようにと考えています。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char hogo[10]="smtps";
char server[30]="smtp.gmail.com";
char port[10]="465";
char SASL[10]="login";
char user[30]="ユーザ名@gmail.com";
char pass[30]="パスワード";
char buff[100];
char buff1[100];
//smtpステータス
printf("set smtp-use-%s\n",hogo);
printf("set smtp=smtps://%s:%s\n",server,port);
printf("set smtp-auth=%s\n",SASL);
printf("set smtp-auth-user=%s\n",user);
printf("set smtp-auth-password=%s\n",pass);
printf("set from=%s\n",user);
sprintf(buff,"echo set smtp-use-%s > /home/.mailrc",hogo);
system(buff);
sprintf(buff1,"echo set smtp=smtps://%s:%s > /home/.mailrc",server,port);
system(buff1);
return 0;
}
きちんと変数が入っているか確認のためprintfで出力してそれをsystem関数でechoで書き込みをしています。それで問題なのですが
sprintf(buff,"echo set smtp-use-%s > /home/.mailrc",hogo);
system(buff);
を実行したときにはきちんと書き込まれているのですが2つ目のsystem関数の
sprintf(buff1,"echo set smtp=smtps://%s:%s > /home/.mailrc",server,port);
system(buff1);
を実行すると上書きされます。
echoは改行は出力後自動で行っていると思っていたのですが特にそういうとこはなく最後のbuff1のみが残ります。
ここで質問ですが2行目、3行目にechoする方法があれば教えて頂きたいです。
一応sprintf(buff,"echo -e set smtp-use-%s\n> /home/.mailrc",hogo);なんていうのを試してみましたが特に変化はありませんでした。
その他別の方法や先ほどの質問の回答等があればご教授お願い致しますm(__)m
No.1ベストアンサー
- 回答日時:
echoコマンドではなく、普通にfopen()/fprintf()/fclose()でもいいような気もしますが…。
まぁ、ソレはソレとして……
> sprintf(buff1,"echo set smtp=smtps://%s:%s > /home/.mailrc",server,port);
>system(buff1);
>を実行すると上書きされます。
「リダイレクト 追記」辺りで検索してみるといいでしょう。
ご回答ありがとうございます
意外と単純でしたね・・・
fopen()/fprintf()/fclose()の方も試してみたいと思います
このたびはありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチでテキストファイルから...
-
telnetの自動シェルバッチを作...
-
バッチファイルでDirで取得した...
-
DOSのバッチで、変数中のファイ...
-
コマンドプロンプト標準出力と...
-
絶対パス名からファイル名を取...
-
バッチファイルに日付(ミリ秒...
-
Kシェルでgotoのような処理を作...
-
コマンドプロンプト 半角スペー...
-
コマンドプロンプト(バッチファ...
-
バッチファイルで常に最新の現...
-
IPアドレスの第3オクテットだ...
-
バッチファイルで昨日の日付を取得
-
バッチファイル テキストファイ...
-
子バッチ内のキー入力処理へ自...
-
コマンドプロンプトのエラーに...
-
コマンドプロンプトの「%1」と...
-
大量のフォルダからひとつのフ...
-
.txtではなく.logの方が良いの...
-
バッチ処理でファイルの中身を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチでテキストファイルから...
-
バッチファイルで昨日の日付を取得
-
バッチファイルでDirで取得した...
-
VBアプリケーションで終了コー...
-
コマンドプロンプトで2ヶ月前3...
-
コマンドプロンプト画面の閉じ...
-
絶対パス名からファイル名を取...
-
コマンドプロンプト(バッチファ...
-
コマンドプロンプト標準出力と...
-
バッチファイルで常に最新の現...
-
DOSのバッチで、変数中のファイ...
-
バッチファイル テキストファイ...
-
IPアドレスの第3オクテットだ...
-
コマンドプロンプトでファイル...
-
子バッチ内のキー入力処理へ自...
-
CMDの「Explorer」
-
バッチからバッチを逐次よぶ方法
-
バッチで自動的にディレクトリ...
-
コマンドプロンプト 半角スペー...
-
呼び出し元バッチを知るには?
おすすめ情報