• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wysyłanie emailów przez c#

VPS Starter Arubacloud
+2 głosów
156 wizyt
pytanie zadane 3 lutego 2022 w C# przez DXC Użytkownik (500 p.)

Cześć robię projekt gmaila i robie teraz okienko wysyłania od kolegi dostałem bibliotekę .dll która odpowiada za samo wysyłanie i teraz mam kilka pytań.

1. Jak zrobić abym mógł wysyłać pliki różnych typów nie tylko RTF czy muszę zmienić całego richtextboxa czy jak bo pliki .rtf mi wysyła a innych wyskakuje błąd krytyczny.

2. Jak zrobić bym mógł wysyłać kilka plików naraz.

3. Przy funkcji btnSend dałem ifa który ma sprawdzic czy s.attachmentsPaths jest ustawione bo bez tego ifa to gdy nie było pliku to wyskakiwał błąd krytyczny ze s.attachmentsPaths nie może byc puste i to działa o ile plik nie jest ustawiony ale jak jest to wyskakuje błąd krytyczny „Ciąg nie został rozpoznany jako prawidłowa wartość logiczna.”

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MailManager;

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

        string path;

        private void btnAddFile_Click(object sender, EventArgs e)
        {
            OpenFileDialog o = new OpenFileDialog();
            o.Filter = "RTF|*.rtf|Text|*.txt|C# Files|*.cs|All Files|*.*";

            if (o.ShowDialog() == System.Windows.Forms.DialogResult.OK && o.FileName.Length > 0)
            {
                rtbFiles.LoadFile(o.FileName);
            }
            path = o.FileName;
            rtbFiles.Text = path;
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            Sending s = new Sending("csharptestt@gmail.com", "123test4", "smtp.gmail.com");

            s.recipment = tbTo.Text;
            s.title = tbSubject.Text;
            s.body = rtbContent.Text;
           
            if (Convert.ToBoolean(path))
            {
                s.attachmentsPaths.Add(path);
            }
            s.Send();
            this.Close();
        }
    }
}

błąd przy wysyłaniu np pliku .txt

1 odpowiedź

0 głosów
odpowiedź 4 lutego 2022 przez VBService Ekspert (255,440 p.)
wybrane 10 lutego 2022 przez DXC
 
Najlepsza
rtbFiles.LoadFile(o.FileName);

Próbowałeś użyć np. richTextbox.LoadFile z drugim parametrem RichTextBoxStreamType np

if (o.ShowDialog() == DialogResult.OK && o.FileName.Length > 0)
{
    richTextbox.LoadFile(o.FileName, RichTextBoxStreamType.UnicodePlainText);
}

 

nie lepiej zamiast

if (Convert.ToBoolean(path))

użyć  File.Exists(String)  ( Namespace: System.IO )

if (File.Exists(path))
{
    s.attachmentsPaths.Add(path);
}

 

[ UPDATE ]

dostałem bibliotekę .dll która odpowiada za samo wysyłanie

jak większość tego typu rozwiązań, wielokrotne wywołanie tego kodu

s.attachmentsPaths.Add(...);

powinno spowodować dodanie kolejnych plików "do wysłania".

 

Jak zrobić abym mógł wysyłać pliki różnych typów nie tylko RTF

nie musisz "ładować plików" do RichTextBox-a, żeby je dołączyć do email-a.

 

przykład

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MailManager;
 
namespace OknoWysylania
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        Sending s = new Sending("csharptestt@gmail.com", "123test4", "smtp.gmail.com");
 
        private void btnAddFile_Click(object sender, EventArgs e)
        {
            OpenFileDialog o = new OpenFileDialog()
            {
                InitialDirectory = @"C:\",
                Title = "Załączniki ...",
                Filter = "RTF|*.rtf|Text|*.txt|C# Files|*.cs|All Files|*.*",
                CheckFileExists = true,  
                CheckPathExists = true,
                DefaultExt = "txt",  
                RestoreDirectory = true,
                Multiselect = true
            };
 
            if (o.ShowDialog() == DialogResult.OK)
            {
                foreach (String file in o.FileNames)  
                {  
                    try  
                    {  
                        s.attachmentsPaths.Add(file);
                    }  
                    catch (Exception ex)  
                    {  
                        MessageBox.Show("Error: " + ex.Message);  
                    }  
                }
            }
        }
 
        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void btnSend_Click(object sender, EventArgs e)
        {
            try
            {
                s.recipment = tbTo.Text;
                s.title = tbSubject.Text;
                s.body = rtbContent.Text;

                s.Send();
                this.Close();
            }
            catch (Exception ex)  
            {  
                MessageBox.Show("Error: " + ex.Message);  
            }
        }
    }
}

 

1
komentarz 10 lutego 2022 przez DXC Użytkownik (500 p.)
wielkie dzieki, mega mi pomogles

Podobne pytania

0 głosów
1 odpowiedź 386 wizyt
pytanie zadane 11 sierpnia 2018 w C# przez daniel500013 Użytkownik (850 p.)
0 głosów
1 odpowiedź 361 wizyt
pytanie zadane 25 marca 2021 w C# przez disaster Bywalec (2,120 p.)
0 głosów
1 odpowiedź 192 wizyt
pytanie zadane 1 marca 2020 w C# przez Vorczu Początkujący (390 p.)

92,843 zapytań

141,782 odpowiedzi

320,858 komentarzy

62,174 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...