Zapisz i wyślij e-mailem ( załącznik)

0

Witam!
Mam kod: (cd poniżej)

           if (checkBox2.Checked == true) // scv - CSV
            {
                saveFileDialog1.Filter = "CSV |*.csv";
                saveFileDialog1.Title = "Zapisz do pliku CSV";
                saveFileDialog1.FileName = nazwa+".csv";
                if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                        string path = saveFileDialog1.FileName;
                        StreamWriter sw = new StreamWriter(path,false,Encoding.UTF8);
                        sw.Write(ToCsv(dt));
                        sw.Dispose();
                } 
            }
            if (checkBox1.Checked == true) //excel
            {
                saveFileDialog2.Filter = "Skoroszyt programu Microsoft Office Excel |*.xls";
                saveFileDialog2.Title = "Zapisz do Microsoft Office Excel - plik xls";
                saveFileDialog2.FileName = nazwa + ".xls";
                
                if (saveFileDialog2.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    string path = saveFileDialog2.FileName;
                    StreamWriter sw = new StreamWriter(path, false, Encoding.UTF8);
                    sw.Write(ConvertDataTableToHtml(dt));
                    sw.Dispose();
                }
            }

Jak widać powyższy kod zapisuje plik CSV i/lub Excel. Jednak zapisuje je na dysku.
Pytanie - czy C# umożliwia zrobienie coś podobnego jak przy klikaniu prawym klawiszem na dowolny pliczek(Windows-nie wiem jak w innych systemach) "wyślij do >> Adres poczty", czyli, jeżeli ktoś sobie zaznaczy checkbox wyślij e-maile i kliknie buton, że mu dołączy ten plik?

Z góry dziękuje za odpowiedź ;)
Aham na marginesie - cały czas się uczę, więc proszę nie tylko o pełne odpowiedzi ale również krótkie rady ;)

1

Pytanie - czy C# umożliwia zrobienie coś podobnego jak przy klikaniu prawym klawiszem na dowolny pliczek(Windows-nie wiem jak w innych systemach) "wyślij do >> Adres poczty", czyli, jeżeli ktoś sobie zaznaczy checkbox wyślij e-maile i kliknie buton, że mu dołączy ten plik?

Można, do tego posłuży Ci komponent ContextMenuStrip. Jak go użyć? Przykładowo mamy na formatce komponent ListView. W zdarzeniu ListView ( odpowiadającemy za kliknięcie na nim myszką ) robimy:

if (e.Button == MouseButtons.Right)
            {
                ListVIew.Show(Cursor.Position);
            }

Mam nadzieję, że coś rozjaśniłem. Jak dołączyć załącznik do e-mail'a jest pokazane np. tutaj: http://csharp.net-informations.com/communications/csharp-email-attachment.htm

0

Dziękuje za wasze wypowiedzi, jednak nie bardzo wiem jak użyć rozwiązania od Sarrus'a, jakieś podpowiedzi?

0

Można użyć czegoś takiego:

System.Diagnostics.Process.Start(@"mailto:[email protected]&subject=Hi&body=%0D%0DSent from my Kinect");

Automatycznie odpali to klienta poczty który jest skojarzony z systemem ale ma to jedną wadę nie można dodawać załączników.
Na temat mailto Protocol: http://msdn.microsoft.com/en-us/library/aa767737%28v=vs.85%29.aspx

Ale ktoś popełnił całkiem fajną pomoc działającą jak w/w ale z możliwością dodawania załączników.

Więc co masz zrobić stwórz nową klasę, skopiuj kod http://www.vbusers.com/codecsharp/codeget.asp?ThreadID=71&PostID=1 dokładnie od

public class MapiMailMessage
//...
// aż do końca dodaj Resolve

a potem wykorzystaj u siebie zgodnie z przykładem

MapiMailMessage message = new MapiMailMessage("Test Message", "Test Body");
        message.Recipients.Add("[email protected]");
        message.Files.Add(@"C:\del.txt");
        message.ShowDialog();
        Console.ReadLine();

1 użytkowników online, w tym zalogowanych: 0, gości: 1