C# 向一封电子邮件添加多个附件

C# 向一封电子邮件添加多个附件,c#,C#,我使用以下代码发送邮件。但我只能添加一个附件。我想在一封邮件中添加30多个附件。我怎样才能解决这个问题。请帮帮我 string fromEmail = "abcd@gmail.com "; mail_add=recever@gmail.com MailMessage mailMessage = new MailMessage(fromEmail, mail_add, subject, subject); System.Net.Mail.Attachment attachement; attac

我使用以下代码发送邮件。但我只能添加一个附件。我想在一封邮件中添加30多个附件。我怎样才能解决这个问题。请帮帮我

string fromEmail = "abcd@gmail.com ";
mail_add=recever@gmail.com
MailMessage mailMessage = new MailMessage(fromEmail, mail_add, subject, subject);
System.Net.Mail.Attachment attachement;

attachement = new System.Net.Mail.Attachment("path_with_xl_file");

mailMessage.Attachments.Add(attachement);
mailMessage.Body = body;
MailAddress copy = new MailAddress(fromEmail );
mailMessage.CC.Add(copy);
SmtpClient smtpClient = new SmtpClient();
smtpClient.Host = "smtp.gmail.com";
smtpClient.Port = 587
smtpClient.EnableSsl = false;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new NetworkCredential(fromEmail, "mis123");

try
{
    smtpClient.Send(mailMessage);   
}

您只需执行
mailMessage.Attachments.Add
多次即可:

mailMessage.Attachments.Add(new System.Net.Mail.Attachment("path_with_xl_file"));
mailMessage.Attachments.Add(new System.Net.Mail.Attachment("path_with_xl_file_2"));
mailMessage.Attachments.Add(new System.Net.Mail.Attachment("path_with_xl_file_3"));
mailMessage.Attachments.Add(new System.Net.Mail.Attachment("path_with_xl_file_4"));
当然,您可以通过使用数组、循环和其他语言工具来简化此代码。这取决于您在程序中存储这30个文件的方式。
例如,如果将所有路径存储在
string
数组中,则可以执行以下操作:

string[] pathes = /* ... */;
foreach (var path in pathes)
{
    mailMessage.Attachments.Add(new System.Net.Mail.Attachment(path));
}

下面是一个示例代码。此代码假定您已经有一组要转换为
附件的文件路径

        private static void SendEmail(IEnumerable<string> attachmentFilePaths)
        {
            string fromEmail = "abcd@gmail.com ";
            string mail_add = "recever@gmail.com";
            string subject = "hello";
            string body = "How are you?";

            try
            {
                using (MailMessage mailMessage = new MailMessage(fromEmail, mail_add, subject, body))
                {
                    foreach (var attachmentFilePath in attachmentFilePaths)
                    {
                        if (File.Exists(attachmentFilePath))
                        {
                            Attachment attachement = new Attachment(attachmentFilePath);
                            mailMessage.Attachments.Add(attachement);
                        }
                    }

                    MailAddress copy = new MailAddress(fromEmail);
                    mailMessage.CC.Add(copy);
                    using (SmtpClient smtpClient = new SmtpClient())
                    {
                        smtpClient.Host = "smtp.gmail.com";
                        smtpClient.Port = 587;
                        smtpClient.EnableSsl = false;
                        smtpClient.UseDefaultCredentials = false;
                        smtpClient.Credentials = new NetworkCredential(fromEmail, "mis123");
                        smtpClient.Send(mailMessage);
                    }
                }
            }catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }
private static void sendmail(IEnumerable attachmentfilepath)
{
字符串fromEmail=”abcd@gmail.com ";
字符串mail_add=”recever@gmail.com";
string subject=“hello”;
string body=“你好吗?”;
尝试
{
使用(MailMessage MailMessage=newmailmessage(从电子邮件、邮件添加、主题、正文))
{
foreach(attachmentFilePath中的var attachmentFilePath)
{
if(File.Exists(attachmentFilePath))
{
附件attachement=新附件(attachmentFilePath);
mailMessage.Attachments.Add(附件);
}
}
邮件地址副本=新邮件地址(来自电子邮件);
mailMessage.CC.Add(副本);
使用(SmtpClient SmtpClient=new SmtpClient())
{
smtpClient.Host=“smtp.gmail.com”;
smtpClient.Port=587;
smtpClient.EnableSsl=false;
smtpClient.UseDefaultCredentials=false;
smtpClient.Credentials=新的网络凭据(来自电子邮件“mis123”);
smtpClient.Send(mailMessage);
}
}
}捕获(例外情况除外)
{
Debug.WriteLine(例如消息);
}
}

什么是
邮件添加=recever@gmail.com
?我猜它应该是一个
字符串
。可能的邮件副本是收件人的邮件地址。您建议在上面写30次以上吗??