2013-06-26 2 views
2

시스템이 다른 확장명의 파일을 생성합니다. 해당 파일을 전자 메일 주소로 보내야합니다. 수 나는 확장 예를 들어C# 확장명을 모른 채 mailmessage에 첨부 파일 추가

을 모르고 첨부 파일에서 파일을 넣어하는 방법

는 "sample.xls은"첨부 파일에 추가되어야하지만, 응용 프로그램은 또한 "하시면 sample.txt"추가 할 수 있습니다, 어떻게 할 그걸 처리해? 지금

attachment = new System.Net.Mail.Attachment(@"M:/" + filename + ".xls"); 

내가 그것을 파일의 모든 유형을 전송 그래서이

attachment = new System.Net.Mail.Attachment(@"M:/" + filename); // this didnt work 

같은 것을 할 수 있습니다. 그건 그렇고, 파일 이름은 코드에서 오는 것이 아니라 확장자가없는 데이터베이스에서 나온 것입니다. 따라서 "샘플"은 알 수없는 확장자를 가진 파일을 보내야하며, 끝에 올바른 확장자를 사용하여 파일을 보내야합니다 .

정말 감사드립니다!

string[] files = Directory.GetFiles("Directory of your file"); 
foreach (string s in files) 
{ 
    if (s.Contains(@"FileName without extension")) 
    { 
     attachment = new System.Net.Mail.Attachment(s); 
     mailMessage.Attachments.Add(attachment); // mailMessage is the name of message you want to attach the attachment 
    } 
} 
+0

당신은 그들을 찾아야 할 것입니다. 각자 첨부하십시오. –

+0

무슨 뜻인가요? 이것에 대한 쉬운 해결책이 있습니까? – user2520459

+0

"filename +". * "'로 directory.getfiles를 사용하여 일치하는 모든 파일을 나열하고 각각을 첨부 파일로 추가 –

답변

2

filename 가정하면 파일 이름 만 있고 다른 경로 구성 요소가 포함되어 있지 않습니다 :

foreach (string file in Directory.GetFiles(@"M:\", filename + ".*")) 
{ 
    yourMailMessage.Attachments.Add(new System.Net.Mail.Attachment(file)); 
} 

하는 경우를 (당신은 루프에 의해 그것을 수행 할 경우)

+0

감사합니다. 정말 도움이되었습니다. !!!! – user2520459

4

은 어쩌면 이것은 당신을 도울 수 filename에는 하위 디렉토리가 포함됩니다.

string fullPath = Path.Combine(@"M:\", filename + ".*"); 
foreach (string file in Directory.GetFiles(Path.GetDirectoryName(fullPath), Path.GetFileName(fullPath))) 
{ 
    yourMailMessage.Attachments.Add(new System.Net.Mail.Attachment(file)); 
} 
+0

"이름 'Directory'가 현재 컨텍스트에 존재하지 않습니다."오류가 발생합니다. – user2520459

+0

System.IO; –

+0

이제 메일에 파일을 첨부하지 않습니다. – user2520459

관련 문제