MAPISENDMAILW 콜백 함수(mapi.h)
유니코드 메시지를 보냅니다. 이 함수는 ANSI 함수 MAPISendMail을 대체합니다.
Windows 7 이전 버전: Windows 8용 Microsoft Windows SDK(소프트웨어 개발 키트)를 설치하고 MAPISendMailHelper를 사용하여 메시지를 보냅니다.
달리 지정하지 않는 한 모든 정보는 MAPISendMailW 및 MAPISendMail 모두에 적용됩니다.
구문
MAPISENDMAILW Mapisendmailw;
ULONG Mapisendmailw(
[in] LHANDLE lhSession,
[in] ULONG_PTR ulUIParam,
[in] lpMapiMessageW lpMessage,
[in] FLAGS flFlags,
ULONG ulReserved
)
{...}
매개 변수
[in] lhSession
형식: LHANDLE
단순 MAPI 세션 또는 0에 대한 핸들입니다.
lhSession 매개 변수 값이 0이면 MAPI는 사용자를 로그하고 호출 기간 동안만 존재하는 세션을 만듭니다. 이 임시 세션은 기존 공유 세션 또는 새 세션일 수 있습니다. 필요한 경우 로그온 대화 상자가 표시됩니다.
[in] ulUIParam
형식: ULONG_PTR
부모 창 핸들 또는 0입니다.
ulUIParam 매개 변수에 부모 창 핸들이 포함된 경우 핸들은 HWND 형식(ULONG_PTR 캐스팅)입니다.
호출 중에 대화 상자가 표시되지 않으면 ulUIParam 이 무시됩니다.
[in] lpMessage
형식: lpMapiMessageW
보낼 메시지를 포함하는 MAPISendMailW 구조체에 대한 포인터입니다.
멤버 | 메모 |
---|---|
lpFiles | 메시지에 파일 첨부 파일이 없는 경우 이 멤버를 NULL 로 설정합니다. |
lpszMessageType | 대인 관계 메시지를 처리하지 않는 애플리케이션에서 사용됩니다. 애플리케이션이 대인 관계 메시지를 처리하는 경우 lpszMessageType 멤버를 NULL 로 설정하거나 빈 문자열을 가리키도록 설정합니다. |
lpszSubject | NULL 값은 메시지의 제목에 대한 텍스트가 없음을 의미합니다. |
lpszNoteText | NULL 값은 메시지 본문에 텍스트가 없음을 의미합니다. |
lpRecips | NULL 값은 받는 사람이 없음을 의미합니다. 또한 이 멤버가 NULL인 경우 nRecipCount 멤버는 0이어야 합니다. |
nRecipCount | 값이 0이면 받는 사람이 없음을 의미합니다. 또한 이 멤버가 0이면 lpRecips 멤버가 NULL이어야 합니다. |
함수가 받는 사람 정보를 처리하는 방법에 대한 자세한 내용은 주의에서 받는 사람 정보 처리를 참조 하세요.
[in] flFlags
형식: FLAGS
옵션 플래그의 비트 마스크입니다. 다음 플래그를 설정할 수 있습니다.
값 | 의미 |
---|---|
|
사용자에게 받는 사람 및 기타 전송 옵션을 묻는 메시지를 표시하려면 애플리케이션 모달 대화 상자가 표시되어야 합니다.
MAPI_DIALOG 또는 MAPI_DIALOG_MODELESS 설정되지 않은 경우 하나 이상의 받는 사람을 지정해야 합니다. |
|
다음 버전의 Office를 사용하여 Windows에서 사용할 수 있습니다. 사용자에게 받는 사람 및 기타 전송 옵션을 묻는 메시지를 표시하려면 모덜리스 대화 상자가 표시되어야 합니다. MAPI_DIALOG_MODELESS 설정되면 lhSession 매개 변수를 0으로 설정해야 합니다. 그렇지 않으면 이 플래그가 설정되고 lhSession 이 0이 아니면 Outlook에서 예외가 발생합니다. 또한 MAPI_DIALOG_MODELESS 설정된 경우 시스템은 MAPI_NEW_SESSION 플래그를 무시합니다. MAPI_DIALOG 또는 MAPI_DIALOG_MODELESS 설정되지 않은 경우 하나 이상의 받는 사람을 지정해야 합니다. 팁 Windows 7 이하에서 이 플래그를 사용하려면 Windows 8용 Windows SDK와 다음 버전의 Office가 모두 설치되어 있어야 하며 MAPISendMailW 대신 MAPISendMailHelper를 호출해야 합니다.
|
|
필요한 경우 사용자에게 로그온하라는 메시지를 표시하는 대화 상자가 표시되어야 합니다.
MAPI_LOGON_UI 플래그가 설정되지 않은 경우 클라이언트 애플리케이션은 로그온 대화 상자를 표시하지 않고 사용자가 로그온하지 않은 경우 오류 값을 반환합니다. lpszMessageID 매개 변수가 비어 있으면 MAPI_LOGON_UI 플래그가 무시됩니다. |
|
환경의 공유 세션을 획득하는 대신 새 세션을 만들려고 합니다. MAPI_NEW_SESSION 플래그가 설정되지 않은 경우 함수는 기존 공유 세션을 사용합니다.
MAPI_NEW_SESSION 플래그를 설정하고(공유 세션 사용 방지) 프로필에 암호가 필요한 경우 MAPI_LOGON_UI 플래그도 설정해야 합니다. 그렇지 않으면 함수가 실패합니다. 클라이언트 애플리케이션은 암호 없이 기본 프로필을 사용하거나 암호 없이 명시적 프로필을 사용하여 이 오류를 방지할 수 있습니다. |
|
공급자가 유니코드를 지원하지 않는 경우 메시지를 ANSI로 변환하지 마세요.
참고 이 플래그는 MAPISendMailW 에만 사용할 수 있습니다.
|
ulReserved
형식: ULONG
예약; 는 0이어야 합니다.
반환 값
형식: ULONG
이 함수는 다음 값 중 하나를 반환합니다.
반환 코드/값 | 설명 |
---|---|
|
받는 사람이 받는 사람 설명자 구조 중 하나 이상과 일치했으며 MAPI_DIALOG 설정되지 않았습니다. 메시지가 전송되지 않았습니다. |
|
지정한 첨부 파일을 찾을 수 없습니다. 메시지가 전송되지 않았습니다. |
|
지정한 첨부 파일을 열 수 없습니다. 메시지가 전송되지 않았습니다. |
|
지정한 첨부 파일이 너무 큽 메시지가 전송되지 않았습니다. |
|
받는 사람 유형이 MAPI_TO, MAPI_CC 또는 MAPI_BCC 아닙니다. 메시지가 전송되지 않았습니다. |
|
지정되지 않은 오류가 하나 이상 발생했습니다. 메시지가 전송되지 않았습니다. |
|
진행할 메모리가 부족했습니다. 메시지가 전송되지 않았습니다. |
|
하나 이상의 받는 사람이 잘못되었거나 주소에 resolve 않았습니다. |
|
기본 로그온이 없었고 로그온 대화 상자가 표시되었을 때 사용자가 로그온하지 못했습니다. 메시지가 전송되지 않았습니다. |
|
메시지의 텍스트가 너무 큽 메시지가 전송되지 않았습니다. |
|
첨부 파일이 너무 많았습니다. 메시지가 전송되지 않았습니다. |
|
받는 사람이 너무 많았습니다. 메시지가 전송되지 않았습니다. |
|
MAPI_FORCE_UNICODE 플래그가 지정되고 유니코드가 지원되지 않습니다.
참고 이 값은 MAPISendMailW 에서만 반환할 수 있습니다.
|
|
받는 사람이 주소 목록에 나타나지 않았습니다. 메시지가 전송되지 않았습니다. |
|
사용자가 대화 상자 중 하나를 취소했습니다. 메시지가 전송되지 않았습니다. |
|
호출이 성공하고 메시지가 전송되었습니다. |
설명
MAPISendMailW(유니코드) 및 ANSI(MAPISendMail) 함수는 모두 사용자 상호 작용을 포함하거나 사용하지 않고 표준 메시지를 보냅니다. 두 함수가 사용자 상호 작용 없이 기본 서비스 공급자를 열 수 있도록 프로필을 구성해야 합니다.
MAPISendMailW 또는 MAPISendMail 모두 메시지를 보내기 위해 보낸 사람 유형 받는 사람이 필요하지 않습니다.
클라이언트 애플리케이션은 받는 사람 이름, 제목 텍스트, 파일 첨부 파일 또는 메시지 텍스트의 전체 또는 부분 목록을 제공할 수 있습니다. 정보가 누락된 경우 호출하는 함수( MAPISendMailW 또는 MAPISendMail)는 사용자에게 누락된 정보를 묻는 메시지를 표시할 수 있습니다.
정보가 누락되지 않은 경우 메시지를 있는 그대로 보내거나 필요한 경우 정보를 확인하고 값을 변경하라는 메시지가 사용자에게 표시될 수 있습니다.
MAPISendMailW와 MAPISendMail은 모두 메시지 생성에 더 큰 유연성을 허용한다는 점에서 MAPISendDocuments 함수와 다릅니다.
메시지 텍스트
일부 클라이언트 애플리케이션은 너무 길거나 캐리지 리턴, 줄 바꿈 또는 양식 피드를 포함하는 제목 줄을 잘라낼 수 있습니다.각 단락은 CR(0x0d), LF(0x0a) 또는 CRLF 쌍(0x0d0a)으로 종료되어야 합니다. MAPISendMailW 및 MAPISendMail 줄 바꿈이 모두 적절합니다.
텍스트가 시스템 제한을 초과하면 함수는 MAPI_E_TEXT_TOO_LARGE 값을 반환합니다.
파일 첨부 파일
메시지당 첨부 파일 수는 일부 메시징 시스템에서 제한될 수 있습니다. 이 제한을 초과하면 함수가 실패하고 MAPI_E_TOO_MANY_FILES 값을 반환합니다.파일 첨부 파일은 함수가 반환되기 전에 메시지에 복사됩니다. 따라서 나중에 파일을 변경해도 메시지 내용에 영향을 미치지 않습니다. 파일을 복사할 때 닫아야 합니다.
메시지 텍스트 범위 밖에 첨부 파일을 표시하지 마세요.
받는 사람
일부 메시징 시스템은 메시지당 받는 사람 수를 제한할 수 있습니다. 클라이언트 애플리케이션이 시스템 제한을 초과하는 수신자 수를 나타내는 NULL 이 아닌 값을 전달하면 함수가 실패하고 MAPI_E_TOO_MANY_RECIPIENTS 값을 반환합니다.클라이언트 애플리케이션이 하나 이상의 사용자 지정 받는 사람에게 메시지를 보내고 해당 받는 사람의 이름을 해결하지 않으려면 사용자 지정 받는 사람의 주소를 지정해야 합니다.
MAPISendMailW를 호출할 때 받는 사람의 주소를 지정하려면 받는 사람의 정보를 포함하는 MapiRecipDescW 구조체의 lpszAddress 멤버를 사용자 지정 주소로 설정해야 합니다. 이 MapiRecipDescW 구조체는 lpMessage 매개 변수에 의해 함수에 전달되는 MapiMessageW 구조체의 lpRecips 멤버에 저장된 받는 사람 배열에 포함됩니다.
함수의 성공적인 반환이 반드시 받는 사람 유효성 검사를 의미하지는 않습니다. 메시지가 모든 받는 사람에게 전송되지 않았을 수 있습니다. 전송 공급자에 따라 받는 사람 유효성 검사는 긴 프로세스가 될 수 있습니다.
받는 사람 정보 처리
MapiMessageW 또는 MapiMessage 구조의 lpRecips 멤버에는 항목 식별자, 받는 사람 이름, 주소 또는 이름 및 주소 쌍이 포함될 수 있습니다. 다음 표에서는 함수가 각 사례를 처리하는 방법을 보여 줍니다.받는 사람 정보 | 작업 |
---|---|
항목 식별자 | 이름 확인 없음; 이름 및 주소는 무시됩니다. |
Name | 단순 MAPI 확인 규칙을 사용하여 이름이 확인되었습니다. |
주소 | 이름 확인 없음; 주소는 메시지 배달과 받는 사람 이름을 표시하는 데 사용됩니다. |
이름 및 주소 | 이름 확인 없음; 받는 사람 이름을 표시하는 데만 사용되는 이름입니다. |
요구 사항
지원되는 최소 클라이언트 | Windows 8 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2012 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | mapi.h |
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기