0

EWS를 사용하여 전자 메일 항목 첨부 파일을 읽고 디스크에 저장하여 나중에 사용할 수 있도록하려고합니다.Exchange 웹 서비스 - Base64 문자열에서 Byte로 전자 메일 첨부 파일을 변환 할 때 오류가 발생합니다.

나는 오류가 점점 오전 :

여기
"The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters. " 

내 코드입니다 :

Directory.CreateDirectory(emailAttachmentsPath); 

// Put attachment contents into a stream. C:\Dev\EWSHelloWorld 
emailAttachmentsPath = emailAttachmentsPath + "\\" + sEmailSubject+".txt"; 

//save to disk 
using (Stream FileToDisk = new FileStream(emailAttachmentsPath, FileMode.OpenOrCreate, FileAccess.ReadWrite)) 
{ 
    byte[] ContentBytes = System.Convert.FromBase64String(itemAttachment.ToString()); 

    FileToDisk.Write(ContentBytes, 0,ContentBytes.Length); 
    FileToDisk.Flush(); 
    FileToDisk.Close(); 
} 

이 제발 할 수있는 가장 좋은 방법은 무엇인가가?

나는 기본적으로 텍스트 파일에서 이메일의 텍스트를 원하고 이메일에 첨부 파일이 아니라 디스크에 저장됩니다 (내가하여 FileStream을 사용하여 생각 그 부분을 할 수 있습니다.

+0

합니까 [이] (http://social.msdn.microsoft.com/forums/en-US/0288deca-30bf-495e-a64e -25ef400d816d/ews-save-email-attachment-itemattachment) 도움이 필요하십니까? – groverboy

답변

1

필립을

ItemAttachment에서 Convert() 메서드를 사용할 수 없습니다.이 항목은 Base64로 인코딩되지 않았기 때문에 항목 첨부 파일에는 항목에 대한 많은 속성이 있습니다. 요청 내용을 제대로 이해하면 이메일.

전나무 고려해야 할 사항은 ItemAttachment가 이메일 메시지인지 확인하는 것입니다. 이 경우,이 라인의 부부는 이메일 본문의 텍스트를 얻을 수 있습니다

itemAttachment.Load(new PropertySet(BasePropertySet.FirstClassProperties)); 
string BodyText = itemAttachment.Item.Body.Text; 

첫 번째 줄은 항목을로드하고 먼저 클래스 속성입니다. 두 번째 줄에는 이메일 본문의 텍스트 버전이 표시됩니다.

이 정보가 도움이되기를 바랍니다. 그래도 문제가 해결되지 않으면 해당 게시물을 답변으로 표시하십시오.

감사합니다,

--- 밥 ---

+0

감사합니다 Bob, 항목 첨부 파일을 디스크에 저장해야 CRM 시스템에로드 할 수 있지만 ItemType TheItemAttachment = ((ItemAttachmentType) 전자 메일을 사용하여 .NET에서 인식 할 수있는 ItemType 속성을 가져올 수 없습니다. 첨부 파일 [0]). 항목;'[MSDN 블로그 : HOWTO : EWS : GetAttachment를 사용하여 메일에서 첨부 파일 다운로드하기] (http://blogs.msdn.com/b/vikas/archive/2007/10/16/howto -ws-use-getattachment-to-download-attachments-off-mail-appointment.aspx) - 다른 작업이 필요합니까? –

+1

해당 예제에 대한 몇 노트 1) EWS Managed API를 사용하고 있지 않습니다. 생성 된 웹 서비스 프록시. 이것은 권장 된 방법이 아닙니다. 2)이 예제는 전자 메일을 텍스트 파일로 저장하지 않고 메시지의 MimeContent에서 .EML 파일로 저장합니다. 이것은 당신이 원하는 결과로 설명했던 것과는 다릅니다. itemAttachment가 다음과 같은 것을 사용하는 이메일 메시지인지 확인할 수 있습니다 : if (itemAttachment.Item.ItemClass == "IPM.Note")' –

관련 문제