
まだ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で質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) Windowsバッチファイルでリモートデスクトップを自動ログインするが確認画面が出る対処方法 1 2022/12/19 15:48
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチでテキストファイルから...
-
バッチファイルでDirで取得した...
-
バッチファイルで昨日の日付を取得
-
コマンドプロンプト画面の閉じ...
-
IPアドレスの第3オクテットだ...
-
コマンドプロンプト(バッチファ...
-
子バッチ内のキー入力処理へ自...
-
バッチファイル(for文)がうま...
-
コマンドプロンプトで2ヶ月前3...
-
DOSのバッチで、変数中のファイ...
-
echoとsystem関数について
-
DOSのバッチで、テキストファイ...
-
Windowsのバッチで環境依存パス...
-
コマンドプロンプト標準出力と...
-
VBアプリケーションで終了コー...
-
cygwinのtschで日本語文字化け
-
バッチファイル テキストファイ...
-
PowerShellからPowerShellを呼...
-
バッチファイルに日付(ミリ秒...
-
バッチファイルでの環境変数の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチでテキストファイルから...
-
バッチファイルで昨日の日付を取得
-
子バッチ内のキー入力処理へ自...
-
バッチファイルでDirで取得した...
-
コマンドプロンプト標準出力と...
-
バッチファイルで常に最新の現...
-
DOSのバッチで、変数中のファイ...
-
VBアプリケーションで終了コー...
-
コマンドプロンプトで2ヶ月前3...
-
IPアドレスの第3オクテットだ...
-
コマンドプロンプト画面の閉じ...
-
コマンドプロンプト(バッチファ...
-
絶対パス名からファイル名を取...
-
バッチファイル テキストファイ...
-
Excelで住所録を地域ごとに振り...
-
コマンドプロンプトでファイル...
-
batの変数を直接vbsのプログラ...
-
echoとsystem関数について
-
コマンドプロンプト(バッチ)...
-
呼び出し元バッチを知るには?
おすすめ情報