Несколько вложенных файлов в электронной почте с использованием C # - PullRequest
1 голос
/ 22 сентября 2009

Как прикрепить несколько файлов к письму с помощью c #.

        MailMessage mail = new MailMessage();
        SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

        //get the userID, Pass
        userID= register.userName;
        password = register.pass;


        string aa=txtTo.Text;
        mail.From = new MailAddress(userID);
        mail.To.Add(aa);
        mail.Subject = txtsubject.Text;
        mail.Body = txtComments.Text;

        //Attach file
        mail.Attachments.Add(new Attachment(txtAttachments.Text.ToString()));       
        SmtpServer.Port = 587;
        SmtpServer.UseDefaultCredentials = false;
        SmtpServer.Credentials = new System.Net.NetworkCredential(userID, password);
        SmtpServer.EnableSsl = true;
        SmtpServer.Send(mail);
        MessageBox.Show("Email sent successfully");
        this.Cursor = Cursors.Default;

        //close the page
        Email email = new Email();
        email.Close();

этот код используется только для прикрепления одного файла. Как я могу прикрепить несколько файлов в C # 2008. ??? Пожалуйста, дайте мне решение.

Ответы [ 5 ]

4 голосов
/ 22 сентября 2009
...
mail.Body = txtComments.Text;
//Attach file
mail.Attachments.Add(new Attachment(txtAttachments.Text.ToString()));
mail.Attachments.Add(new Attachment(txtAttachments2.Text.ToString()));
mail.Attachments.Add(new Attachment(txtAttachments3.Text.ToString()));
mail.Attachments.Add(new Attachment(txtAttachments4.Text.ToString()));
SmtpServer.Port = 587;
...      
4 голосов
/ 22 сентября 2009

В коллекцию Message.Attachments можно добавить несколько вложений

.

C #:

Message.Attachments.Add(new System.Net.Mail.Attachment(strAttPath));

VB:

Message.Attachments.Add(New Net.Mail.Attachment(strAttPath))

Просто позвоните .Add несколько раз, указывая на каждое вложение.

2 голосов
/ 22 сентября 2009

Просто добавьте больше вложений в коллекцию mail.Attachments, как вы делали выше.

1 голос
/ 11 февраля 2012

А как насчет выпуска файлов вложений после отправки?

Например, вы отправляете временный файл, используемый для создания содержимого вложения. Этот файл постоянно используется для этой цели. Файл вложения должен быть освобожден с dispose() на вложении.

Для этого сначала создайте вложение, чтобы дать ему имя объекта для использования с dispose () позже.

Attachment attach = new Attachment(txtAttachments.Text.ToString());    
Message.Attachments.Add(attach);
...

attach.dispose();   
0 голосов
/ 12 декабря 2018
protected void SendMail(List<string> attachments)
    {
        UserManagement Users = new UserManagement();
        Users.GetUserInformation();

        SmtpClient client = new SmtpClient(ip_address);
        MailMessage Message = new MailMessage();
        Message.From = new MailAddress(senderaddress);

        Message.To.Add(Users._CurUser_Destination_Email);
        Message.Subject = "Neue Umlagerung - " + cb_auflieger_limburg.SelectedItem.ToString();

        Message.Body = string.Format("Datum: {0}", DateTime.Now) + Environment.NewLine +
                                     "AufliegerNr.: " + cb_auflieger_limburg.SelectedItem.ToString() + Environment.NewLine +
                                     "Benutzer: " + Environment.UserName;

        client.UseDefaultCredentials = true;

        Attachment Attachment = null;

        try
        {
            foreach (string attachment in attachments)
            {
                Attachment = new Attachment(attachment);
                Message.Attachments.Add(Attachment);
            }

            client.Send(Message);
            Attachment.Dispose();
            Message.Dispose();
        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
        finally
        {
            foreach(string attachment in attachments)
            {
                //Dateien nach Versendung löschen
                FileInfo fi = new FileInfo(attachment);
                if (fi.Exists)
                {
                    fi.Delete();
                }
            }
        }
    }

Параметр Список вложений заполняется классом, который экспортирует DataGridView в различных форматах, таких как .csv и .pdf

Список «atttachments» содержит строки папки и имени файла.

//Exporting to CSV.
string FileName = $"YourFileName_{datetime}.csv";
File.WriteAllText(ExportPath + FileName, csv);

AttachmentsToExport.Add(ExportPath + FileName);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...