using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Threading;
namespace MGR_Backuper
{
class Program
{
static void Main(string[] args)
{
string file = "D:\\Programy\\WinRAR\\rar.exe";
string command = "C:\\Users\\Pawel\\Desktop\\Praca magisterska back\\mgrback-%YEAR%-%MONTH%-%DAY%-%HOUR%-%MINUTES%-%SECONDS%.rar";
string arg = "a \"%FILENAME%\" \"C:\\Users\\Pawel\\Desktop\\Praca magisterska\\*\" -m5 -ep1 -hppasspass -rr5 -inul -r0";
var t1 = DateTime.Now;
command = command.Replace("%YEAR%", "" + t1.Year);
if (t1.Month < 10) command = command.Replace("%MONTH%", "0" + t1.Month);
else command = command.Replace("%MONTH%", "" + t1.Month);
if (t1.Day < 10) command = command.Replace("%DAY%", "0" + t1.Day);
else command = command.Replace("%DAY%", "" + t1.Day);
if (t1.Hour < 10) command = command.Replace("%HOUR%", "0" + t1.Hour);
else command = command.Replace("%HOUR%", "" + t1.Hour);
if (t1.Minute < 10) command = command.Replace("%MINUTES%", "0" + t1.Minute);
else command = command.Replace("%MINUTES%", "" + t1.Minute);
if (t1.Second < 10) command = command.Replace("%SECONDS%", "0" + t1.Second);
else command = command.Replace("%SECONDS%", "" + t1.Second);
arg = arg.Replace("%FILENAME%", command);
var t2 = DateTime.Now;
Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = file;
proc.StartInfo.Arguments = arg;
proc.Start();
while (!proc.HasExited)
Thread.Sleep(50);
var t3 = DateTime.Now;
try
{
MailMessage mailMsg = new MailMessage();
mailMsg.To.Add("[email protected]");
// From
MailAddress mailAddress = new MailAddress("[email protected]", "Sender");
mailMsg.From = mailAddress;
// Subject and Body
mailMsg.Subject = "MGR";
mailMsg.Body = "Backup magisterki";
mailMsg.Attachments.Add(new Attachment(command));
SmtpClient smtpClient = new SmtpClient("server.serv.com", 587);
NetworkCredential credentials = new NetworkCredential("login", "password");
smtpClient.Credentials = credentials;
smtpClient.Timeout = Int32.MaxValue;
smtpClient.Send(mailMsg);
}
catch (Exception ex)
{ Console.WriteLine(ex.ToString()+"\n"); }
var t4 = DateTime.Now;
Console.WriteLine("Czas kompresji: \t{0:0.00}s", (t3 - t2).TotalSeconds);
Console.WriteLine("Czas wysyłania: \t{0:0.00}s", (t4 - t3).TotalSeconds);
Console.WriteLine("Czas całkowity: \t{0:0.00}s", (t4 - t1).TotalSeconds);
Console.ReadKey(true);
}
}
}
これは、自分の重要なデータをメールアドレスに送信することで、重要なデータを簡単にバックアップするためのプログラムです。作成されたアーカイブは約1.5 MBです。電子メールの送信には約7〜8分かかります。これは、電子メールプログラムまたはウェブメールで同じファイルを送信しようとすると5〜6秒かかるため、接続不良のためではありません。なぜこのような電子メールを送信するのが遅いのですか?電子メールの送信に時間がかかるのはなぜですか?
EDIT:
私は別のテスト
var ts1 = DateTime.Now;
smtpClient.Send(mailMsg);
var ts2 = DateTime.Now;
を作り、それがsmtpClient.Send(mailMsg);
が鈍化する責任があることを確認しました。どんな考え?
電子メールの部分が遅いかどうか確認したことがありますか?それとも、ファイルをアーカイブするプロセスのスポーンになる可能性がありますか? –
はい、デバッグを開始し、コードをステップ実行して遅延の原因を確認してください。 –
添付されているものは何ですか?添付ファイルのサイズは重要です。あなたは非同期を送信していないので、サーバーがあなたのリクエストが正常に送信されたことを確認するのを待っています。 – Mohgeroth