C# Veritabanı yedeği alıp mail olarak gönderme (paylaşıyorum)

Bu konuyu okuyanlar

UgurOnline

Asistan
Katılım
11 Ara 2008
Mesajlar
159
Reaksiyon puanı
1
Puanları
0
bir süredir aklımdaydı böyle bişey yapmak sonunda tamamladım. çok kişinin işine yarıcağını düşünüyorum.

program bak uzantılı sql yedeği alıp gmail üzerinden yedeği gönderiyor. kodları paylaşıyorum ihtiyacı olanlar olabilir


2qkq8ba.png


link: http://hotfile.com/dl/86511559/1fa70d0/sql_backup_ve_mail_gonderme.zip.html

2 button
1 textbox

Kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Net.Mail;

namespace sql_backup
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string zaman = DateTime.Now.ToString().Replace(":", "-").Replace(" ", "_");

            SqlConnection myConnection = new SqlConnection("Data Source=.;uid=sa;Initial Catalog=db2m1;Integrated Security=True");
            myConnection.Open();
            string cmdText = "BACKUP DATABASE db2m1 TO DISK = '" + zaman + ".bak'";
            SqlCommand komut = new SqlCommand(cmdText, myConnection);
            komut.ExecuteNonQuery();
            MessageBox.Show("Yedekleme tamamlandı!\n\n" + cmdText.Replace("BACKUP DATABASE db2m1 TO DISK = ", "").Replace("'", ""));
        }

        string cmbKullaniciAdi = "gmail adresiniz";
        string txtSifre = "gmail şifreniz";
        string cmbKime = "yedeğin yollanacağı gmail adresi";
        string txtKonu = "Yedeklenen Veritabanı";
        string txtMesaj = "Mevcut veritabanınız yedeklendi.";
        string cmbKimden = "ad soyad";

        private bool AttachSendMail(string to, string subject, string message, string name)
        {
            try
            {
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                System.Net.NetworkCredential cred = new System.Net.NetworkCredential(cmbKullaniciAdi.Trim(), txtSifre.Trim());
                mail.To.Add(to);
                mail.Subject = subject;
                mail.From = new System.Net.Mail.MailAddress(cmbKime, name);
                mail.IsBodyHtml = true;
                mail.Body = message;
                mail.Attachments.Add(new Attachment(textBox1.Text));
                System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com", 587);
                smtp.UseDefaultCredentials = false;
                smtp.EnableSsl = true;
                smtp.Credentials = cred;
                smtp.Send(mail);
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string zaman = DateTime.Now.ToString().Replace(":", "-").Replace(" ", "_");

            SqlConnection myConnection = new SqlConnection("Data Source=.;uid=sa;Initial Catalog=db2m1;Integrated Security=True");
            myConnection.Open();
            string cmdText = "BACKUP DATABASE db2m1 TO DISK = '" + zaman + ".bak'";
            SqlCommand komut = new SqlCommand(cmdText, myConnection);
            komut.ExecuteNonQuery();
            textBox1.Text = @"C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\" + cmdText.Replace("BACKUP DATABASE db2m1 TO DISK = ", "").Replace("'", "");
            
            AttachSendMail(cmbKime, txtKonu, txtMesaj, cmbKimden);

            MessageBox.Show("Yedekleme tamamlandı!\n\n" + cmdText.Replace("BACKUP DATABASE db2m1 TO DISK = ", "").Replace("'", ""));
        }

        private bool SendMail(string to, string subject, string message, string name)
        {
            try
            {
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                System.Net.NetworkCredential cred = new System.Net.NetworkCredential(cmbKullaniciAdi.Trim(), txtSifre.Trim());
                mail.To.Add(to);
                mail.Subject = subject;
                mail.From = new System.Net.Mail.MailAddress(cmbKime, name);
                mail.IsBodyHtml = true;
                mail.Body = message;
                System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com", 587);
                smtp.UseDefaultCredentials = false;
                smtp.EnableSsl = true;
                smtp.Credentials = cred;
                smtp.Send(mail);
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }
    }
}
 
Katılım
31 Ara 2007
Mesajlar
17,485
Reaksiyon puanı
184
Puanları
63
Peki ya alınan yedek mail ile gönderilmeye izin verilen boyutu aşarsa :)

Ekstra birkaç özellik daha ekleyip yedeği belirli bir boyutta parçalara ayırıp her parçayı tek tek mail ile gönderecek hale getirilebilir.
 

UgurOnline

Asistan
Katılım
11 Ara 2008
Mesajlar
159
Reaksiyon puanı
1
Puanları
0
onu ustalara bırakayım o zaman. necati yetiş =)
 

salih41

Öğrenci
Katılım
1 Tem 2005
Mesajlar
33
Reaksiyon puanı
0
Puanları
0
Kutluyorum kardeşim güzel çalışma ve yazdığın kodu paylaşıyorsun ADAMSIN.
 

kowalskii

Profesör
Katılım
31 Eki 2010
Mesajlar
3,056
Reaksiyon puanı
23
Puanları
38
Paylaşımcı ruh... Güzel icat :D
 
Üst