• 締切済み

バッチファイルで以下のものをつくりました。

バッチファイルで以下のものをつくりました。 telnet smtp.ドメイン ポート EHLO myname MAIL FROM: <from@ドメイン.com> RCPT TO: <to@ドメイン.biz> DATA Subject: 件名 FROM: To: 本文 . QUIT バッチファイルをクリックすると、ログインのところで止まってしまいます。 送信からEXITまで行うにはどうしたらよいでしょう。 ご教授お願いします。

みんなの回答

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.4

こんな感じかな。 connect 'smtp.ドメイン:ポート' sendln "EHLO myname" sendln "MAIL FROM: <from@ドメイン.com>" sendln "RCPT TO: <to@ドメイン.biz>" sendln "DATA" sendln "Subject: 件名" sendln "FROM: " sendln "To: " sendln "本文" sendln "." sendln "QUIT" connectの後でsmtpサーバからの応答を待つならwait 'サーバからの応答'とします。 TeraTermのマクロのヘルプを見てください。

全文を見る
すると、全ての回答が全文表示されます。
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.3

TeraTermのマクロにすれば。 ttlって拡張子のファイルに書いてダブルクリックすればTeraTermが起動して telnetでsmtp.ドメインにportで接続して、EHLOから書けますよ。 普通にtelnetでサーバにログインなんかTeraTermでマクロにしてダブルクリックしてますけど。

y_r_358
質問者

お礼

ありがとうございます。 せっかくご回答いただいているのでと思い、一生懸命あれやと試しました。 でも、私には出来なかったです。 良かったら、具体的に教えて頂けませんか?

全文を見る
すると、全ての回答が全文表示されます。
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.2

EHLO myname から. QUIT までをファイルに書いて telnet smtp.ドメイン ポート <ファイル名 ってやったらどうでしょう。

y_r_358
質問者

お礼

ありがとうございます。 やってみましたが、無理っぽかったです。 昔、コマンドプロンプトで、setup.exeを起動してインストールが終わったら次のsetup.exeを起動なんてのをOSを何台も入れる時にやった記憶がありますが、それとは違いますかね。 どちらにしても、覚えていませんのでどうもできませんが。 もし、なにか方法がおありでしたらまたお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>バッチファイルをクリックすると、ログインのところで止まってしまいます。 telnetコマンドで接続した後、「標準入力」からのコマンド待ちになっているのでしょう。 タイムアウトなどで切断されてtelnetコマンドが終了すると、EHLOコマンドが実行されます。 # まあ、そんなコマンド(実行ファイル)は無いでしょうからおそらくエラーになりますが。 # cmd.exeの内部コマンドにも無い…でしょうしねぇ。 SMTPサーバに送信する内容をテキストファイル化するなどして、 telnetコマンドに「リダイレクトで標準入力として流し込む」べき…かと。 # それでちゃんと動作するかは未検証ですが… 1行だけなら、echoコマンドの出力をパイプする。というのもあるかもしれませんけど。

y_r_358
質問者

お礼

ご回答ありがとうございます。 >telnetコマンドで接続した後、「標準入力」からのコマンド待ちになっているのでしょう。 *そのとおりです。 >SMTPサーバに送信する内容をテキストファイル化するなどして、 telnetコマンドに「リダイレクトで標準入力として流し込む」べき *すみません、もう少し詳しく具体的に教えていただければ幸いです。 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • バッチファイル 過去の更新日時の上書きしない

    以下のようなバッチファイルで、ファイルのコピーするバッチがありますが、 更新日時が過去日時の際に、コピーしないように制御したいのですが、 どのように行えばよろしいでしょうか? @ECHO OFF SET _PATH_FROM_1=AAA\AAAAA.xls SET _PATH_TO_1=BBB SET /P _USER_INPUT="よろしいですか (Y/N)?" IF /I NOT "%_USER_INPUT%" == "Y" (EXIT) COPY /-Y "%_PATH_FROM_1%" "%_PATH_TO_1%" EXIT

  • Postfixで、プロバイダのSMTPサーバを使用し、メールを送信する方法

    Postfixにおいて、プロバイダのSMTPサーバを経由して メールを送信する方法についてお伺いします。 環境は以下の通りです。 プロバイダ = OCN Postfixのバージョン = 2.5.1 OS = FreeBSD 7.0-RELEASE プロバイダ指定のSMTPサーバ = xxx.ocn.ne.jp 下記の方法を用いると、myname@gamil.com宛に 正しくメールが届きます。 $ telnet xxx.ocn.ne.jp 25 Connected to xxx.ocn.ne.jp. Escape character is '^]'. 220 smtp.xxx.ocn.ne.jp ESMTP Postfix mail from:<myname@xxx.ocn.ne.jp> 250 Ok rcpt to:<myname@gmail.com> 250 Ok data 354 End data with <CR><LF>.<CR><LF> message body . 250 Ok: queued as 08CF127B2 quit 221 Bye Connection closed by foreign host. 以上の様な方法で、プロバイダのSMTPサーバを経由し、 かつ、プロバイダから割り当てられたアカウントを使用して、 Postfixにメール送信を行わせるのには どのような設定が必要でしょうか。 コマンドラインから $ echo "message body" | mail -s "test mail" myname@gmail.com 上記の様に入力した場合、Postfixデフォルトの設定でもGMailなど、 一部アドレスにはメール送信が可能なのですが、 他のアドレスでは、 Sender address rejected: Domain not found とログに出力され、送信が失敗してしまいます。 ドメイン名がDNS逆引きできる名前ではない(localdomain)ために、 宛先のサーバ側のチェックが厳しいと送信が失敗してしまうのだと思います。 この場合も上記のtelnetの方法を用いて、 明示的に送信者を指定すると、正しく送信が可能です。 Postfixがxxx.ocn.ne.jpに接続し、 myname@xxx.ocn.ne.jp を名乗って送信を 行えば良いのかと思いますが…

  • Windowsメールサーバー 踏み台にされている?SMTP

    自宅マシンにメールサーバを導入してみたのですが、まだ誰にも自宅サーバで作成したアドレスを教えていないにもかかわらずSMTPの通信ログに身に覚えのないIPがいくつか表示されています。 OS : WindowsXP Pro SP3 メールサーバ : MercuryMail http://www.aconus.com/~oyaji/mail2/mercurymail.htm こちらのサイトを参考にSSLの証明書ファイルを作成・適応するところまでは行っているのですが、これだけでは踏み台対策にはならないでしょうか? Q.1 証明書ファイル(pem)を作成するところまでは行ったのですが、ローカルでつながっている別PCのメールクライアント(Outlook07)で送信を行おうとすると「証明書がインストールされていません」のようなメッセージが出てきます。しかし、OKを押すと送信は正常に行われます。このままの運用で問題はありますでしょうか?問題がありましたら対処を教えて頂けると助かります。 Q.2 SMTPサーバのログに以下のような見覚えのないアクセスログが残っていたのですが、これは踏み台にされているということでしょうか?もしされているようでしたら対処法を教えて頂けますか。 正常送信時  Connection from 192.168.1.~, Tue Nov 18 22:30:06 2008  EHLO ローカルPC名  STARTTLS  EHLO ローカルPC名  AUTH LOGIN  MAIL FROM: <foobar@homeserver.jp>  RCPT TO: <hogehoge@ezweb.ne.jp>  DATA  DATA - 15 lines, 458 bytes.  QUIT  30 sec. elapsed, connection closed Tue Nov 18 22:30:36 2008 正常受信時  Connection from ○.○.○.○, Mon Nov 17 01:55:04 2008  EHLO ezweb.ne.jp  MAIL FROM:<hogehoge@ezweb.ne.jp> SIZE=578  RCPT TO:<foobar@homeserver.jp>  DATA  DATA - 13 lines, 578 bytes.  QUIT  1 sec. elapsed, connection closed Mon Nov 17 01:55:05 2008 見覚えのないIPのログ  Connection from ●.●.●.●, Mon Nov 17 04:32:41 2008  EHLO unA.com  un_1@unknown1.com:<MAIL FROM>  RCPT TO:<un_2@unknown2.com>  QUIT  2 sec. elapsed, connection closed Mon Nov 17 04:32:43 2008  Connection from ■.■.■.■, Tue Nov 18 12:46:40 2008  HELO ▲.▲.▲.▲  554 Invalid HELO format  1 sec. elapsed, connection closed Tue Nov 18 12:46:41 2008  Connection from ▼.▼.▼.▼, Tue Nov 18 20:45:51 2008  EHLO unB.com  25 sec. elapsed, connection closed Tue Nov 18 20:46:16 2008 Linuxで構築しろと言われる気がしないでもないですが、現状で解決できるならばそれで済ませたいので解決策がありましたら教えて頂けますでしょうか。 よろしくお願いします。

  • バッチファイル 時間指定

    バッチファイルをスタートアップに入れています。 手軽で便利なのですが、起動するたびに出てしまうので、if文か何かを使って、前回の実行してから12時間経っていない場合はバッチファイルを終了させるようにできないでしょうか。 robocopyを使ったバッチで、オプションでログを作成するようにしています。そのテキストファイルの作成時間で12時間経っているかどうか判断できればと思っています。 と質問したところ、以下の回答を得ました。 check.vbs ------------------------- Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFile("logfile.txt") WScript.Quit(DateDiff("h",f.DateCreated,Now)>12) ------------------------- バッチでは、先頭で、 cscript check.vbs || exit これを追加したのですが、12時間経っていなくても実行されます。 なぜなのでしょうか。

  • Perl メールフォーム

    Perl勉強中です。ご教示お願いします。 #!/usr/bin/perl -w use Encode qw(from_to encode); use Net::SMTP; use strict; my $from = 'xxxx@xxxxx.jp'; my $mailto= 'xxxx@xxxxx.jp'; my $mailcc= 'xxxx@xxxxx.jp'; my $subject = 'ホームページからのお問い合わせ'; from_to($subject, 'shiftjis', 'iso-2022-jp'); encode('MIME-Header-ISO_2022_JP', $subject); my $header = << "MAILHEADER"; From: $from To: $mailto CC: $mailcc Subject: $subject Mime-Version: 1.0 Content-Type: text/plain; charset = 'ISO-2022-JP" Content-Trensfer-Encoding: 7bit MAILHEADER my $message = "テスト"; from_to($message, 'shiftjis', 'iso-2022-jp'); my $smtp = Net::SMTP->new('xxxx-xxxx.jp'); if ( !$smtp ) { print "メールサーバーにアクセスできません!"; exit; } #メール送信 $smtp->mail($from); $smtp->to($mailto); $smtp->to($mailcc); $smtp->data(); $smtp->datasend($header); $smtp->datasend($message); $smtp->dataend(); $smtp->quit; 現在ここまでできています。 「ホームページ→お問い合わせクリック→メール送信」 そして、今回教えていただきたいのが、 イメージなのですが、 ホームページ→お問い合わせクリック→メールフォームのページに移動→内容入力 →確認ボタンクリック→確認画面→送信ボタンクリック→送信+送ってきた人へ自動返信(定型文) という風にしたいのですが、どうすればいいのかわかりません・・・ できればコードを教えて頂ければ嬉しいです。

    • ベストアンサー
    • Perl
  • smtp送信時の認証をperlで書きたい

    smtpで認証が必要なメールサービスがあり、これをperlで記述しています。 「pop befor smtp」では、駄目でした。 そのた、authでの認証(良く分からず)行って見ましたが、システムでは無視されました。何方かご指導よろしくお願いします。 現状のソースを添付します。 $smtp = Net::SMTP->new("smtp$server"); $smtp->mail($from); $smtp->to($to); $smtp->data(); $smtp->datasend("Date:2009/01/10 18:30\n"); $smtp->datasend("From:$from\n"); $smtp->datasend("To:$to\n"); $smtp->datasend("Subject:$Subject\n"); $smtp->datasend("Content-Transfer-Encoding: 7bit\n"); $smtp->datasend("Content-Type: text/plain;charset=\"iso-2022-jp\"\n\n"); $smtp->datasend("\n"); $smtp->datasend("これは、テストです。\n"); $smtp->dataend(); $smtp->quit;

    • ベストアンサー
    • Perl
  • Centos5(utf8)のperl でメール送信の関数プログラムを作

    Centos5(utf8)のperl でメール送信の関数プログラムを作成しています。 bccにもメールを送信したいのですが、呼び出される度にbccのメールアドレスの数が異なります。以下はテスト的に作った動くサンプルです。 #!/usr/bin/perl use Net::SMTP; use Encode; use strict; 1 my $ServerName = 'mail.server.jp'; 2 my $from = 'from@mailaddress'; 3 my $to = 'to@mail.address'; 4 my $bcc = 'bcc0@mail.address'; 5 my $anotherbcc = 'bcc1@mail.address'; 6 my $onemorebcc = 'bcc2@mail.address'; 7 my $smtp = Net::SMTP->new($ServerName, Debug => 0); 8 $smtp->mail($from); 9 $smtp->to($to); 10 $smtp->bcc($bcc, $anotherbcc, $onemorebcc); 11 # to ( ADDRESS [, ADDRESS [...]] ) 12 # cc ( ADDRESS [, ADDRESS [...]] ) 13 # bcc ( ADDRESS [, ADDRESS [...]] ) 14 $smtp->data(); 15 $smtp->datasend("From: $from\n"); 16 $smtp->datasend("To: $to\n"); 17 my $SUBJECT = "日本語タイトル"; 18 my $body = "日本語本文\n"; 19 Encode::from_to($SUBJECT, "utf8", "iso-2022-jp"); 20 Encode::from_to($body, "utf8", "iso-2022-jp"); 21 $smtp->datasend("Subject: ".$SUBJECT."\n"); 22 $smtp->datasend("MIME-Version: 1.0\n"); 23 $smtp->datasend("Content-Type: text/html; charset=iso-2022-jp\n"); 24 $smtp->datasend("\n"); 25 $smtp->datasend($body); 26 $smtp->dataend(); 27 $smtp->quit; 10行目の通り、メールアドレスを羅列して渡すとメールは配信されます。 メールアドレスを配列渡し( @bccarray=('bcc0@mail.address', ・・・); で@bccarrayを渡す)と配信されません。 これを関数化し、bccアドレスの数を可変にしたいのですが良い方法はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • ftpコマンドバッチファイルのリダイレクト結果

    以下のようなバッチファイルを作成しました ftp -s:ftpcmd.txt > ftplog.txt FIND /i "226 Transfer complete" ftplog.txt >NUL exit /b %ERRORLEVEL% ftpcmd.txt open hoge anonymous hoge prompt cd /xxxx/ put test.txt quit こうする事でftp送信が正常に終了したかどうかを exitの終了コードで判断しようとしていたのです バッチファイルを手動で動作させたところ成功です しかしこのバッチファイルを Webサーバのサーブレット(javaプログラム)から 動作させるとftplog.txtの出力結果がなぜか プログラムから実行した時のftplog.txt User (hoge:(none)): open hoge prompt cd /xxx/ put test.txt quit こんな結果になってしまうんです あれれ?ftpコマンドが出力するメッセージがリダイレクトされない んです 手動でこのバッチファイルを実行した時は 以下のようになります 226 Transfer complete. のメッセージがサーブレットからバッチファイルを実行しても ftplogファイルに出力されるように したいのですが 何かいい方法はないでしょうか? 手動実行した場合のftplog.txt ftp> Connected to hoge open hoge 220 Microsoft FTP Service User (hoge:(none)): 331 Anonymous access allowed, send identity (e-mail name) as password. 230 Anonymous user logged in. ftp> Interactive mode Off . ftp> prompt cd /xxx/ 250 CWD command successful. ftp> put test.txt 200 PORT command successful. 150 Opening ASCII mode data connection for test.txt. 226 Transfer complete. ftp: 59523 bytes sent in 0.00Seconds 59523000.00Kbytes/sec. ftp> quit 221

  • Net::SMTPでエラーの場合のリトライ方法

    PerlのSMTP処理がエラーの場合に、リトライする方法 下記のようなPerlスクリプトを例に、質問させていただきます。2点あります。 ------------------------------------------------------------------------- 01: use Net::SMTP; 02: use Encode; 03: my($smtp,$ret); 04: $smtp = Net::SMTP->new('xxx.xxx.jp', Hello=>"xxx.com", Timeout => 120); 05: $ret = $smtp->mail($from); 06: $ret = $smtp->to($to); 07: $ret = $smtp->cc($cc) if("$cc" ne ""); 08: $ret = $smtp->data(); 09: $ret = $smtp->datasend("From:$from\n"); 10: $ret = $smtp->datasend("To:$to\n"); 11: $ret = $smtp->datasend("Cc:$cc\n") if("$cc" ne ""); 12: Encode::from_to($subject,"s-jis","jis"); 13: $ret = $smtp->datasend("Subject:$subject\n"); 14: $ret = $smtp->datasend("Content-Transfer-Encoding: 7bit\n"); 15: $ret = $smtp->datasend("Content-Type: text/plain;charset=\"ISO-2022-JP\"\n\n"); 16: Encode::from_to($body,"s-jis","jis"); 17: $ret = $smtp->datasend("$body\n"); 18: $ret = $smtp->dataend(); 19: $ret = $smtp->quit; ------------------------------------------------------------------------- ($from,$to,$cc,$subject,$body 等は上位で設定しているものとします) 質問1) 例えば、08行目でエラー($ret==0)になった場合に、リトライしたければ、 少し待って(sleep等)から、08行目からを再実行すればOKでしょうか、 それとも、05行目、あるいは、04行目のSMTP->newの再取得からやり直さなければならないでしょうか。 質問2) また、18行目でエラー($ret==0)の場合、実際にはメールは送信されるようですが、 そのまま放置しておいても特に問題ないでしょうか。 以上、よろしくお願いいたします。

  • telnetバッチによる処理の自動化

    Windows2000からLinuxへのtelnetによる処理を自動化したいのですが バッチファイルで解決するのは無理でしょうか? やりたいことは以下の部分です。 1、ログイン 2、ルートユーザ変更 3、コマンド実行 4、exit この処理のあとFTPバッチにて コマンド結果を取得したいと思っています。 (こちらは何とかなりました・・・) ネットワーク的に完全ローカルなのでセキュリティとかは気にしてません。 ただ、Tera Termとかをインストールできないため Windows標準コマンドを使うしかないのです。。。 どうにかなるでしょうか? よろしくお願いいたします。