ezSMS Component 소개

 ezSMS Component application programming interface (API)는 ezSMS 서버에 로그인 하여 문자 전송, 예약, 그리고 전송 내역 확인 등의 일을 할 수 있도록 구성되어 있습니다. ezSMS Component는 Component Object Model(COM)을 기반으로 제작 되었으며 이를 지원하는 프로그래밍 언어, 스크립트, VBA (Visual Basic for Application) 등에서 사용할 수 있습니다.
  • ezSMSComponent 객체는 CoCreateInstance 같은 표준 COM 생성 메서드를 통해 생성하거나 스크립팅, 비주얼베이직의 CreateObject를 통해 생성할 수 있습니다.
  • 모든 작업은 ezSMSComponent의 Message 객체를 생성하여 획득한 IMessage 인터페이스에서 시작됩니다.
  • 문자 전송, 전송 내역 확인 등의 많은 작업은 IMessage 인터페이스의 SetAccountInfo 메서드를 통해 ezSMS 서버에 로그인 정보를 전달할 수 있도록 해야만 가능합니다.
프로그래밍 가능한 언어
  • Microsoft Visual C++
  • Microsoft Visual Basic
  • Borland Delphi
  • Sybase Power Builder
  • Microsoft C#.NET, VB.NET, JScript.NET
  • ASP (Active Server Page), ASP.NET
  • PHP (Windows용)
  • JavaScript
  • VBScript
  • Microsoft Excel, Word, Outlook, Powerpoint 등 VBA를 지원하는 제품
  • 기타 Microsoft Windows 운영체제 환경에서 COM (Component Object Model)을 지원하는 프로그래밍 언어 또는 스크립트
Message 예제에 사용된 컴파일러
  • Microsoft Visual Studio C++ 2013
SMS 예제에 사용된 컴파일러
  • Microsoft Visual C++ 6.0 (저수준 제어 개발자를 위해 스마트 포인터를 거의 사용하지 않음)
  • Microsoft Visual Basic 6.0, Microsoft Office 2003 VBA
  • Borland Delphi 6.0
  • Sybase Power Builder 8.0
  • JavaScript
  • VBScript
  • Microsoft Active Server Page
  • PHP 4.0 for Windows
샘플 프로그램 및 활용예에 사용된 언어/스크립트
  • Microsoft Visual C++ 6.0
  • Microsoft Visual Basic 6.0
  • Borland Delphi


환경 설정

 ezSMS Component API를 사용하기 위해 아래 보기 중 한가지 방법을 선택하십시오.
  • 제공된 헤더 파일(ezSMSComponent32.h) 인클루드하여 사용 (C++)
  • 형식 라이브러리(ezSMSComponent32.tlb), DLL 파일(ezSMSComponent32.dll)을 Import하여 클래스 또는 유닛 생성 (C++, Delphi)
  • 레지스트리, 형식 라이브러리(ezSMSComponent32.tlb), DLL 파일(ezSMSComponent32.dll)로부터 클래스 생성(Visual C++ 7.x(Visual Studio .NET 2002 이상 통합환경))
  • 형식 라이브러리 참조 (Visual Basic, C++.NET, C#.NET, VB.NET)
Microsoft Visual C++ 6.0 에서 ezSMSComponent32.h 헤더파일 인클루드
  1. 소스 파일 또는 헤더 파일에 #include "ezSMSComponent32.h" 추가
Microsoft Visual C++ 6.0 설정 (형식 라이브러리 임포트)
  1. Visual C++ 6.0 통합환경에서, View 메뉴를 열고 Class Wizard 클릭
  2. Add Class 버튼 클릭하여 메뉴에서 From a type library를 선택
  3. 설치된 ezSMSComponent32.tlb나 ezSMSComponent32.dll을 찾아 더블클릭
  4. Confirm Classes 대화상자에서 OK 버튼 클릭
Microsoft Visual C++ 7.x 설정 (형식 라이브러리 임포트)
  1. Visual C++ 7.x 통합환경에서, 프로젝트 메뉴를 열고 클래스 추가 클릭
  2. 범주에서 MFC클릭 후 템플릿에서 TypeLib의 MFC 클래스 더블클릭
  3. 클래스 위치를 레지스트리로 할 경우 사용 가능한 형식 라이브러리에서 ezSMSComponent 3.2 형식 라이브러리 선택
  4. 클래스 위치를 파일로 할 경우 위치에서 ezSMSComponent32.tlb나 ezSMSComponent32.dll을 선택
  5. >> 버튼 클릭하여 모든 인터페이스에 대하여 클래스 생성 후 마침 버튼 클릭
Microsoft Visual Basic 6.0 설정
  1. Visual Basic 6.0 통합환경에서, 프로젝트 메뉴를 열고 참조 클릭
  2. ezSMSComponent 3.2 형식 라이브러리 항목에 체크한 후 확인 버튼 클릭
Microsoft Managed C++.NET, C#.NET, VB.NET 설정
  1. Visual Studio 통합환경에서, 프로젝트 메뉴를 열고 참조 추가 클릭
  2. COM 탭을 클릭
  3. ezSMSComponent 3.2 형식 라이브러리를 더블클릭하여 선택한 구성요소에 추가한 후 확인 버튼 클릭
Borland Delphi 6.0 설정 (형식 라이브러리 등록하기)
  1. 델파이 6.0 통합환경에서, Project 메뉴를 열고 Import Type Library... 클릭
  2. Import Type Library 탭에서 ezSMSComponent 3.2 형식 라이브러리를 선택합니다. 이 항목이 없다면, Add.. 버튼을 클릭하여 배포된 ezSMSComponent32.tlb 또는 ezSMSComponent32.dll 파일을 불러옵니다.
  3. Create Unit 버튼을 누릅니다.
Borland Delphi 6.0 설정 (형식 라이브러리가 등록된 상태인 경우)
  1. Project 메뉴를 열고 Add to Project...를 클릭합니다.
  2. 델파이 Imports 폴더를 찾아가 ezSMSComponent_TLB.pas를 선택합니다.


새로운 기능

 ezSMS Component 4.2.1은 일부 인터페이스에 자동화가 지원되었습니다.

ezSMS Component 4.2는 다음과 같은 기능이 추가되었습니다.
  • 새 기능 추가
    IReceiver2 인터페이스
    ILogDetail2 인터페이스
    ILogDetails3 인터페이스

ezSMS Component 4.1은 LMS, MMS 전송 기능이 추가되고 IMessage 인터페이스를 통해 전송할 수 있습니다.
  • 새 기능 추가
    Message 객체 (SMS, LMS, MMS 전송)
    IContents 인터페이스
    ILogDetails2 인터페이스
    ILogList3 인터페이스
    ISendResult2 인터페이스
    ILoginInfo3 인터페이스
  • 더 이상 사용되지 않는(Deprecated) 객체, 인터페이스, 함수
    SMS 객체
    ISMS 인터페이스
    ILogDetailsCollection 인터페이스
    ILoginInfo::ServerVersion 속성
    ILoginInfo::UserPassword 속성
    IMessage::Login 메서드
    IMessage::RequestLogDetailByLists 메서드
    IMessage::OfficeName 메서드
    IMessage::ServiceCode 메서드
    ILogLists::AddDirect 메서드

ezSMS Component 3.2는 성능 개선 및 몇가지 알려진 버그가 수정되었습니다.

ezSMS Component 3.1은 다음과 같은 기능이 변경 되었습니다.
  • ILogList::SendTime의 변화
    ILogList::SendTime 속성이 예약 목록 가져올 때만 사용될 수 있었지만, 3.1 버전에서는 즉시 보내기 했던 전송 내역에서도 전송될 시간이 기록되어 상세 내역을 가져오지 않아도 메시지를 언제 보내려 했는지 알 수 있습니다.
  • ILogList2 인터페이스 추가
    접수 시간을 가져올 수 있는 ILogList2 인터페이스가 추가되었습니다.

ezSMS Component 3.0은 다음과 같은 기능이 추가/변경 되었습니다.
  • 독립 DLL화
    ezSMS Component 2.x까지는 MFC, ATL, CRT관련 DLL이 시스템상에 존재해야 했으나 ezSMS Component 3.0부터는 자체 DLL 하나만으로 생성/사용이 가능합니다.
  • 요청 횟수의 무제한화
    기존 컴포넌트에서는 초당 로그인 횟수, 초당 전송내역 요청 횟수 등으로 서버에 부담이 갈 수 있는 부분에 대하여 제한을 걸었지만 새버전에서는 그러한 제한을 모두 삭제하였습니다. 하지만 서버에 부담을 주는 고의적인 악성 사용은 강제 계약 취소 등 불이익을 당할 수 있습니다.
  • 전송결과에 전송내역 관련 속성 추가
    SMS 전송 후 별도로 전송 내역을 요청하지 않고도 전송 상세내역을 요청할 수 있도록 전송 결과에 Date, Index 속성이 추가되었습니다. (ISendResult 인터페이스, (ISendResults 인터페이스 참조)
  • 특정 범위의 전송 내역 요청
    전송 내역이 많을 경우, 전송 내역을 요청할 때마다 대량의 트래픽이 발생하며, 사용자 또한 원하지 않는 결과에 시간을 허비하는 경우가 많아, 특정 범위의 전송 내역만을 가져올 수 있도록 ISMS::RequestLogBound 메서드를 추가하였습니다.
  • 전송내역 삭제
    전송 내역이 많아 관리가 어렵거나, 남기고 싶지 않은 전송 내역을 삭제할 수 있도록 ISMS::DeleteLog 메서드군을 추가하였습니다.
  • 다중 예약 취소
    기존에는 한번에 하나의 예약만 취소할 수 있었으나, 한꺼번에 여러 전송 내역을 취소할 수 있도록 ISMS::CancelReservationByLists 메서드를 마련하였습니다.
  • 전송 상세내역 다중 요청
    한꺼번에 여러 상세 내역을 요청할 수 있도록 ISMS::RequestLogDetailByLists 메서드를 추가하였습니다.
  • 전송 내역 객체의 재활용
    ILogList 인터페이스를 재활용할 수 있도록 ISMS::CancelReservationByList, ISMS::DeleteLogByList, ISMS::RequestLogDetailByList 메서드를 추가하였고, 로그 객체를 생성할 수 있도록 ISMS::CreateLogList 메서드군을 추가하였습니다.
  • 컴포넌트 CLSID, ProgID, 기본 인터페이스명 변경
    기존의 스크립팅으로는 "ezSMSComponent.ezModule"로 객체를 생성하였으나 3.0부터는 "ezSMSComponent.SMS"를 사용합니다. 또한 기본 인터페이스명도 IezModule에서 ISMS로 변경되었으므로 주의바랍니다.


ezSMS Component 동작 개요

컴포넌트 사용자 등록
컴포넌트를 이용하려면 먼저 (주)이한캐스트의 DLL 사용자로 등록하여야 합니다.
  • www.SMSPia.com 사이트에 회원 가입합니다.
  • ezSMS Component 4부터는 ServiceCode 없이 SMSPia ID로 컴포넌트를 사용할 수 있습니다.
컴포넌트 동작 개요
아래 흐름도는 ezSMSComponent를 이용하여 문자를 전송하는 과정을 나타냅니다.
  • 우선 CoInitialize(Windows API) 등의 함수로 COM 을 초기화 한 후 Message 객체를 생성합니다.
  • IMessage::SetAccountInfo 메서드를 사용하여 컴포넌트 사용자 ID와 비밀번호를 설정합니다.
  • 사용자가 명령을 내리도록 기다리면서 문자를 전송하라고 명령하면 IMessage::Send 메서드를 사용하여 문자를 전송합니다.
  • 만약 IMessage::Send 메서드가 EZSMS_E_LOGINFAIL (로그인 상태가 아니거나 로그인 정보가 잘못 됨)를 반환하게 되면 IMessage::SetAccountInfo 메서드를 통해 올바른 사용자 정보로 재설정한 후 전송 동작을 다시 실행합니다.
  • 문자 전송 외에 전송 내역 요청(IMessage::RequestLog)이나 예약 취소(IMessage::CancelReservation) 등의 메서드를 호출하여 EZSMS_E_LOGINFAIL를 반환받게 되면 위 흐름도의 전송 메커니즘과 마찬가지로 사용자 정보를 다시 설정해야 합니다. 로그인 성공 이후에 웹 사이트에서 사용자의 패스워드를 바꾸게 되면 문자 전송, 로그 요청 등 특정 메서드를 호출하면서 로그인 실패가 일어날 수 있습니다.
  • 더 이상 컴포넌트를 사용하지 않으면, Message 객체를 메모리에서 해제합니다.
  • CoUninitialize(Windows API) 등의 함수로 COM 사용을 해제합니다.


Message 전송과 전송내역 관리의 기본

 아래는 Message 전송과 전송내역과의 관계입니다.

위와 같이 IMessage::SendOne 메서드로 하나의 Message만 전송한 경우 ①번 전송내역과 1:1 관계가 되며 상세 내역 요청시 ①번 전송내역을 지정하면 됩니다.
즉, 접수 : 전송내역 : 상세내역 = 1 : 1 : 1 대응됩니다.

IMessage::Send 메서드로 여러개의 메시지를 한꺼번에 전송했을 경우에도 전송내역은 하나뿐이며 대신 그 ②번 전송내역은 그룹으로 관리됩니다. 즉, 상세 내역 요청시 ②번 전송내역을 지정하면 ⒝, ⒞, ⒟ 이 세개의 상세 내역을 반환하게 됩니다.

전송내역은 단지 Message를 접수한 행위를 기록한 것 뿐이며, 실제로 전송 상태나 전송 결과 정보는 상세 내역에 저장되어 있습니다.


ezSMS Component 배포

 ezSMS Component application programming interface (API)를 이용하여 프로그램을 제작한 후 고객에게 배포 할 경우 아래를 참고하십시오.

ezSMS Component 배포 방법
  1. ezSMS Component 설치 폴더에서 ezSMSComponent32.dll을 System 폴더에 복사되도록 설치 프로젝트에 추가합니다.
  2. 마찬가지로 iconv.dll, libxml2.dll, zlib1.dll도 ezSMSComponent32.dll이 위치할 곳에 함께 추가합니다.
  3. ezSMSComponent32.dll을 레지스트리에 등록하도록 합니다.
    • regsvr32.exe 설치된폴더\ezSMSComponent32.dll 또는
    • 복사된 ezSMSComponent32.dll의 DllRegisterServer 함수를 호출합니다.


ezSMS Component Sample

ezSMS Component를 활용하는 예
활용 개체 예제
엑셀 (Microsoft Excel)
  • 요금 미납 목록, 고객 목록 등의 데이터를 선택하여 즉시 SMS를 전송하도록 할 수 있습니다.
아웃룩 (Microsoft Outlook)
  • 주소록에 저장해 둔 고객이나 친구들을 선택하여 원하는 문자를 전송할 수 있습니다.
액세스 (Microsoft Access)
  • 데이터베이스에서 특정 요구에 부합하는 데이터 셋을 추출하여 문자를 전송하도록 할 수 있습니다.
웹 서버 페이지
  • 쇼핑몰에서 입금확인, 물건 배송 등의 과정을 SMS를 활용하여 고객에게 신뢰감과 편의를 제공할 수 있습니다.
  • 회원 가입 확인이나 회원 인증 등에 SMS를 활용할 수 있습니다.
  • 관리자 페이지에서, 회사의 새로운 이벤트를 알리기 위해 회원들에게 일괄적으로 문자를 발송할 수 있습니다.
  • 관리자 페이지에서, 고객의 기념일에 축하의 메시지를 전달하도록 할 수 있습니다.
  • 민원 게시판 등 게시물의 내용에 즉각 대응해야 하는 경우 글 등록과 동시에 관리자에게 문자를 전송하여 알리미 역할을 하도록 할 수 있습니다.
각종 프로그래밍 언어
  • 고객 관리 프로그램, 대리운전 관리 프로그램, 비디오 대여 관리 프로그램, 유치원, 학원 등 여러곳에서 ezSMSComponent를 활용할 수 있습니다.
스크립트
  • 개인 사용자들은 자신이 원하는 디자인으로 메시지를 전송하는 웹 페이지를 만든 후 VBScript나 JavaScript 등으로 이 컴포넌트를 제어하여 문자를 전송하도록 할 수 있습니다.

프로그래밍 언어 예제 목록 (ezSMSComponent 4.2)
Microsoft Visual C++ 2013 Sample (COM Supported) | 스마트 포인터를 사용한 SMS 전송 예제입니다.
Microsoft Visual C# 2013 Sample | C#용 전송 예제입니다.
Microsoft Visual Basic 6.0 Sample | Visual Basic 프로그래머를 위한 예제입니다.
Microsoft Visual Basic 2013 Sample | Visual Basic 2013 프로그래머를 위한 예제입니다. (ezSMSComponent 4.2 추가 기능 사용법)


Copyright 2015, ehanCAST

아래 파일과 내용에 대한 모든 저작권은 ehanCAST에 있습니다.
  • ezSMSComponent32.dll
  • ezSMSComponent32.tlb
  • ezSMSComponent32.h
  • ezSMSComponent32Reference.chm


전체 인터페이스 메서드/속성 목록

 IMessage 속성과 메서드
CancelReservation 메서드 | 예약 취소
CancelReservationByList 메서드 | ILogList 인터페이스를 통한 예약 취소
CancelReservationByLists 메서드 | ILogLists 인터페이스를 통한 다중 예약 취소
CreateContents 메서드 | 메시지 컨텐츠 객체 생성
CreateLogList 메서드 | 로그 객체 생성
CreateLogListDirect 메서드 | 로그 객체 직접 생성
CreateLogLists 메서드 | 로그 객체 목록 생성
CreateReceiver 메서드 | 수신자 생성
CreateReceiverDirect 메서드 | 수신자 직접 생성
CreateReceivers 메서드 | 수신자 목록 생성
DeleteLog 메서드 | 전송 내역 삭제
DeleteLogByList 메서드 | ILogList 인터페이스를 통한 전송 내역 삭제
DeleteLogByLists 메서드 | ILogLists 인터페이스를 통한 다중 전송 내역 취소
GetErrorMessage 메서드 | 에러코드를 에러 메시지(문자열)로 변환
Login 메서드 (deprecated) | ezSMS 서버에 로그인
SetAccountInfo 메서드 | 사용자 계정 정보 설정
RequestLog 메서드 | 전송 내역 요청
RequestLogBound 메서드 | 특정 범위의 전송 내역 요청
RequestLogDetail 메서드 | 전송 상세 내역 요청
RequestLogDetailByList 메서드 | ILogList 인터페이스를 통한 전송 상세 내역 요청
RequestLogDetailByLists 메서드 (deprecated) | ILogLists 인터페이스를 통한 다중 전송 상세 내역 요청
SendOne 메서드 | 메시지 한개만 전송
Send 메서드 | 메시지 다중 전송
UpdateLoginInfo 메서드 | 로그인 정보를 다시 가져옴
ArrayBase 속성 | 컬렉션(배열)의 시작 인덱스 설정/얻기
LoginInfo 속성 | 로그인 정보 얻기
OfficeName 속성 (deprecated) | 부서 이름 설정/얻기
ServiceCode 속성 (deprecated) | 컴포넌트 서비스 코드
VersionMajor 속성 | 컴포넌트 메이저 버전 얻기
VersionMinor 속성 | 컴포넌트 마이너 버전 얻기

ICancelResult 속성
CountFailure 속성 | 세부 내역 중 취소 실패한 개수
CountSucceed 속성 | 세부 내역 중 취소 성공한 개수
CountTotal 속성 | 세부 내역 총 개수
Date 속성 | 요청 날짜
Index 속성 | 로그 인덱스
Result 속성 | 취소 결과

ICancelResults 속성
_NewEnum 속성 | ICancelResult 인터페이스의 집합인 IEnumVARIANT 인터페이스를 리턴합니다.
Count 속성 | ICancelResult 아이템의 수를 리턴합니다.
Item 속성 | 지정한 인덱스의 CancelResult 객체에 대한 IDispatch 인터페이스를 리턴합니다.

IDeleteResult 속성
Date 속성 | 요청 날짜
Index 속성 | 로그 인덱스
Result 속성 | 삭제 결과

IDeleteResults 속성
_NewEnum 속성 | IDeleteResult 인터페이스의 집합인 IEnumVARIANT 인터페이스를 리턴합니다.
Count 속성 | IDeleteResult 아이템의 수를 리턴합니다.
Item 속성 | 지정한 인덱스의 DeleteResult 객체에 대한 IDispatch 인터페이스를 리턴합니다.

ILogDetail 속성
Message 속성 | 전송 메시지
ReceiverPhone 속성 | 수신자 휴대폰 번호
Result 속성 | 전송 결과
Status 속성 | 전송 상태
TransDate 속성 | 메시지가 전송된(될) 날짜

ILogDetail2 속성
Name 속성 수신자 이름

ILogDetails 속성과 메서드
_NewEnum 속성 | ILogDetail 인터페이스의 집합인 IEnumVARIANT 인터페이스를 리턴합니다.
Count 속성 | ILogDetail 아이템의 수를 리턴합니다.
Date 속성 | 요청 날짜
Index 속성 | 로그 인덱스
Item 속성 | 지정한 인덱스의 LogDetail 객체에 대한 IDispatch 인터페이스를 리턴합니다.
ReturnPhone 속성 | 회신 번호

ILogDetails2 속성과 메서드
Type 속성 전송 타입 (SMS, LMS, MMS)

ILogDetails3 속성과 메서드
ImageURLs 속성 전송한 MMS 이미지 확인용 URL 목록

ILogDetailsCollection 속성 (deprecated)
_NewEnum 속성 | ILogDetails 컬렉션의 집합인 IEnumVARIANT 인터페이스를 리턴합니다.
Count 속성 | ILogDetails 아이템의 수를 리턴합니다.
Item 속성 | 지정한 인덱스의 LogDetails 객체에 대한 IDispatch 인터페이스를 리턴합니다.

ILoginInfo 속성
FreeCall 속성 | 남은 콜 수 정보
Logined 속성 | 로그인 상태
ServerIP 속성 | 접속된 서버 IP 어드레스
ServerPort 속성 | 접속된 서버 포트
ServerTime 속성 | 로그인 성공시 서버 시간 (서버 시간 동기화에 사용될 수 있음)
ServerVersion 속성 (deprecated) | 서버 버전
UserID 속성 | 사용자 ID
UserPassword 속성 (deprecated) | 사용자 패스워드
UserName 속성 | 사용자 ID
UserPhoneNumber 속성 | 사용자 회신번호

ILoginInfo3 속성
UserPhoneNumbers 속성 사용자 회신번호 목록

ILogList 속성
CountFailure 속성 | 세부 내역 중 전송 실패한 개수
CountSucceed 속성 | 세부 내역 중 전송 성공한 개수
CountTotal 속성 | 세부 내역 총 개수
Date 속성 | 요청 날짜
Index 속성 | 로그 인덱스
Message 속성 | 전송된(될) 메시지
ReceiverPhone 속성 | 수신자 휴대폰 번호
ReturnPhone 속성 | 회신 번호
SendMode 속성 | 전송 모드 (즉시, 예약)
SendTime 속성 | 전송된(될) 날짜/시간

ILogList2 속성
WriteTime 속성 접수된 날짜/시간

ILogList3 속성
Type 속성 메시지 타입

ILogLists 속성과 메서드
_NewEnum 속성 | ILogList 인터페이스의 집합인 IEnumVARIANT 인터페이스를 리턴합니다.
Add 메서드 | ILogList 항목 추가
AddDirect 메서드 (deprecated) | ILogList 항목 직접 추가
Count 속성 | ILogList 아이템의 수를 리턴합니다.
Item 속성 | 지정한 인덱스의 LogList 객체에 대한 IDispatch 인터페이스를 리턴합니다.
Remove 메서드 | ILogList 항목 삭제 추가

IReceiver 속성
Message 속성 | 전송할 메시지
Phone 속성 | 수신자 휴대폰 번호
SendMode 속성 | 전송 모드 (즉시 전송, 예약 전송)
SendTime 속성 | 전송 시간

IReceiver2 속성
Name 속성 수신자 이름

IReceivers 속성과 메서드
_NewEnum 속성 | IReceiver 인터페이스의 집합인 IEnumVARIANT 인터페이스를 리턴합니다.
Add 메서드 | 수신자 추가
AddDirect 메서드 | 수신자 직접 추가
Count 속성 | IReceiver 아이템의 수를 리턴합니다.
Item 속성 | 지정한 인덱스의 Receiver 객체에 대한 IDispatch 인터페이스를 리턴합니다.
Remove 메서드 | 수신자 삭제

ISendResult 속성과 메서드
Date 속성 | 로그 날짜
Index 속성 | 로그 인덱스
MakeLogList 메서드 | 이 결과물을 LogList 객체로 만들어 리턴한다.
Phone 속성 | 수신자 휴대폰 번호
Result 속성 | 메시지 접수 결과

ISendResult2 속성과 메서드
Type 속성 메시지 타입

ISendResults 속성과 메서드
_NewEnum 속성 | ISendResult 인터페이스의 집합인 IEnumVARIANT 인터페이스를 리턴합니다.
Count 속성 | ISendResult 아이템의 수를 리턴합니다.
Date 속성 | 로그 날짜
Index 속성 | 로그 인덱스
Item 속성 | 지정한 인덱스의 SendResult 객체에 대한 IDispatch 인터페이스를 리턴합니다.
MakeLogList 메서드 | 이 결과물을 LogList 객체로 만들어 리턴한다.


객체

 아래는 ezSMSComponent에서 생성되는 객체 목록입니다.

ezSMSComponent 객체
Message ezSMSComponent는 이 Message 객체를 생성하는것이 모든 작업의 출발점이 됩니다. 이 객체가 생성된 후 로그인, 문자 전송, 전송 내역 요청 등의 작업을 진행할 수 있습니다.
구현된 인터페이스: IMessage

관련 생성 객체
CancelResult | 전송 취소 결과를 갖는 객체 구현된 인터페이스: ICancelResult
CancelResults | 전송 취소 결과 목록을 갖는 컬렉션 객체 구현된 인터페이스: ICancelResults
Contents | SMS, LMS, MMS 전송을 위한 기본 컨텐츠 (문자 내용, 제목, 이미지) 구현된 인터페이스: IContents
DeleteResult | 전송 내역 삭제 결과를 갖는 객체 구현된 인터페이스: IDeleteResult
DeleteResults | 전송 내역 삭제 결과 목록을 갖는 컬렉션 객체 구현된 인터페이스: IDeleteResults
LogDetail | 상세 전송 내역 요청 결과를 갖는 객체 구현된 인터페이스: ILogDetail
LogDetails | 상세 전송 내역 요청 결과 목록을 갖는 컬렉션 객체 구현된 인터페이스: ILogDetails, ILogDetails2
LoginInfo | 로그인 정보를 갖는 객체 구현된 인터페이스: ILoginInfo
LogList | 전송 내역 요청 결과를 갖는 객체 구현된 인터페이스: ILogList, ILogList2, ILogList3
LogLists | 전송 내역 요청 결과 목록을 갖는 컬렉션 객체 구현된 인터페이스: ILogLists
Receiver | 수신자 정보를 갖는 객체 구현된 인터페이스: IReceiver
Receivers | 수신자 정보의 목록을 갖는 컬렉션 객체 구현된 인터페이스: IReceivers
SendResult | 전송 결과를 갖는 객체 구현된 인터페이스: ISendResult, ISendResult2
SendResults | 전송 결과 목록을 갖는 컬렉션 객체 구현된 인터페이스: ISendResults


Message 객체

 ezSMSComponent의 메인 객체입니다. 이 객체는 Component Object Model(COM) 기반으로 작성되어 COM을 지원하는 언어나 스크립트로 생성 가능합니다. C++와 같은 저수준 제어 언어를 사용하는 개발자이면서 COM 클라이언트 개발에 익숙치 않으신 분은 COM을 지원하는 컴파일러에서 스마트 포인터 클래스를 사용할 것을 권장합니다. 스마트 포인터 클래스를 사용함으로써 얻는 이점은 블럭이 끝날 때 생성된 객체별로 Release 메서드를 호출하지 않아도 자동으로 Release가 되므로 메모리 누수에 크게 신경쓰지 않아도 됩니다.

객체 정보
CLSID | E17CBD66-320E-4BBD-96EF-FA7DAB21974A
ProgID | ezSMSComponent.Message
Implementation | ezSMSComponent32.dll
Minimum availability | ezSMSComponent 4.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server

구현된 인터페이스
IMessage | Message 객체의 기본 인터페이스 (로그인, 전송, 전송취소, 전송내역 등)
DispMessage | Message 객체의 스크립팅 언어를 위한 디스패치 인터페이스

생성/액세스 함수
CoGetClassObject and CreateInstance | CoGetClassObject로 CLSID를 지정하여 IClassFactory 인터페이스를 얻는다. 그 다음 IClassFactory의 CreateInstance를 호출하여 이 객체를 생성할 수 있다.
CoCreateInstance | 주어진 CLSID와 IID를 통해 이 객체를 생성할 수 있다.
[Visual Basic, Scripting] CreateObject | 주어진 ProgID를 통해 이 객체를 생성할 수 있다.

객체 생성 예제
/* C++, CoGetClassObject] */
#include <ezSMSComponent32.h>
CoInitialize(NULL);

IClassFactory* pFactory;
HRESULT hr = CoGetClassObject(__uuidof(Message), CLSCTX_INPROC, NULL, IID_IClassFactory, (void**)&pFactory);
if(SUCCEEDED(hr))
{
    IMessage* pMessage = NULL;
    hr = pFactory->CreateInstance(NULL, __uuidof(IMessage), (void**)&pMessage);
    if(SUCCEEDED(hr))
    {
        /* 처리 */

        pMessage->Release();
    }
    pFactory->Release();
}

CoUninitialize();

/* C++, CoCreateInstance */
#include <ezSMSComponent32.h>

CoInitialize(NULL);
IMessage* pMessage = NULL;
HRESULT hr = CoCreateInstance(__uuidof(Message), NULL, CLSCTX_INPROC, __uuidof(IMessage), (void**)&pMessage);

if(SUCCEEDED(hr))
{
    /* 처리 */

    pMessage->Release();
}

CoUninitialize();

/* C++, COM Supported Compiler */
#import "ezSMSComponent32.tlb" no_namespace

void Run()
{
    IMessagePtr spMessage;
    spMessage.CreateInstance(__uuidof(Message));
    if(spMessage != NULL)
    {
        /* 처리 */
    }
}

void main()
{
    CoInitialize(NULL);
    Run();
    CoUninitialize();
}

/* C++, ATL COM Library */
#import "ezSMSComponent32.tlb" no_namespace

void Run()
{
    CComPtr<IMessage> spMessage;
    HRESULT hr = spMessage.CoCreateInstance(__uuidof(Message));
    if(SUCCEEDED(hr))
    {
        /* 처리 */
    }
}

' Visual Basic
Dim ezMessage As Object
Set ezMessage = CreateObject("ezSMSComponent.Message")
If Not ezMessage Is Nothing Then
    ' 처리
End If
Set ezMessage = Nothing

' Visual Basic [참조방식]
Public ezMessage As IMessage
Set ezMessage = New Message
' 처리
Set ezMessage = Nothing

{ Delphi }
uses ComObj;

procedure CreateExam();
var ezSMS: Variant;
begin
    try begin
        ezSMS := CreateOleObject('ezSMSComponent.Message');

        { 처리 }

        end
    except on E: EOleException do begin
        { 에러 처리 }
        end
    end;

    ezSMS := Unassigned;
end;

{ Delphi [TypeLibrary Import 방식] }
uses ezSMSComponent_TLB;
var ezSMS: IMessage;

procedure CreateExam();
begin
    try begin
        ezSMS := CoMessage.Create;

        { 처리 }

        end
    except on E: EOleException do begin
        { 에러 처리 }
        end
    end;

    ezSMS := nil;
end;

/* JavaScript */
var ezMessage = new ActiveXObject("ezSMSComponent.Message");

if(ezMessage != null)
{
    // 처리
}
ezMessage = null;

' VBScript and ASP
Dim ezMessage
Set ezMessage = CreateObject("ezSMSComponent.Message")
If Not ezMessage Is Nothing Then
    ' 처리
End If
Set ezMessage = Nothing

// PHP
$ezMessage = new COM("ezSMSComponent.Message");

if(!is_null($ezMessage))
{
    // 처리
}

unset($ezMessage);

// Power Builder
OLEObject ObjMessage, LoginInfo
Integer li_rc

ObjMessage = CREATE OLEObject
li_rc = ObjMessage.ConnectToNewObject("ezSMSComponent.Message")
IF li_rc = 0 THEN
    ObjMessage.SetAccountInfo("id", "pwd")

    // 처리

    ObjMessage.DisconnectObject()
ELSE
    MessageBox("Connecting Fail", "Error: " + String(li_rc))
END IF
DESTROY ObjMessage


인터페이스

 아래는 ezSMSComponent API에서 사용되는 인터페이스 목록입니다. 이러한 인터페이스들은 Message 객체를 생성한 후 각 메서드, 속성을 호출하여 접근할 수 있습니다.

ezSMSComponent 인터페이스들
ICancelResult | 전송 취소 결과를 다루는 인터페이스
ICancelResults | 전송 취소 결과 목록을 다루는 컬렉션 인터페이스
IContents | SMS, LMS, MMS 전송을 위한 기본 컨텐츠 (문자 내용, 제목, 이미지)를 다루는 인터페이스
IDeleteResult | 전송 내역 삭제 결과를 다루는 인터페이스
IDeleteResults | 전송 내역 삭제 결과 목록을 다루는 컬렉션 인터페이스
ILogDetail ILogDetail2 | 상세 전송 내역 요청 결과를 다루는 인터페이스
ILogDetails ILogDetails2 ILogDetails3 | 상세 전송 내역 요청 결과 목록을 다루는 컬렉션 인터페이스
ILoginInfo ILoginInfo3 | 로그인 정보를 다루는 인터페이스
ILogList ILogList2 ILogList3 | 전송 내역 요청 결과를 다루는 인터페이스
ILogLists | 전송 내역 요청 결과 목록을 다루는 컬렉션 인터페이스
IReceiver IReceiver2 | 수신자 정보를 다루는 인터페이스
IReceivers | 수신자 정보의 목록을 다루는 컬렉션 인터페이스
ISendResult ISendResult2 | 전송 결과를 다루는 인터페이스
ISendResults | 전송 결과 목록을 다루는 컬렉션 인터페이스
IMessage | ezSMSComponent의 메인 인터페이스


IMessage 인터페이스

 이 인터페이스는 ezSMSComponent에서 가장 기초가 되는 인터페이스이며 로그인, 문자 전송, 전송 내역 요청 등의 메서드, 속성 등이 준비되어 있습니다.

IMessage 속성과 메서드
CancelReservation 메서드 | 예약 취소
CancelReservationByList 메서드 | ILogList 인터페이스를 통한 예약 취소
CancelReservationByLists 메서드 | ILogLists 인터페이스를 통한 다중 예약 취소
CreateContents 메서드 | 메시지 컨텐츠 객체 생성
CreateLogList 메서드 | 로그 객체 생성
CreateLogListDirect 메서드 | 로그 객체 직접 생성
CreateLogLists 메서드 | 로그 객체 목록 생성
CreateReceiver 메서드 | 수신자 생성
CreateReceiverDirect 메서드 | 수신자 직접 생성
CreateReceivers 메서드 | 수신자 목록 생성
DeleteLog 메서드 | 전송 내역 삭제
DeleteLogByList 메서드 | ILogList 인터페이스를 통한 전송 내역 삭제
DeleteLogByLists 메서드 | ILogLists 인터페이스를 통한 다중 전송 내역 취소
GetErrorMessage 메서드 | 에러코드를 에러 메시지(문자열)로 변환
Login 메서드 (deprecated) | ezSMS 서버에 로그인
SetAccountInfo 메서드 | 사용자 계정 정보 설정
RequestLog 메서드 | 전송 내역 요청
RequestLogBound 메서드 | 특정 범위의 전송 내역 요청
RequestLogDetail 메서드 | 전송 상세 내역 요청
RequestLogDetailByList 메서드 | ILogList 인터페이스를 통한 전송 상세 내역 요청
RequestLogDetailByLists 메서드 (deprecated) | ILogLists 인터페이스를 통한 다중 전송 상세 내역 요청
SendOne 메서드 | 메시지 한개만 전송
Send 메서드 | 메시지 다중 전송
UpdateLoginInfo 메서드 | 계정의 상태 정보를 다시 가져옴
ArrayBase 속성 | 컬렉션(배열)의 시작 인덱스 설정/얻기
LoginInfo 속성 | 계정 상태 정보 얻기
OfficeName 속성 (deprecated) | 부서 이름 설정/얻기
ServiceCode 속성 (deprecated) | 컴포넌트 서비스 코드
VersionMajor 속성 | 컴포넌트 메이저 버전 얻기
VersionMinor 속성 | 컴포넌트 마이너 버전 얻기

인터페이스 정보
IID | 2F5CD1F5-13D5-4BF6-AAC8-A2D563FF0512
Implementation | Message 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 4.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


IMessage::CancelReservation 메서드

[C++]

구문
HRESULT CancelReservation(
    LONG Year,
    LONG Month,
    BSTR Index,
    EZSMS_MESSAGE_TYPE Type,
    ICancelResult** ppResult
);
매개 변수
Year
[in] 해당 년도
Month
[in] 해당 월
Index
[in] 취소할 전송 내역 인덱스
Type
[in] 취소할 메시지 타입
ppResult
[out, retval] 전송 취소 결과를 저장할 ICancelResult 인터페이스의 포인터의 포인터. 반드시 NULL이 아니어야 함
반환 값
반환 값 | 의미
S_OK | 에러 없음
E_POINTER | ppResult 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED | 서버에 접속하지 못했다.
EZSMS_E_LOGINFAIL | 로그인에 실패하였다.
EZSMS_E_SERVERERROR | 서버에서 처리중 오류가 발생했다.
설명
이 메서드는 전송한 메시지를 취소하여 ppResult에 그 내용을 저장합니다. Year와 Month에는 예약한 날짜(전송될 날짜)의 년도와 월을 지정합니다. 예를 들어 2004년 5월 15일에 메시지가 전송되도록 예약했다면 Year는 2004, Month에는 5를 대입하십시오. Index에는 전송 내역의 인덱스 값을 지정해야 합니다. 메시지 전송을 취소하기 위해서는 먼저 RequestLog 메서드를 호출해야 하며, 그 결과인 전송 내역에 명시된 Index 속성 값을 이 매개변수에 대입해야 합니다. 물론 Year, Month는 RequestLog 메서드로 요청했던 년월과 같아야 합니다.

예약 취소는 수신자 정보 작성시 SendMode 속성에 EZSMS_RESERVATION을 지정했던 항목만 가능합니다.
예제
extern IMessage* pMessage;

void Cancel(LONG nYear, LONG nMonth, BSTR bstrIndex, EZSMS_MESSAGE_TYPE Type)
{
    ICancelResult* pResult;

    HRESULT hr = pMessage->CancelReservation(nYear, nMonth, bstrIndex, Type, &pResult);
    if(SUCCEEDED(hr))
    {
        LONG lTotal, lSucceed, lFailure;
        pResult->get_CountTotal(&lTotal);
        pResult->get_CountSucceed(&lSucceed);
        pResult->get_CountFailure(&lFailure);

        if(lTotal == lSucceed)
        {
            TRACE("취소 성공\n");
        }
        else if(lTotal == lFailure)
        {
            TRACE("취소 실패\n");
        }
        else
        {
            TRACE("일부만 취소됨: %d개 중 %d개 성공\n", lTotal, lSucceed);
        }

        pResult->Release();
    }
}
[Visual Basic]

구문
object.CancelReservation( _
    Year As Long, _
    Month As Long, _
    Index As String _
    Type As EZSMS_MESSAGE_TYPE _
) As ICancelResult
매개 변수
Year
해당 년도
Month
해당 월
Index
취소할 전송 내역 인덱스
Type
취소할 메시지 타입
object
Message 객체
반환 값
전송 내역을 취소한 결과인 ICancelResult 인터페이스를 반환합니다.
에러 코드
에러 코드 | 의미
&H8007000E | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED (&H8004A001) | 서버에 접속하지 못했다.
EZSMS_E_SERVERERROR (&8004A002) | 서버에서 처리중 오류가 발생했다.
EZSMS_E_LOGINFAIL (&8004A003) | 로그인에 실패하였다.
예제
Public objMessage As IMessage

Private Sub 취소(Year As Long, Month As Long, Index As String)
    Dim objResult As ICancelResult

    On Error Resume Next
    Set objResult = objMessage.CancelReservation(Year, Month, Index, EZSMS_MESSAGE_TYPE_SMS)
    If Err.Number = 0 Then
        If objResult.CountTotal = objResult.CountSucceed Then
            Debug.Print "예약 취소 성공"
        ElseIf objResult.CountTotal = objResult.CountFailure Then
            Debug.Print "예약 취소 실패"
        Else
            Debug.Print "예약 취소: " & Str(objResult.CountTotal) & "개 중 " & Str(objResult.CountSucceed) & "개 성공"
        End If
    End If
End Sub
참고 항목
IMessage 인터페이스 , ILogList 인터페이스 , ICancelResult 인터페이스 , IMessage::RequestLog 메서드 , EZSMS_SENDMODE 열거 , EZSMS_MESSAGE_TYPE 열거


IMessage::CancelReservationByList 메서드

[C++]

구문
HRESULT CancelReservationByList(
    ILogList* pLogList,
    ICancelResult** ppCancelResult
);
매개 변수
pLogList
[in] 취소할 전송 내역
ppCancelResult
[out, retval] 전송 취소 결과를 저장할 ICancelResult 인터페이스의 포인터의 포인터. 반드시 NULL이 아니어야 함
반환 값
반환 값 | 의미
S_OK | 에러 없음
E_INVALIDARG | 매개 변수 값이 잘 못 됐다.
E_POINTER | ppCancelResult 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED | 서버에 접속하지 못했다.
EZSMS_E_LOGINFAIL | 로그인에 실패하였다.
EZSMS_E_SERVERERROR | 서버에서 처리중 오류가 발생했다.
설명
이 메서드는 전송한 메시지를 취소하여 ppCancelResult에 취소 여부를 저장합니다. pLogList에는 SendOne 메서드로 메시지를 전송한 결과인 ISendResult(s)::Date 속성, ISendResult(s)::Index 속성 내용을 토대로 작성된 로그 객체를 전달합니다. 이 메서드는 CancelReservation 메서드와 동일한 기능을 하며, 보다 쉽게 예약을 취소할 수 있도록 추가된 항목입니다.

예약 취소는 수신자 정보 작성시 SendMode 속성에 EZSMS_RESERVATION을 지정했던 항목만 가능합니다.
예제
extern IMessage* pMessage;

void Cancel(ISendResult* pSendResult)
{
    ICancelResult* pResult;
    ILogList* pLogList;
    pSendResult->MakeLogList(&pLogList);

    HRESULT hr = pMessage->CancelReservationByList(pLogList, &pResult);
    if(SUCCEEDED(hr))
    {
        EZSMS_RESULT Result;
        LONG lTotal, lSucceed, lFailure;
        pResult->get_CountTotal(&lTotal);
        pResult->get_CountSucceed(&lSucceed);
        pResult->get_CountFailure(&lFailure);
        pResult->get_Result(&Result);

        if(Result == EZSMS_FAILED && lTotal == 0)
        {
            TRACE("존재하지 않는 내역\n");
        }
        else if(lTotal == lSucceed)
        {
            TRACE("취소 성공\n");
        }
        else if(lTotal == lFailure)
        {
            TRACE("취소 실패\n");
        }
        else
        {
            TRACE("일부만 취소됨: %d개 중 %d개 성공\n", lTotal, lSucceed);
        }

        pResult->Release();
    }
    pLogList->Release();
}
[Visual Basic]

구문
object.CancelReservationByList( _
    LogList As ILogList _
) As ICancelResult
매개 변수
LogList
취소할 전송 내역
object
Message 객체
반환 값
전송 내역을 취소한 결과인 ICancelResult 인터페이스를 반환합니다.
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수 값이 잘 못 됐다.
&H8007000E | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED (&H8004A001) | 서버에 접속하지 못했다.
EZSMS_E_SERVERERROR (&8004A002) | 서버에서 처리중 오류가 발생했다.
EZSMS_E_LOGINFAIL (&8004A003) | 로그인에 실패하였다.
예제
Public objMessage As IMessage

Private Sub 취소(SendResult As ISendResult)
    Dim objResult As ICancelResult
    Dim objLogList As ILogList

    On Error Resume Next
    Set objLogList = SendResult.MakeLogList()
    Set objResult = objMessage.CancelReservationByList(objLogList)
    If Err.Number = 0 Then
        If objResult.Result = EZSMS_FAILED And objResult.CountTotal = 0 Then
            Debug.Print "존재하지 않는 전송 내역"
        ElseIf objResult.CountTotal = objResult.CountSucceed Then
            Debug.Print "예약 취소 성공"
        ElseIf objResult.CountTotal = objResult.CountFailure Then
            Debug.Print "예약 취소 실패"
        Else
            Debug.Print "예약 취소: " & Str(objResult.CountTotal) & "개 중 " & Str(objResult.CountSucceed) & "개 성공"
        End If
    End If
End Sub
참고 항목
IMessage 인터페이스 , ILogList 인터페이스 , ICancelResult 인터페이스 , IMessage::CancelReservation 메서드 , EZSMS_SENDMODE 열거


IMessage::CancelReservationByLists 메서드

[C++]

구문
HRESULT CancelReservationByLists(
    ILogLists* pLogLists,
    ICancelResults** ppCancelResults
);
매개 변수
pLogLists
[in] 취소할 전송 내역 목록
ppCancelResults
[out, retval] 전송 취소 결과의 목록을 저장할 ICancelResults 인터페이스의 포인터의 포인터. 반드시 NULL이 아니어야 함
반환 값
반환 값 | 의미
S_OK | 에러 없음
E_INVALIDARG | 매개 변수 값이 잘 못 됐다.
E_POINTER | ppCancelResults 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED | 서버에 접속하지 못했다.
EZSMS_E_LOGINFAIL | 로그인에 실패하였다.
EZSMS_E_SERVERERROR | 서버에서 처리중 오류가 발생했다.
EZSMS_E_LOGLISTNOTFOUND | 컬렉션 내 로그 정보가 존재하지 않다.
설명
이 메서드는 전송한 메시지들을 취소하여 ppCancelResults에 취소 여부를 저장합니다. pLogLists에는 Send 메서드로 메시지를 전송한 결과인 ISendResult(s)::Date 속성, ISendResult(s)::Index 속성 내용을 토대로 작성된 로그 객체들의 목록을 전달합니다. 이 메서드는 CancelReservationByList 메서드와 비슷한 기능을 하지만, 여러개의 예약항목을 한꺼번에 취소할 수 있도록 마련된 메서드입니다. (여러개의 예약항목을 CancelReservationByList 메서드로 개개별 취소하는 것보다 좀더 빠른 동작을 수행합니다)

예약 취소는 수신자 정보 작성시 SendMode 속성에 EZSMS_RESERVATION을 지정했던 항목만 가능합니다.
예제
extern IMessage* pMessage;

void Cancels(ILogLists* pLogLists)
{
    ICancelResults* pResults;

    HRESULT hr = pMessage->CancelReservationByLists(pLogLists, &pResults);
    if(SUCCEEDED(hr))
    {
        LONG lCnt;
        pResults->get_Count(&lCnt);
        for(int i=0; i<lCnt; i++)
        {
            IDispatch* pDisp = NULL;
            if(FAILED(pResults->get_Item(i, &pDisp))) continue;

            ICancelResult* pCancelResult = NULL;
            if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ICancelResult), (void**)&pCancelResult)))
            {
                LONG lTotal, lSucceed, lFailure;
                pCancelResult->get_CountTotal(&lTotal);
                pCancelResult->get_CountSucceed(&lSucceed);
                pCancelResult->get_CountFailure(&lFailure);

                if(lTotal == lSucceed)
                {
                    TRACE("취소 성공\n");
                }
                else if(lTotal == lFailure)
                {
                    TRACE("취소 실패\n");
                }
                else
                {
                    TRACE("일부만 취소됨: %d개 중 %d개 성공\n", lTotal, lSucceed);
                }
                pCancelResult->Release();
            }
            pDisp->Release();
        }

        pResults->Release();
    }
}
[Visual Basic]

구문
object.CancelReservationByLists( _
    LogLists As ILogLists _
) As ICancelResults
매개 변수
LogLists
취소할 전송 내역 목록
object
Message 객체
반환 값
전송 내역을 취소한 결과인 ICancelResults 인터페이스를 반환합니다.
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수 값이 잘 못 됐다.
&H8007000E | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED (&H8004A001) | 서버에 접속하지 못했다.
EZSMS_E_SERVERERROR (&8004A002) | 서버에서 처리중 오류가 발생했다.
EZSMS_E_LOGINFAIL (&8004A003) | 로그인에 실패하였다.
EZSMS_E_LOGLISTNOTFOUND (&H8004A009) | 컬렉션 내 로그 정보가 존재하지 않다.
예제
Public objMessage As IMessage

Private Sub 취소(LogLists As ILogLists)
    Dim objResults As ICancelResults
    Dim objResult As ICancelResult

    On Error Resume Next
    Set objResults = objMessage.CancelReservationByLists(LogLists)
    If Err.Number = 0 Then
        For Each objResult In objResults
            If objResult.CountTotal = objResult.CountSucceed Then
                Debug.Print "예약 취소 성공"
            ElseIf objResult.CountTotal = objResult.CountFailure Then
                Debug.Print "예약 취소 실패"
            Else
                Debug.Print "예약 취소: " & Str(objResult.CountTotal) & "개 중 " & Str(objResult.CountSucceed) & "개 성공"
            End If
        Next
    End If
End Sub
참고 항목
IMessage 인터페이스 , ILogList 인터페이스 , ICancelResult 인터페이스 , ICancelResults 인터페이스 , IMessage::CancelReservationByList 메서드 , EZSMS_SENDMODE 열거


IMessage::CreateContents 메서드

[C++]

구문
HRESULT CreateContents(IContents** ppContents);
매개 변수
ppContents
[out, retval] 생성된 컨텐츠 객체를 받을 IContents 인터페이스의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | ppContents 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
설명
Send 또는 SendOne 메서드로 메시지를 전송할 때 필요한 컨텐츠입니다. 문자 타입(SMS, LMS, MMS)을 지정하고 기본 메시지 내용, 메시지 제목, 이미지 첨부 등을 할 수 있습니다.
예제
extern IMessage* pMessage;

BOOL SendOneTest()
{
    BOOL bRes = FALSE;
    IContents* pContents = NULL;
    IReceiver* pReceiver = NULL;
    HRESULT hr = pMessage->CreateContents(&pContents);
    if(FAILED(hr)) return FALSE;

    pContents->put_Type(EZSMS_MESSAGE_TYPE_LMS);
    pContents->put_Subject(L"제목");
    pContents->put_Message(L"문자 내용");

    hr = pMessage->CreateReceiver(&pReceiver);
    if(FAILED(hr)) return FALSE;
    pReceiver->put_Phone(L"01000000000");

    ISendResult* pSendResult;
    hr = pMessage->SendOne(L"01011112222", pReceiver, pContents, &pSendResult);
    if(SUCCEEDED(hr))
    {
        EZSMS_RESULT Result;
        pSendResult->get_Result(&Result);
        if(Result == EZSMS_SUCCEEDED) bRes = TRUE;
        pSendResult->Release();
    }
    pContents->Release();
    return bRes;
}
[Visual Basic]

구문
object.CreateContents() As IContents
매개 변수
object
Message 객체
반환 값
생성된 수신자 객체의 인터페이스인 IContents를 반환합니다.
에러 코드
에러 코드 | 의미
&H8007000E | 메모리가 충분하지 않다.
예제
Public objMessage As IMessage

Private Function SendOneTest() As Boolean
    Dim objContents As IContents
    Dim objReceiver As IReceiver
    Dim objResult As ISendResult

    SendOneTest = False

    On Error Resume Next
    Set objContents = objMessage.CreateContents
    If Err.Number <> 0 Then Exit Function

    Set objReceiver = objMessage.CreateReceiver
    If Err.Number <> 0 Then Exit Function

    objContents.Type = EZSMS_MESSAGE_TYPE_LMS
    objContents.Subject = "문자 제목"
    objContents.Message = "문자 내용"

    objReceiver.Phone = "01011112222"
    objReceiver.SendMode = EZSMS_RESERVATION
    objReceiver.SendTime = "2004-5-15 14:00:00"

    Set objResult = objMessage.SendOne("01000001111", objReceiver, objContents)
    If Err.Number = 0 And objResult.Result = EZSMS_SUCCEEDED Then SendOneTest = True
End Function
참고 항목
IMessage 인터페이스 , IReceiver 인터페이스 , IContents 인터페이스 , Send 메서드 , SendOne 메서드


IMessage::CreateLogList 메서드

[C++]

구문
HRESULT CreateLogList(ILogList** ppLogList);
매개 변수
ppLogList
[out, retval] 생성된 로그 객체를 받을 ILogList 인터페이스의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | ppLogList 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
설명
RequestLogDetailByList, CancelReservationByList, DeleteLogByList 메서드처럼 ByList로 끝나는 메서드의 인자로 사용될 로그 객체를 만듭니다.
예제
extern IMessage* pMessage;

BOOL DeleteTest()
{
    BOOL bRes = FALSE;
    ILogList* pLogList;
    HRESULT hr = pMessage->CreateLogList(&pLogList);
    if(FAILED(hr)) return FALSE;

    pLogList->put_Date(L"200406");
    pLogList->put_Index(L"123456");
    pLogList->put_Type(EZSMS_MESSAGE_TYPE_SMS);

    IDeleteResult* pDeleteResult;
    hr = pMessage->DeleteLogByList(pLogList, &pDeleteResult);
    if(SUCCEEDED(hr))
    {
        pDeleteResult->get_Result(&Result);
        if(Result == EZSMS_SUCCEEDED) bRes = TRUE;
        pDeleteResult->Release();
    }
    pLogList->Release();
    return bRes;
}
[Visual Basic]

구문
object.CreateLogList() As ILogList
매개 변수
object
Message 객체
반환 값
생성된 수신자 객체의 인터페이스인 ILogList를 반환합니다.
에러 코드
에러 코드 | 의미
&H8007000E | 메모리가 충분하지 않다.
예제
Public objMessage As IMessage

Private Function DeleteTest() As Boolean
    Dim objLogList As ILogList
    Dim objResult As ISendResult

    DeleteTest = False

    On Error Resume Next
    Set objLogList = objMessage.CreateLogList()
    If Err.Number <> 0 Then Exit Function

    objLogList.Date = "200406"
    objLogList.Index = "123456"
    objLogList.Type = EZSMS_MESSAGE_TYPE_SMS

    Set objResult = objMessage.DeleteLogByList(objLogList)
    If Err.Number = 0 And objResult.Result = EZSMS_SUCCEEDED Then DeleteTest = True
End Function
참고 항목
IMessage 인터페이스 , ILogList 인터페이스 , DeleteLogByList 메서드 , CancelReservationByList 메서드 , RequestLogDetailByList 메서드


IMessage::CreateLogListDirect 메서드

[C++]

구문
HRESULT CreateLogListDirect(
    LONG Year,
    LONG Month,
    BSTR Index,
    EZSMS_MESSAGE_TYPE Type,
    ILogList** ppLogList
);
매개 변수
Year
[in] 전송 내역의 접수 날짜(년도)
Month
[in] 전송 내역의 접수 날짜(월)
Index
[in] 전송 내역 인덱스 번호
Type
[in] 전송 내역의 메시지 타입
ppLogList
[out, retval] 생성된 로그 객체를 받을 ILogList 인터페이스의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_INVALIDARG | 매개 변수 값이 잘 못 됐다.
E_POINTER | ppLogList 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
설명
RequestLogDetailByList, CancelReservationByList, DeleteLogByList 메서드처럼 ByList로 끝나는 메서드의 인자로 사용될 로그 객체를 만듭니다.
예제
extern IMessage* pMessage;

BOOL DeleteTest()
{
    BOOL bRes = FALSE;
    ILogList* pLogList;
    HRESULT hr = pMessage->CreateLogListDirect(2004, 6, L"123456", EZSMS_MESSAGE_TYPE_SMS, &pLogList);
    if(FAILED(hr)) return FALSE;

    IDeleteResult* pDeleteResult;
    hr = pMessage->DeleteLogByList(pLogList, &pDeleteResult);
    if(SUCCEEDED(hr))
    {
        pDeleteResult->get_Result(&Result);
        if(Result == EZSMS_SUCCEEDED) bRes = TRUE;
        pDeleteResult->Release();
    }
    pLogList->Release();
    return bRes;
}
[Visual Basic]

구문
object.CreateLogListDirect( _
    Year As Long, _
    Month As Long, _
    Index As String _
    Type As EZSMS_MESSAGE_TYPE _
) As ILogList
매개 변수
Year
전송 내역의 접수 날짜(년도)
Month
전송 내역의 접수 날짜(월)
Index
전송 내역의 인덱스 번호
Type
전송 내역의 메시지 타입
object
Message 객체
반환 값
생성된 로그 객체의 인터페이스인 ILogList를 반환합니다.
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수 값이 잘 못 됐다.
&H8007000E | 메모리가 충분하지 않다.
예제
Public objMessage As IMessage

Private Function SendTest() As Boolean
    Dim objLogList As ILogList
    Dim objResult As ISendResult

    DeleteTest = False

    On Error Resume Next
    Set objLogList = objMessage.CreateLogListDirect(2004, 6, "123456", EZSMS_MESSAGE_TYPE_SMS)
    If Err.Number <> 0 Then Exit Function

    Set objResult = objMessage.DeleteLogByList(objLogList)
    If Err.Number = 0 And objResult.Result = EZSMS_SUCCEEDED Then DeleteTest = True
End Function
참고 항목
IMessage 인터페이스 , ILogList 인터페이스 , DeleteLogByList 메서드 , CancelReservationByList 메서드 , RequestLogDetailByList 메서드 , EZSMS_MESSAGE_TYPE 열거


IMessage::CreateLogLists 메서드

[C++]

구문
HRESULT CreateLogLists(ILogLists** ppLogLists);
매개 변수
ppLogLists
[out, retval] 생성된 로그 객체 목록을 받을 ILogLists 인터페이스의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | ppLogLists 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
설명
CancelReservationByLists, DeleteLogByLists 메서드처럼 ByLists로 끝나는 메서드의 인자로 사용될 로그 목록 객체를 만듭니다.
예제
extern IMessage* pMessage;

BOOL MultiRequestLogDetail()
{
    BOOL bRes = FALSE;
    ILogLists* pLogLists;
    HRESULT hr = pMessage->CreateLogLists(&pLogLists);
    if(FAILED(hr)) return FALSE;

    ILogList *pLogList1;
    pMessage->CreateLogList(&pLogList1);
    pLogList1->put_Date(L"200406");
    pLogList1->put_Index(L"123456");
    pLogList1->put_Type(EZSMS_MESSAGE_TYPE_SMS);

    ILogList *pLogList2;
    pMessage->CreateLogList(&pLogList2);
    pLogList2->put_Date(L"200406");
    pLogList2->put_Index(L"123457");
    pLogList2->put_Type(EZSMS_MESSAGE_TYPE_SMS);

    pLogLists->Add(pLogList1);
    pLogLists->Add(pLogList2);

    ILogDetailsCollection* pLogDetailsCollection;
    hr = pMessage->RequestLogDetailByLists(pLogLists, &pLogDetailsCollection);
    if(SUCCEEDED(hr))
    {
        bRes = TRUE;
        // ...
        pLogDetailsCollection->Release();
    }

    pLogLists->Release();
    return bRes;
}
[Visual Basic]

구문
object.CreateLogLists() As ILogLists
매개 변수
object
Message 객체
반환 값
생성된 로그 객체 목록의 인터페이스인 ILogLists를 반환합니다.
에러 코드
에러 코드 | 의미
&H8007000E | 메모리가 충분하지 않다.
예제
Public objMessage As IMessage

Private Function MultiRequestLogDetail() As Boolean
    Dim objLogList1 As ILogList
    Dim objLogList2 As ILogList
    Dim objLogLists As ILogLists
    Dim objLogDetailsCollection As ILogDetailsCollection

    MultiRequestLogDetail = False

    On Error Resume Next
    Set objLogLists = objMessage.CreateLogLists()
    If Err.Number <> 0 Then Exit Function

    Set objLogList1 = objMessage.CreateLogList()
    objLogList1.Date = "200406"
    objLogList1.Index = "123456"
    objLogList1.Type = EZSMS_MESSAGE_TYPE_SMS

    Set objLogList2 = objMessage.CreateLogList()
    objLogList2.Date = "200406"
    objLogList2.Index = "123457"
    objLogList2.Type = EZSMS_MESSAGE_TYPE_SMS

    objLogLists.Add objLogList1
    objLogLists.Add objLogList2

    Set objLogDetailsCollection = objMessage.RequestLogDetailByLists(objLogLists)
    If Err.Number = 0 Then MultiRequestLogDetail = True

    ' ...
End Function
참고 항목
IMessage 인터페이스 , ILogList 인터페이스 , DeleteLogByLists 메서드 , CancelReservationByLists 메서드


IMessage::CreateReceiver 메서드

[C++]

구문
HRESULT CreateReceiver(IReceiver** ppReceiver);
매개 변수
ppReceiver
[out, retval] 생성된 수신자 객체를 받을 IReceiver 인터페이스의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | ppReceiver 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
설명
Send 또는 SendOne 메서드로 메시지를 전송할 때 어떤 휴대폰 번호로 어떤 메시지를 어떤 방식으로 전송할 것인지에 대한 정보를 작성해서 인자로 넘겨줘야 합니다. 이 메서드는 이러한 수신자 정보를 생성하는 역할을 합니다.
예제
extern IMessage* pMessage;

BOOL SendOneTest()
{
    BOOL bRes = FALSE;
    IReceiver* pReceiver;
    HRESULT hr = pMessage->CreateReceiver(&pReceiver);
    if(FAILED(hr)) return FALSE;

    pReceiver->put_Phone(L"01000000000");
    pReceiver->put_Message(L"테스트");

    ISendResult* pSendResult;
    hr = pMessage->SendOne(L"01011112222", pReceiver, NULL, &pSendResult);
    if(SUCCEEDED(hr))
    {
        EZSMS_RESULT Result;
        pSendResult->get_Result(&Result);
        if(Result == EZSMS_SUCCEEDED) bRes = TRUE;
        pSendResult->Release();
    }
    pReceiver->Release();
    return bRes;
}
[Visual Basic]

구문
object.CreateReceiver() As IReceiver
매개 변수
object
Message 객체
반환 값
생성된 수신자 객체의 인터페이스인 IReceiver를 반환합니다.
에러 코드
에러 코드 | 의미
&H8007000E | 메모리가 충분하지 않다.
예제
Public objMessage As IMessage

Private Function SendOneTest() As Boolean
    Dim objReceiver As IReceiver
    Dim objResult As ISendResult

    SendOneTest = False

    On Error Resume Next
    Set objReceiver = objMessage.CreateReceiver
    If Err.Number <> 0 Then Exit Function

    objReceiver.Message = "테스트 문자"
    objReceiver.Phone = "01011112222"
    objReceiver.SendMode = EZSMS_RESERVATION
    objReceiver.SendTime = "2004-5-15 14:00:00"

    Set objResult = objMessage.SendOne("01000001111", objReceiver, Nothing)
    If Err.Number = 0 And objResult.Result = EZSMS_SUCCEEDED Then SendOneTest = True
End Function
참고 항목
IMessage 인터페이스 , IReceiver 인터페이스 , Send 메서드 , SendOne 메서드


IMessage::CreateReceiverDirect 메서드

[C++]

구문
HRESULT CreateReceiverDirect(
    BSTR Phone,
    BSTR Message,
    EZSMS_SENDMODE SendMode,
    DATE SendTime,
    IReceiver** ppReceiver
);
매개 변수
Phone
[in] 수신자 휴대폰 번호
※ 주의: 수신자 휴대폰 번호는 반드시 숫자로만 되어 있어야 합니다. 예를 들어 010-1234-1234 는 01012341234로 바꿔주어야 합니다.
Message
[in] 전송할 메시지
SendMode
[in] 전송 방식 선택 (즉시 전송, 예약 전송)
SendTime
[in] 예약 전송 시간
ppReceiver
[out, retval] 생성된 수신자 객체를 받을 IReceiver 인터페이스의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | ppReceiver 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
설명
Send 또는 SendOne 메서드로 메시지를 전송할 때 어떤 휴대폰 번호로 어떤 메시지를 어떤 방식으로 전송할 것인지에 대한 정보를 작성해서 인자로 넘겨줘야 합니다. 이 메서드는 이러한 수신자 정보를 생성하는 역할을 하며, CreateReceiver 메서드보다 간단하게 수신자 객체를 생성할 수 있습니다.
예제
extern IMessage* pMessage;

BOOL SendTest()
{
    BOOL bRes = FALSE;
    IReceiver* pReceiver;
    HRESULT hr = pMessage->CreateReceiverDirect(L"01011112222", L"메시지", EZSMS_DIRECT, 0, &pReceiver);
    if(FAILED(hr)) return FALSE;

    hr = pMessage->SendOne(L"01000001111", pReceiver, NULL, NULL);
    if(SUCCEEDED(hr)) bRes = TRUE;

    pReceiver->Release();
    return bRes;
}
[Visual Basic]

구문
object.CreateReceiverDirect( _
    Phone As String, _
    Message As String, _
    SendMode As EZSMS_SENDMODE, _
    SendTime As Date _
) As IReceiver
매개 변수
Phone
수신자 휴대폰 번호
※ 주의: 수신자 휴대폰 번호는 반드시 숫자로만 되어 있어야 합니다. 예를 들어 010-1234-1234 는 01012341234로 바꿔주어야 합니다.
Message
전송할 메시지
SendMode
전송 방식 선택 (즉시 전송, 예약 전송)
SendTime
예약 전송 시간
object
Message 객체
반환 값
생성된 수신자 객체의 인터페이스인 IReceiver를 반환합니다.
에러 코드
에러 코드 | 의미
&H8007000E | 메모리가 충분하지 않다.
예제
Public objMessage As IMessage

Private Function SendTest() As Boolean
    Dim objReceiver As IReceiver
    Dim objSendResult As ISendResult

    SendTest = False

    On Error Resume Next
    Set objReceiver = objMessage.CreateReceiverDirect("01011112222", "테스트 문자", EZSMS_DIRECT, Now)
    If Err.Number <> 0 Then Exit Function

    Set objSendResult = objMessage.SendOne("01000001111", objReceiver, Nothing)
    If Err.Number = 0 Then SendTest = True
End Function
참고 항목
IMessage 인터페이스 , IReceiver 인터페이스 , Send 메서드 , SendOne 메서드 , EZSMS_SENDMODE 열거


IMessage::CreateReceivers 메서드

[C++]

구문
HRESULT CreateReceivers(IReceivers** ppReceivers);
매개 변수
ppReceivers
[out, retval] 생성된 수신자 목록 객체를 받을 IReceivers 인터페이스의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | ppReceivers 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
설명
Send 메서드로 여러 사람에게 메시지를 다중 전송해야 할 때 어떤 휴대폰 번호로 어떤 메시지를 어떤 방식으로 전송할 것인지에 대한 정보의 목록을 작성해서 인자로 넘겨줘야 합니다. 이 메서드는 이러한 수신자 정보 목록을 생성하는 역할을 합니다.
예제
extern IMessage* pMessage;

BOOL MultiSendTest()
{
    BOOL bRes = FALSE;
    IReceivers* pReceivers;
    HRESULT hr = pMessage->CreateReceivers(&pReceivers);
    if(FAILED(hr)) return FALSE;

    pReceivers->AddDirect(L"01011112222", L"메시지 1", EZSMS_DIRECT, 0);
    pReceivers->AddDirect(L"01022223333", L"메시지 2", EZSMS_DIRECT, 0);
    pReceivers->AddDirect(L"01033334444", L"메시지 3", EZSMS_DIRECT, 0);

    hr = pMessage->SendSMS(L"01000001111", pReceivers, NULL, NULL);
    if(SUCCEEDED(hr)) bRes = TRUE;

    pReceivers->Release();
    return bRes;
}
[Visual Basic]

구문
object.CreateReceivers() As IReceivers
매개 변수
object
Message 객체
반환 값
생성된 수신자 객체 목록의 인터페이스인 IReceivers를 반환합니다.
에러 코드
에러 코드 | 의미
&H8007000E | 메모리가 충분하지 않다.
예제
Public objMessage As IMessage

Private Function MultiSendTest() As Boolean
    Dim objReceivers As IReceivers
    Dim objSendResults As ISendResults

    MultiSendTest = False

    On Error Resume Next
    Set objReceivers = objMessage.CreateReceivers
    If Err.Number <> 0 Then Exit Function

    objReceivers.AddDirect "01011112222", "메시지 1", EZSMS_DIRECT, Now
    objReceivers.AddDirect "01022223333", "메시지 1", EZSMS_DIRECT, Now
    objReceivers.AddDirect "01033334444", "메시지 1", EZSMS_DIRECT, Now

    Set objSendResults = objMessage.SendSMS("01000001111", objReceivers, Nothing)
    If Err.Number = 0 Then MultiSendTest = True
End Function
참고 항목
IMessage 인터페이스 , IReceiver 인터페이스 , Send 메서드


IMessage::DeleteLog 메서드

[C++]

구문
HRESULT DeleteLog(
    LONG Year,
    LONG Month,
    BSTR Index,
    EZSMS_MESSAGE_TYPE Type,
    IDeleteResult** ppResult
);
매개 변수
Year
[in] 해당 년도
Month
[in] 해당 월
Index
[in] 삭제할 전송 내역 인덱스
Type
[in] 삭제할 메시지 타입
ppResult
[out, retval] 로그 삭제 결과를 저장할 IDeleteResult 인터페이스의 포인터의 포인터. 반드시 NULL이 아니어야 함
반환 값
반환 값 | 의미
S_OK | 에러 없음
E_POINTER | ppResult 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED | 서버에 접속하지 못했다.
EZSMS_E_LOGINFAIL | 로그인에 실패하였다.
EZSMS_E_SERVERERROR | 서버에서 처리중 오류가 발생했다.
설명
이 메서드는 전송 내역을 삭제하여 ppResult에 그 내용을 저장합니다. Year와 Month에는 전송내역의 접수 년도와 월을 지정합니다. Index에는 전송 내역의 인덱스 값을 지정 합니다.

※ 주의: 예약된 항목을 삭제할 경우 예약을 자동으로 취소해 주지 않습니다. 즉, 전송내역만 삭제하게 되며 메시지는 예약된 시간에 전송되게 되므로, 예약을 취소할 목적이라면 반드시 CancelReservation 메서드군으로 예약을 취소해야 합니다.
예제
extern IMessage* pMessage;

void Delete(LONG nYear, LONG nMonth, BSTR bstrIndex, Type)
{
    IDeleteResult* pResult;

    HRESULT hr = pMessage->DeleteLog(nYear, nMonth, bstrIndex, Type, &pResult);
    if(SUCCEEDED(hr))
    {
        EZSMS_RESULT Result;
        pResult->get_Result(&Result);
        TRACE("%s\n", Result == EZSMS_SUCCEEDED ? "삭제 성공" : "삭제 실패");
        pResult->Release();
    }
}
[Visual Basic]

구문
object.DeleteLog( _
    Year As Long, _
    Month As Long, _
    Index As String _
    Type As EZSMS_MESSAGE_TYPE _
) As IDeleteResult
매개 변수
Year
해당 년도
Month
해당 월
Index
삭제할 전송 내역 인덱스
Type
삭제할 메시지 타입
object
Message 객체
반환 값
전송 내역을 삭제한 결과인 IDeleteResult 인터페이스를 반환합니다.
에러 코드
에러 코드 | 의미
&H8007000E | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED (&H8004A001) | 서버에 접속하지 못했다.
EZSMS_E_SERVERERROR (&8004A002) | 서버에서 처리중 오류가 발생했다.
EZSMS_E_LOGINFAIL (&8004A003) | 로그인에 실패하였다.
예제
Public objMessage As IMessage

Private Sub 삭제(Year As Long, Month As Long, Index As String)
    Dim objResult As IDeleteResult

    On Error Resume Next
    Set objResult = objMessage.DeleteLog(Year, Month, Index, EZSMS_MESSAGE_TYPE_SMS)
    If Err.Number = 0 Then
        If objResult.Result = EZSMS_SUCCEEDED Then
            Debug.Print "로그 삭제 성공"
        Else
            Debug.Print "로그 삭제 실패"
        End If
    End If
End Sub
참고 항목
IMessage 인터페이스 , ILogList 인터페이스 , IDeleteResult 인터페이스 , IMessage::RequestLog 메서드 , EZSMS_MESSAGE_TYPE 열거


IMessage::DeleteLogByList 메서드

[C++]

구문
HRESULT DeleteLogByList(
    ILogList* pLogList,
    IDeleteResult** ppDeleteResult
);
매개 변수
pLogList
[in] 삭제할 전송 내역
ppDeleteResult
[out, retval] 전송내역 삭제 결과를 저장할 ICancelResult 인터페이스의 포인터의 포인터. 반드시 NULL이 아니어야 함
반환 값
반환 값 | 의미
S_OK | 에러 없음
E_INVALIDARG | 매개 변수 값이 잘 못 됐다.
E_POINTER | ppDeleteResult 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED | 서버에 접속하지 못했다.
EZSMS_E_LOGINFAIL | 로그인에 실패하였다.
EZSMS_E_SERVERERROR | 서버에서 처리중 오류가 발생했다.
설명
이 메서드는 전송 내역을 삭제하여 ppDeleteResult에 삭제 결과를 저장합니다. pLogList에는 SendOne 메서드로 메시지를 전송한 결과인 ISendResult(s)::Date 속성, ISendResult(s)::Index 속성 내용을 토대로 작성된 로그 객체를 전달합니다. 이 메서드는 DeleteLog 메서드와 동일한 기능을 하며, 보다 쉽게 전송내역을 삭제할 수 있도록 추가된 항목입니다.

※ 주의: 예약된 항목을 삭제할 경우 예약을 자동으로 취소해 주지 않습니다. 즉, 전송내역만 삭제하게 되며 메시지는 예약된 시간에 전송되게 되므로, 예약을 취소할 목적이라면 반드시 CancelReservation 메서드군으로 예약을 취소해야 합니다.
예제
extern IMessage* pMessage;

void Delete(ILogList* pLogList)
{
    IDeleteResult* pResult;

    HRESULT hr = pMessage->DeleteLogByList(pLogList, &pResult);
    if(SUCCEEDED(hr))
    {
        EZSMS_RESULT Result;
        pResult->get_Result(&Result);

        TRACE("%s\n", Result == EZSMS_SUCCEEDED ? "삭제 성공" : "삭제 실패");
        pResult->Release();
    }
    pLogList->Release();
}
[Visual Basic]

구문
object.DeleteLogByList( _
    LogList As ILogList _
) As IDeleteResult
매개 변수
LogList
삭제할 전송 내역
object
Message 객체
반환 값
전송 내역을 삭제한 결과인 IDeleteResult 인터페이스를 반환합니다.
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수 값이 잘 못 됐다.
&H8007000E | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED (&H8004A001) | 서버에 접속하지 못했다.
EZSMS_E_SERVERERROR (&8004A002) | 서버에서 처리중 오류가 발생했다.
EZSMS_E_LOGINFAIL (&8004A003) | 로그인에 실패하였다.
예제
Public objMessage As IMessage

Private Sub 삭제(objLogList As ILogList)
    Dim objResult As ICancelResult

    On Error Resume Next
    Set objResult = objMessage.DeleteLogByList(objLogList)
    If Err.Number = 0 Then
        If objResult.Result = EZSMS_SUCCEEDED Then
            Debug.Print "로그 삭제 성공"
        Else
            Debug.Print "로그 삭제 실패"
        End If
    End If
End Sub
참고 항목
IMessage 인터페이스 , ILogList 인터페이스 , IDeleteResult 인터페이스 , IMessage::DeleteLog 메서드


IMessage::DeleteLogByLists 메서드

[C++]

구문
HRESULT DeleteLogByLists(
    ILogLists* pLogLists,
    IDeleteResults** ppDeleteResults
);
매개 변수
pLogLists
[in] 삭제할 전송 내역 목록
ppDeleteResults
[out, retval] 전송 내역 삭제 결과 목록을 저장할 IDeleteResults 인터페이스의 포인터의 포인터. 반드시 NULL이 아니어야 함
반환 값
반환 값 | 의미
S_OK | 에러 없음
E_INVALIDARG | 매개 변수 값이 잘 못 됐다.
E_POINTER | ppDeleteResults 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED | 서버에 접속하지 못했다.
EZSMS_E_LOGINFAIL | 로그인에 실패하였다.
EZSMS_E_SERVERERROR | 서버에서 처리중 오류가 발생했다.
EZSMS_E_LOGLISTNOTFOUND | 컬렉션 내 로그 정보가 존재하지 않다.
설명
이 메서드는 전송 내역들을 삭제하여 ppDeleteResults에 삭제 결과 목록을 저장합니다. pLogLists에는 Send 메서드로 메시지를 전송한 결과인 ISendResult(s)::Date 속성, ISendResult(s)::Index 속성 내용을 토대로 작성된 로그 객체들의 목록을 전달합니다. 이 메서드는 DeleteLogByList 메서드와 비슷한 기능을 하지만, 여러개의 전송내역을 한꺼번에 삭제할 수 있도록 마련된 메서드입니다. (여러개의 전송내역을 DeleteLogByList 메서드로 개개별 삭제하는 것보다 좀더 빠른 동작을 수행합니다)

※ 주의: 예약된 항목을 삭제할 경우 예약을 자동으로 취소해 주지 않습니다. 즉, 전송내역만 삭제하게 되며 메시지는 예약된 시간에 전송되게 되므로, 예약을 취소할 목적이라면 반드시 CancelReservation 메서드군으로 예약을 취소해야 합니다.
예제
extern IMessage* pMessage;

void Deletes(ILogLists* pLogLists)
{
    IDeleteResults* pResults;

    HRESULT hr = pMessage->DeleteLogByLists(pLogLists, &pResults);
    if(SUCCEEDED(hr))
    {
        LONG lCnt;
        pResults->get_Count(&lCnt);
        for(int i=0; i<lCnt; i++)
        {
            IDispatch* pDisp = NULL;
            if(FAILED(pResults->get_Item(i, &pDisp))) continue;

            IDeleteResult* pDeleteResult = NULL;
            if(SUCCEEDED(pDisp->QueryInterface(__uuidof(IDeleteResult), (void**)&pDeleteResult)))
            {
                EZSMS_RESULT Result;
                pDeleteResult->get_Result(&Result);
                TRACE("%s\n", Result == EZSMS_SUCCEEDED ? "삭제 성공" : "삭제 실패");
                pDeleteResult->Release();
            }
            pDisp->Release();
        }

        pResults->Release();
    }
}
[Visual Basic]

구문
object.DeleteLogByLists( _
    LogLists As ILogLists _
) As IDeleteResults
매개 변수
LogLists
삭제할 전송 내역 목록
object
Message 객체
반환 값
전송 내역을 삭제한 결과 목록인 IDeleteResults 인터페이스를 반환합니다.
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수 값이 잘 못 됐다.
&H8007000E | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED (&H8004A001) | 서버에 접속하지 못했다.
EZSMS_E_SERVERERROR (&8004A002) | 서버에서 처리중 오류가 발생했다.
EZSMS_E_LOGINFAIL (&8004A003) | 로그인에 실패하였다.
EZSMS_E_LOGLISTNOTFOUND (&H8004A009) | 컬렉션 내 로그 정보가 존재하지 않다.
예제
Public objMessage As IMessage

Private Sub 삭제(LogLists As ILogLists)
    Dim objResults As IDeleteResults
    Dim objResult As IDeleteResult

    On Error Resume Next
    Set objResults = objMessage.DeleteLogByLists(LogLists)
    If Err.Number = 0 Then
        For Each objResult In objResults
            If objResult.Result = EZSMS_SUCCEEDED Then
                Debug.Print "로그 삭제 성공"
            Else
                Debug.Print "로그 삭제 실패"
            End If
        Next
    End If
End Sub
참고 항목
IMessage 인터페이스 , ILogList 인터페이스 , IDeleteResult 인터페이스 , IDeleteResults 인터페이스 , IMessage::DeleteLogByList 메서드


IMessage::GetErrorMessage 메서드

[C++]

구문
HRESULT GetErrorMessage(
    EZSMS_E_CONSTANTS ErrorNum,
    BSTR* pErrorMessage
);
매개 변수
ErrorNum
[in] 변환할 에러 코드
pErrorMessage
[out, retval] 에러 메시지 내용을 받을 BSTR 포인터. NULL일 경우 반환하지 않음
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pErrorMessage를 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
ezSMSComponent 컴포넌트의 메시지 호출이나 속성 사용시, 반환되는 에러 코드를 문자열로 변환시킵니다. 사용자에게 에러 메시지의 내용을 보여주려할 때 유용합니다.
예제
extern IMessage* pMessage;

HRESULT hr = pMessage->SetAccountInfo(L"id", L"pwd");
hr = pMessage->UpdateLoginInfo();
if(FAILED(hr))
{
    BSTR bstrErrorMessage;
    pMessage->GetErrorMessage((EZSMS_E_CONSTANTS)hr, &bstrErrorMessage);

    TRACE("에러 메시지: %s\n", (LPCTSTR)_bstr_t(bstrErrorMessage));
    SysFreeString(bstrErrorMessage);
}
[Visual Basic]

구문
object.GetErrorMessage(ErrorNum As EZSMS_E_CONSTANTS) As String
매개 변수
ErrorNum
변환할 에러 코드
object
Message 객체
반환 값
에러 메시지를 String형 문자열로 반환합니다.
예제
Public objMessage As IMessage
Public objLoginInfo As ILoginInfo

Private Sub Login()
    On Error Resume Next
    objMessage.SetAccountInfo "id", "pwd"
    objMessage.UpdateLoginInfo
    Set objLoginInfo = objMessage.LoginInfo
    If Err.Number <> 0 Then
        Debug.Print "에러 메시지: " & objMessage.GetErrorMessage(Err.Number)
    End If
End Sub
참고 항목
IMessage 인터페이스 , IMessage::SetAccountInfo 메서드 , EZSMS_E_CONSTANTS 열거


IMessage::SetAccountInfo 메서드

[C++]

구문
HRESULT SetAccountInfo(
    BSTR UserID,
    BSTR UserPassword
);
매개 변수
UserID
[in] 로그인 아이디
UserPassword
[in] 로그인 패스워드
반환 값
반환 값 | 의미
S_OK | 로그인 성공
설명
ezSMS 서버에 로그인할 사용자 계정 정보를 설정합니다. 이 후 IMessage::UpdateLoginInfo나 IMessage::Send 등의 메서드로 로그인이 성공 상태가 되면 IMessage::LoginInfo 속성을 통해 사용자 계정 상태 정보를 확인할 수 있습니다.
예제
extern IMessage* pMessage;

HRESULT hr = pMessage->SetAccountInfo(L"id", L"pwd");

// pMessage->Send(), pMessage->UpdateLoginInfo() 등을 사용
[Visual Basic]

구문
object.SetAccountInfo( _
    UserID As String, _
    UserPassword As String _
)
매개 변수
UserID
로그인 아이디
UserPassword
로그인 패스워드
object
Message 객체
예제
Public objMessage As IMessage

Private Sub Login_Click()
    Set objMessage = New Message

    On Error Resume Next
    objMessage.SetAccountInfo "id", "pwd"
    objMessage.UpdateLoginInfo
    If Err.Number = 0 Then
        ' 로그인 성공
    End If
End Sub
참고 항목
IMessage 인터페이스 , ILoginInfo 인터페이스 , EZSMS_E_CONSTANTS 상수


IMessage::RequestLog 메서드

[C++]

구문
HRESULT RequestLog(
    LONG Year,
    LONG Month,
    EZSMS_LOGBY LogBy,
    EZSMS_MESSAGE_TYPE Type,
    ILogLists** ppLogs);
매개 변수
Year
[in] 해당 년도
Month
[in] 해당 월
LogBy
[in] 가져올 전송 내역 종류
Type
[in] 가져올 메시지 타입 (EZSMS_MESSAGE_TYPE_ALL 사용시 SMS, LMS, MMS 모두 검색)
ppLogs
[out, retval] 전송 내역을 저장할 ILogLists 인터페이스의 포인터의 포인터. 반드시 NULL이 아니어야 함
반환 값
반환 값 | 의미
S_OK | 성공
E_INVALIDARG | LogBy 매개 변수 값이 잘 못 됐다.
E_POINTER | ppLogs 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED | 서버에 접속하지 못했다.
EZSMS_E_LOGINFAIL | 로그인에 실패하였다.
EZSMS_E_SERVERERROR | 서버에서 처리중 오류가 발생했다.
설명
이 메서드는 전송 내역을 요청하여 ppLogs에 그 내용을 저장합니다. Year와 Month에는 전송 된 또는 전송 될 내역의 년도와 월을 지정합니다. 예를 들어 2004년 5월 15일에 메시지가 전송되도록 예약했다면 Year는 2004, Month에는 5를 대입하십시오. LogBy 인자는 가져올 전송 내역의 종류를 지정하는데, EZSMS_BYALL을 주면 지정한 년월에 해당하는 전송 내역을 모두 가져고 EZSMS_BYRESERVATION을 주면 지정한 년월에 해당하는 예약된 내용만을 가져옵니다. (스케줄러 같이 예약된 내역만 가져오고 싶을 때 유용합니다)

※ 참고: 전송내역은 최근에 전송한 항목부터 차례로 ILogLists 컬렉션에 저장됩니다. 즉 가장 최근에 보낸 항목이 ILogLists 컬렉션의 첫번째 인덱스에 저장됩니다.
예제
void ViewLog(LONG nYear, LONG nMonth)
{
    ILogLists* pLogs;
    HRESULT hr;

    hr = pMessage->RequestLog(nYear, nMonth, EZSMS_BYALL, EZSMS_MESSAGE_TYPE_SMS, &pLogs);
    if(SUCCEEDED(hr))
    {
        LONG lCount = 0;
        pLogs->get_Count(&lCount);

        for(LONG i=0; i<lCount; i++)
        {
            IDispatch* pDisp;
            if(SUCCEEDED(pLogs->get_Item(i, &pDisp)))
            {
                ILogList* pLog;
                if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogList), (void**)&pLog)))
                {
                    BSTR bstrIndex;
                    BSTR bstrReceiverPhone;
                    BSTR bstrMessage;
                    LONG lDetailCount = 0;

                    pLog->get_Index(&bstrIndex);
                    pLog->get_ReceiverPhone(&bstrReceiverPhone);
                    pLog->get_Message(&bstrMessage);
                    pLog->get_CountTotal(&lDetailCount);

                    TRACE("---- 로그 %d ----\n", i);
                    TRACE("메시지 내용: %s\n", (LPCTSTR)_bstr_t(bstrMessage));
                    TRACE("수신자 휴대폰: %s\n", (LPCTSTR)_bstr_t(bstrReceiverPhone));
                    TRACE("인덱스: %s\n", (LPCTSTR)_bstr_t(bstrIndex));
                    TRACE("전송 개수: %d\n", lDetailCount);

                    SysFreeString(bstrIndex);
                    SysFreeString(bstrReceiverPhone);
                    SysFreeString(bstrMessage);

                    pLog->Release();
                }
                pDisp->Release();
            }
        }
        pLogs->Release();
    }
}
[Visual Basic]

구문
object.RequestLog( _
    Year As Long, _
    Month As Long, _
    LogBy As EZSMS_LOGBY _
    Type As EZSMS_MESSAGE_TYPE _
) As ILogLists
매개 변수
Year
해당 년도
Month
해당 월
LogBy
가져올 전송 내역 종류
Type
가져올 메시지 타입 (EZSMS_MESSAGE_TYPE_ALL 사용시 SMS, LMS, MMS 모두 검색)
object
Message 객체
반환 값
요청한 전송 내역인 ILogLists 인터페이스를 반환합니다.
에러 코드
에러 코드 | 의미
&H80070057 | LogBy 매개 변수 값이 잘 못 됐다.
&H8007000E | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED (&H8004A001) | 서버에 접속하지 못했다.
EZSMS_E_SERVERERROR (&8004A002) | 서버에서 처리중 오류가 발생했다.
EZSMS_E_LOGINFAIL (&8004A003) | 로그인에 실패하였다.
예제
Public objMessage As IMessage

Private Sub ViewLog(Year As Long, Month As Long)
    Dim objLogLists As ILogLists
    Dim objLogList As ILogList
    Dim Pos As Integer

    On Error Resume Next
    Set objLogLists = objMessage.RequestLog(Year, Month, EZSMS_BYALL, EZSMS_MESSAGE_TYPE_SMS)
    If Err.Number = 0 Then
        For Each objLogList In objLogLists
            Pos = Pos + 1
            Debug.Print "---- 로그 " & Pos & " ----"
            Debug.Print "메시지 내용: " & objLogList.Message
            Debug.Print "수신자 휴대폰: " & objLogList.ReceiverPhone
            Debug.Print "인덱스: " & objLogList.Index
            Debug.Print "전송 개수: " & Str(objLogList.CountTotal)
        Next
    End If
End Sub
참고 항목
IMessage 인터페이스 , ILogList 인터페이스 , ILogLists 컬렉션 , EZSMS_LOGBY 열거 , EZSMS_MESSAGE_TYPE 열거


IMessage::RequestLogBound 메서드

[C++]

구문
HRESULT RequestLogBound(
    LONG Year,
    LONG Month,
    LONG StartDay,
    LONG EndDay,
    EZSMS_LOGBY LogBy,
    EZSMS_MESSAGE_TYPE Type,
    ILogLists** ppLogs);
매개 변수
Year
[in] 해당 년도
Month
[in] 해당 월
StartDay
[in] 시작 일
EndDay
[in] 끝 일
LogBy
[in] 가져올 전송 내역 종류
Type
[in] 가져올 메시지 타입 (EZSMS_MESSAGE_TYPE_ALL 사용시 SMS, LMS, MMS 모두 검색)
ppLogs
[out, retval] 전송 내역을 저장할 ILogLists 인터페이스의 포인터의 포인터. 반드시 NULL이 아니어야 함
반환 값
반환 값 | 의미
S_OK | 성공
E_INVALIDARG | LogBy 매개 변수 값이 잘 못 됐다.
E_POINTER | ppLogs 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED | 서버에 접속하지 못했다.
EZSMS_E_LOGINFAIL | 로그인에 실패하였다.
EZSMS_E_SERVERERROR | 서버에서 처리중 오류가 발생했다.
설명
이 메서드는 특정 범위의 전송 내역만을 요청하여 ppLogs에 그 내용을 저장합니다. Year와 Month에는 전송 된 또는 전송 될 내역의 년도와 월을 지정합니다. StartDay와 EndDay는 몇일부터 몇일까지의 내용만을 가져올 것인가를 지정합니다. 예를 들어 2004년 5월 10부터 20일까지의 내역을 가져오고자 한다면, Year는 2004, Month에는 5, StartDay에는 10, EndDay에는 20을 대입하십시오. LogBy 인자는 가져올 전송 내역의 종류를 지정하는데, EZSMS_BYALL을 주면 지정한 년월에 해당하는 전송 내역을 모두 가져고 EZSMS_BYRESERVATION을 주면 지정한 년월에 해당하는 예약된 내용만을 가져옵니다. (스케줄러 같이 예약된 내역만 가져오고 싶을 때 유용합니다)

※ 참고: 전송내역은 최근에 전송한 항목부터 차례로 ILogLists 컬렉션에 저장됩니다. 즉 가장 최근에 보낸 항목이 ILogLists 컬렉션의 첫번째 인덱스에 저장됩니다.
예제
extern IMessage* pMessage;

void ViewLog(LONG nYear, LONG nMonth, LONG nStartDay, LONG nEndDay)
{
    ILogLists* pLogs;
    HRESULT hr;

    hr = pMessage->RequestLogBound(nYear, nMonth, nStartDay, nEndDay, EZSMS_BYALL, EZSMS_MESSAGE_TYPE_SMS, &pLogs);
    if(SUCCEEDED(hr))
    {
        LONG lCount = 0;
        pLogs->get_Count(&lCount);

        for(LONG i=0; i<lCount; i++)
        {
            IDispatch* pDisp;
            if(SUCCEEDED(pLogs->get_Item(i, &pDisp)))
            {
                ILogList* pLog;
                if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogList), (void**)&pLog)))
                {
                    BSTR bstrIndex;
                    BSTR bstrReceiverPhone;
                    BSTR bstrMessage;
                    LONG lDetailCount = 0;

                    pLog->get_Index(&bstrIndex);
                    pLog->get_ReceiverPhone(&bstrReceiverPhone);
                    pLog->get_Message(&bstrMessage);
                    pLog->get_CountTotal(&lDetailCount);

                    TRACE("---- 로그 %d ----\n", i);
                    TRACE("메시지 내용: %s\n", (LPCTSTR)_bstr_t(bstrMessage));
                    TRACE("수신자 휴대폰: %s\n", (LPCTSTR)_bstr_t(bstrReceiverPhone));
                    TRACE("인덱스: %s\n", (LPCTSTR)_bstr_t(bstrIndex));
                    TRACE("전송 개수: %d\n", lDetailCount);

                    SysFreeString(bstrIndex);
                    SysFreeString(bstrReceiverPhone);
                    SysFreeString(bstrMessage);

                    pLog->Release();
                }
                pDisp->Release();
            }
        }
        pLogs->Release();
    }
}
[Visual Basic]

구문
object.RequestLogBound( _
    Year As Long, _
    Month As Long, _
    StartDay As Long, _
    EndDay As Long, _
    LogBy As EZSMS_LOGBY _
    Type As EZSMS_MESSAGE_TYPE _
) As ILogLists
매개 변수
Year
해당 년도
Month
해당 월
StartDay
시작 일
EndDay
끝 일
LogBy
가져올 전송 내역 종류
Type
가져올 메시지 타입 (EZSMS_MESSAGE_TYPE_ALL 사용시 SMS, LMS, MMS 모두 검색)
object
Message 객체
반환 값
요청한 전송 내역인 ILogLists 인터페이스를 반환합니다.
에러 코드
에러 코드 | 의미
&H80070057 | LogBy 매개 변수 값이 잘 못 됐다.
&H8007000E | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED (&H8004A001) | 서버에 접속하지 못했다.
EZSMS_E_SERVERERROR (&8004A002) | 서버에서 처리중 오류가 발생했다.
EZSMS_E_LOGINFAIL (&8004A003) | 로그인에 실패하였다.
예제
Public objMessage As IMessage

Private Sub ViewLog(Year As Long, Month As Long, StartDay As Long, EndDay As Long)
    Dim objLogLists As ILogLists
    Dim objLogList As ILogList
    Dim Pos As Integer

    On Error Resume Next
    Set objLogLists = objMessage.RequestLogBound(Year, Month, StartDay, EndDay, EZSMS_BYALL, EZSMS_MESSAGE_TYPE_SMS)
    If Err.Number = 0 Then
        For Each objLogList In objLogLists
            Pos = Pos + 1
            Debug.Print "---- 로그 " & Pos & " ----"
            Debug.Print "메시지 내용: " & objLogList.Message
            Debug.Print "수신자 휴대폰: " & objLogList.ReceiverPhone
            Debug.Print "인덱스: " & objLogList.Index
            Debug.Print "전송 개수: " & Str(objLogList.CountTotal)
        Next
    End If
End Sub
참고 항목
IMessage 인터페이스 , ILogList 인터페이스 , ILogLists 컬렉션 , EZSMS_LOGBY 열거 , EZSMS_MESSAGE_TYPE 열거


IMessage::RequestLogDetail 메서드

[C++]

구문
HRESULT RequestLogDetail(
    LONG Year,
    LONG Month,
    BSTR Index,
    EZSMS_MESSAGE_TYPE Type,
    ILogDetails** ppLogDetails
);
매개 변수
Year
[in] 해당 년도
Month
[in] 해당 월
Index
[in] 전송 내역 인덱스
Type
[in] 가져올 메시지 타입
ppLogDetails
[out, retval] 세부 전송 내역을 저장할 ILogDetails 인터페이스의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | ppLogDetails 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED | 서버에 접속하지 못했다.
EZSMS_E_LOGINFAIL | 로그인에 실패하였다.
EZSMS_E_SERVERERROR | 서버에서 처리중 오류가 발생했다.
설명
이 메서드는 세부 전송 내역을 요청하여 ppLogDetails에 그 내용을 저장합니다. Year와 Month에는 전송 된 또는 전송 될 내역의 년도와 월을 지정합니다. 예를 들어 2004년 5월 15일에 메시지가 전송되도록 예약했다면 Year는 2004, Month에는 5를 대입하십시오. Index에는 전송 내역의 인덱스 값을 지정해야 합니다. 세부 전송 내역을 요청하기 위해서는 먼저 RequestLog 메서드를 호출해야 하며, 그 결과인 전송 내역에 명시된 Index 속성 값을 이 매개변수에 대입해야 합니다. 물론 Year, Month는 RequestLog 메서드로 요청했던 년월과 같아야 합니다.

전송 내역은 접수 결과만을 가지고 오는데 비해 세부 전송 내역은 전송 상태와 실제 전송 결과, 그리고 접수 했을 당시의 모든 수신자에 대한 상세 정보를 가져옵니다.
예제
extern IMessage* pMessage;

void ViewLogDetail(LONG nYear, LONG nMonth, BSTR bstrIndex)
{
    ILogDetails* pLogDetails;
    HRESULT hr;

    hr = pMessage->RequestLogDetail(nYear, nMonth, bstrIndex, EZSMS_MESSAGE_TYPE_SMS, &pLogDetails);
    if(SUCCEEDED(hr))
    {
        LONG lCount = 0;
        pLogDetails->get_Count(&lCount);

        for(LONG i=0; i<lCount; i++)
        {
            IDispatch* pDisp;
            if(SUCCEEDED(pLogDetails->get_Item(i, &pDisp)))
            {
                ILogDetail* pLogDetail;
                if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogDetail), (void**)&pLogDetail)))
                {
                    BSTR bstrReceiverPhone;
                    BSTR bstrMessage;
                    DATE dateTransDate;
                    EZSMS_TRANS_STATUS TransStatus;
                    EZSMS_TRANS_RESULT TransResult;

                    pLogDetail->get_ReceiverPhone(&bstrReceiverPhone);
                    pLogDetail->get_Message(&bstrMessage);
                    pLogDetail->get_TransDate(&dateTransDate);
                    pLogDetail->get_Status(&TransStatus);
                    pLogDetail->get_Result(&TransResult);

                    TRACE("---- 상세 로그 ----\n");
                    TRACE("메시지 내용: %s\n", (LPCTSTR)_bstr_t(bstrMessage));
                    TRACE("수신자 휴대폰: %s\n", (LPCTSTR)_bstr_t(bstrReceiverPhone));
                    TRACE("전송 날짜: %s\n", (LPCTSTR)COleDateTime(dateTransDate).Format("%Y-%m-%d %H:%M:%S"));
                    TRACE("전송 상태: %s\n", TransStatus == EZSMS_TRANS_REQUESTED ? "전송 요구" : (TransStatus == EZSMS_TRANS_WAITING ? "결과 대기" : "결과 받음"));
                    if(TransStatus == EZSMS_TRANS_RECEIVED)
                        TRACE("전송 결과: %s\n", TransResult == EZSMS_TRANS_SUCCEEDED ? "전송 성공" : (TransResult == EZSMS_TRANS_NOTEXISTNUMBER ? "없는 번호" : "전송 실패"));

                    SysFreeString(bstrReceiverPhone);
                    SysFreeString(bstrMessage);

                    pLogDetail->Release();
                }
                pDisp->Release();
            }
        }
        pLogDetails->Release();
    }
}
[Visual Basic]

구문
object.RequestLogDetail( _
    Year As Long, _
    Month As Long, _
    Index As String _
) As ILogDetails
매개 변수
Year
해당 년도
Month
해당 월
Index
전송 내역 인덱스
Type
가져올 메시지 타입
object
Message 객체
반환 값
요청한 세부 전송 내역인 ILogDetails 인터페이스를 반환합니다.
에러 코드
에러 코드 | 의미
&H8007000E | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED (&H8004A001) | 서버에 접속하지 못했다.
EZSMS_E_SERVERERROR (&8004A002) | 서버에서 처리중 오류가 발생했다.
EZSMS_E_LOGINFAIL (&8004A003) | 로그인에 실패하였다.
예제
Public objMessage As IMessage

Private Function GetTransStatusString(Status As EZSMS_TRANS_STATUS) As String
    Select Case Status
        Case EZSMS_TRANS_REQUESTED
            GetTransStatusString = "전송 요구"
        Case EZSMS_TRANS_WAITING
            GetTransStatusString = "결과 대기"
        Case EZSMS_TRANS_RECEIVED
            GetTransStatusString = "결과 받음"
    End Select
End Function

Private Function GetTransResultString(Result As EZSMS_TRANS_RESULT) As String
    Select Case Result
        Case EZSMS_TRANS_SUCCEEDED
            GetTransResultString = "전송 성공"
        Case EZSMS_TRANS_FAILED
            GetTransResultString = "전송 실패"
        Case EZSMS_TRANS_NOTEXISTNUMBER
            GetTransResultString = "없는 번호"
    End Select
End Function

Private Sub ViewLogDetail(Year As Long, Month As Long, Index As String)
    Dim objLogDetails As ILogDetails
    Dim objLogDetail As ILogDetail

    On Error Resume Next
    Set objLogDetails = objMessage.RequestLogDetail(Year, Month, Index, EZSMS_MESSAGE_TYPE_SMS)
    If Err.Number = 0 Then
        For Each objLogDetail In objLogDetails
            Debug.Print "---- 상세 정보 ----"
            Debug.Print "메시지: " & objLogDetail.Message
            Debug.Print "수신자 휴대폰: " & objLogDetail.ReceiverPhone
            Debug.Print "전송 시간: " & objLogDetail.TransDate
            Debug.Print "전송 상태: " & GetTransStatusString(objLogDetail.Status)
            If objLogDetail.Status = EZSMS_TRANS_RECEIVED Then Debug.Print "전송 결과: " & GetTransResultString(objLogDetail.Result)
        Next
    End If
End Sub
참고 항목
IMessage 인터페이스 , ILogDetail 인터페이스 , ILogDetails 컬렉션 , EZSMS_TRANS_STATUS 열거 , EZSMS_TRANS_RESULT 열거


IMessage::RequestLogDetailByList 메서드

[C++]

구문
HRESULT RequestLogDetailByList(
    ILogList* pLogList,
    ILogDetails** ppLogDetails
);
매개 변수
pLogList
[in] 전송내역 로그 객체
ppLogDetails
[out, retval] 세부 전송 내역을 저장할 ILogDetails 인터페이스의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_INVALIDARG | 매개 변수 값이 잘 못 됐다.
E_POINTER | ppLogDetails 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED | 서버에 접속하지 못했다.
EZSMS_E_LOGINFAIL | 로그인에 실패하였다.
EZSMS_E_SERVERERROR | 서버에서 처리중 오류가 발생했다.
설명
이 메서드는 세부 전송 내역을 요청하여 ppLogDetails에 그 내용을 저장합니다. pLogList에는 SendOne 메서드로 메시지를 전송한 결과인 ISendResult(s)::Date 속성, ISendResult(s)::Index 속성 내용을 토대로 작성된 로그 객체를 전달합니다. 이 메서드는 RequestLogDetail 메서드와 동일한 기능을 하며, 보다 쉽게 상세 전송내역을 요청할 수 있도록 추가된 항목입니다.

전송 내역은 접수 결과만을 가지고 오는데 비해 세부 전송 내역은 전송 상태와 실제 전송 결과, 그리고 접수 했을 당시의 모든 수신자에 대한 상세 정보를 가져옵니다.
예제
extern IMessage* pMessage;

void ViewLogDetail(ILogList* pLogList)
{
    ILogDetails* pLogDetails;
    HRESULT hr;

    hr = pMessage->RequestLogDetailByList(pLogList, &pLogDetails);
    if(SUCCEEDED(hr))
    {
        LONG lCount = 0;
        pLogDetails->get_Count(&lCount);

        for(LONG i=0; i<lCount; i++)
        {
            IDispatch* pDisp;
            if(SUCCEEDED(pLogDetails->get_Item(i, &pDisp)))
            {
                ILogDetail* pLogDetail;
                if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogDetail), (void**)&pLogDetail)))
                {
                    BSTR bstrReceiverPhone;
                    BSTR bstrMessage;
                    DATE dateTransDate;
                    EZSMS_TRANS_STATUS TransStatus;
                    EZSMS_TRANS_RESULT TransResult;

                    pLogDetail->get_ReceiverPhone(&bstrReceiverPhone);
                    pLogDetail->get_Message(&bstrMessage);
                    pLogDetail->get_TransDate(&dateTransDate);
                    pLogDetail->get_Status(&TransStatus);
                    pLogDetail->get_Result(&TransResult);

                    TRACE("---- 상세 로그 ----\n");
                    TRACE("메시지 내용: %s\n", (LPCTSTR)_bstr_t(bstrMessage));
                    TRACE("수신자 휴대폰: %s\n", (LPCTSTR)_bstr_t(bstrReceiverPhone));
                    TRACE("전송 날짜: %s\n", (LPCTSTR)COleDateTime(dateTransDate).Format("%Y-%m-%d %H:%M:%S"));
                    TRACE("전송 상태: %s\n", TransStatus == EZSMS_TRANS_REQUESTED ? "전송 요구" : (TransStatus == EZSMS_TRANS_WAITING ? "결과 대기" : "결과 받음"));
                    if(TransStatus == EZSMS_TRANS_RECEIVED)
                        TRACE("전송 결과: %s\n", TransResult == EZSMS_TRANS_SUCCEEDED ? "전송 성공" : (TransResult == EZSMS_TRANS_NOTEXISTNUMBER ? "없는 번호" : "전송 실패"));

                    SysFreeString(bstrReceiverPhone);
                    SysFreeString(bstrMessage);

                    pLogDetail->Release();
                }
                pDisp->Release();
            }
        }
        pLogDetails->Release();
    }
}
[Visual Basic]

구문
object.RequestLogDetailByList( _
    LogList As ILogList _
) As ILogDetails
매개 변수
LogList
전송내역 로그 객체
object
Message 객체
반환 값
요청한 세부 전송 내역인 ILogDetails 인터페이스를 반환합니다.
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수 값이 잘 못 됐다.
&H8007000E | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED (&H8004A001) | 서버에 접속하지 못했다.
EZSMS_E_SERVERERROR (&8004A002) | 서버에서 처리중 오류가 발생했다.
EZSMS_E_LOGINFAIL (&8004A003) | 로그인에 실패하였다.
예제
Public objMessage As IMessage

Private Function GetTransStatusString(Status As EZSMS_TRANS_STATUS) As String
    Select Case Status
        Case EZSMS_TRANS_REQUESTED
            GetTransStatusString = "전송 요구"
        Case EZSMS_TRANS_WAITING
            GetTransStatusString = "결과 대기"
        Case EZSMS_TRANS_RECEIVED
            GetTransStatusString = "결과 받음"
    End Select
End Function

Private Function GetTransResultString(Result As EZSMS_TRANS_RESULT) As String
    Select Case Result
        Case EZSMS_TRANS_SUCCEEDED
            GetTransResultString = "전송 성공"
        Case EZSMS_TRANS_FAILED
            GetTransResultString = "전송 실패"
        Case EZSMS_TRANS_NOTEXISTNUMBER
            GetTransResultString = "없는 번호"
    End Select
End Function

Private Sub ViewLogDetail(LogList As ILogList)
    Dim objLogDetails As ILogDetails
    Dim objLogDetail As ILogDetail

    On Error Resume Next
    Set objLogDetails = objMessage.RequestLogDetailByList(LogList)
    If Err.Number = 0 Then
        For Each objLogDetail In objLogDetails
            Debug.Print "---- 상세 정보 ----"
            Debug.Print "메시지: " & objLogDetail.Message
            Debug.Print "수신자 휴대폰: " & objLogDetail.ReceiverPhone
            Debug.Print "전송 시간: " & objLogDetail.TransDate
            Debug.Print "전송 상태: " & GetTransStatusString(objLogDetail.Status)
            If objLogDetail.Status = EZSMS_TRANS_RECEIVED Then Debug.Print "전송 결과: " & GetTransResultString(objLogDetail.Result)
        Next
    End If
End Sub
참고 항목
IMessage 인터페이스 , ILogList 인터페이스 , ILogDetail 인터페이스 , ILogDetails 컬렉션 , EZSMS_TRANS_STATUS 열거 , EZSMS_TRANS_RESULT 열거


IMessage::Send 메서드

[C++]

구문
HRESULT Send(
    BSTR ReturnPhone,
    IReceivers* pReceivers,
    IContents* pContents,
    ISendResults** ppSendResults
);
매개 변수
ReturnPhone
[in] 회신 번호
※ 주의: 회신 번호는 반드시 숫자로만 되어 있어야 합니다. 예를 들어 010-1234-1234 는 01012341234로 바꿔주어야 합니다.
pReceivers
[in] 수신자 휴대폰과 전송 메시지를 포함하는 수신자 정보 목록
pContents
[in] 메시지 타입(SMS, LMS, MMS)과 메시지 내용, 이미지를 포함하는 컨텐츠
ppSendResults
[out, retval] 접수 결과를 저장할 ISendResults 인터페이스의 포인터의 포인터. NULL이면 전송 결과를 반환하지 않음
반환 값
반환 값 | 의미
S_OK | 전송 성공
E_INVALIDARG | 매개 변수 값이 잘 못 됐다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED | 서버에 접속하지 못했다.
EZSMS_E_LOGINFAIL | 로그인에 실패하였다.
EZSMS_E_SERVERERROR | 서버에서 처리중 오류가 발생했다.
EZSMS_E_RECEIVERNOTFOUND | 전송할 수신자 정보가 없다.
EZSMS_E_NEEDFORCALL | 잔여 콜 수가 부족하다.
EZSMS_E_FILEISTOOLARGE | 이미지 파일의 용량이 너무 크다.
설명
매개 변수에 지정한 수신자 정보 목록 리스트의 내용으로 메시지를 다중 전송합니다(한꺼번에 여러 메시지를 전송함). ezSMS Server는 이를 접수한 결과를 수신자 정보 목록과 똑같은 순서로 매치시켜 반환합니다. 그 내용은 ppSendResults에 저장되며 접수가 잘 됐는지 확인할 수 있습니다.

전송 내역은 Send 메서드나 SendOne 메서드를 호출 한만큼 생성됩니다. Send 메서드를 5번 호출하고 모두 성공했다면 전송 내역에는 5개의 로그가 기록됩니다. Send 메서드는 다중 전송을 할 수 있는데 그러한 다중 전송에 대한 전송 내역은 세부 전송 내역에 기록되어 있습니다. 전송 내역은 RequestLog 메서드를 통해 가져올 수 있으며 세부 전송 내역은 그 전송 내역의 인덱스 번호를 RequestLogDetail 메서드 인자에 지정하여 가져올 수 있습니다.

Send 메서드는 메시지를 전송한 후 잔여 콜 수를 갱신합니다. 잔여 콜 수는 LoginInfo 속성 중 FreeCall 속성으로 확인할 수 있습니다.
예제
BOOL Send(IMessage* pMessage)
{
    IReceivers* pReceivers = NULL;
    IContents* pContents = NULL;
    ISendResults* pSendResults = NULL;
    BOOL bRes = FALSE;

    __try {
        if(FAILED(pMessage->CreateReceivers(&pReceivers))) __leave;
        if(FAILED(pMessage->CreateContents(&pContents))) __leave;

        pContents->put_Type(EZSMS_MESSAGE_TYPE_MMS);
        pContents->put_Subject(L"제목");
        pContents->AddImageFile(L"C:\\temp\\myimage.jpg");

        COleDateTime timeReservation(2004, 5, 15, 14, 0, 0);
        pReceivers->AddDirect(L"01012345678", L"메시지1", EZSMS_RESERVATION, timeReservation);
        pReceivers->AddDirect(L"01023456789", L"메시지2", EZSMS_RESERVATION, timeReservation);
        pReceivers->AddDirect(L"01034567890", L"메시지3", EZSMS_RESERVATION, timeReservation);

        if(FAILED(pMessage->Send(L"01033334444", pReceivers, pContents, &pSendResults))) __leave;
        bRes = TRUE;
        LONG lCount = 0;
        pSendResults->get_Count(&lCount);
        for(LONG i=0; i<lCount; i++)
        {
            IDispatch* pDisp = NULL;
            ISendResult* pSendResult = NULL;

            __try {
                if(FAILED(pSendResults->get_Item(i, &pDisp))) __leave;
                if(FAILED(pDisp->QueryInterface(__uuidof(ISendResult), (void**)&pSendResult))) __leave;

                BSTR bstrPhone;
                EZSMS_RESULT Result;

                pSendResult->get_Phone(&bstrPhone);
                pSendResult->get_Result(&Result);
                CString strPhone(bstrPhone);

                TRACE("%s 번호로 메시지 접수 결과: %s\n", strPhone, Result == EZSMS_SUCCEEDED ? "성공" : "실패");
                SysFreeString(bstrPhone);
            }
            __finally {
                if(pDisp != NULL) pDisp->Release();
                if(pSendResult != NULL) pSendResult->Release();
            }
        }
    }
    __finally {
        if(pReceivers != NULL) pReceivers->Release();
        if(pContents != NULL) pContents->Release();
        if(pSendResults != NULL) pSendResults->Release();
    }

    return bRes;
}
[Visual Basic]

구문
object.Send( _
    ReturnPhone As String, _
    objReceivers As IReceivers _
    objContents As IContents _
) As ISendResults
매개 변수
ReturnPhone
회신 번호
※ 주의: 회신 번호는 반드시 숫자로만 되어 있어야 합니다. 예를 들어 010-1234-1234 는 01012341234로 바꿔주어야 합니다.
objReceivers
수신자 휴대폰과 전송 메시지를 포함하는 수신자 정보 목록
objContents
메시지 타입(SMS, LMS, MMS)과 메시지 내용, 이미지를 포함하는 컨텐츠
object
Message 객체
반환 값
접수 결과인 ISendResults 인터페이스를 반환합니다.
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수 값이 잘 못 됐다.
&H8007000E | 메모리가 부족하다.
EZSMS_E_NOTCONNECTED (&H8004A001) | 서버에 접속하지 못했다.
EZSMS_E_SERVERERROR (&8004A002) | 서버에서 처리중 오류가 발생했다.
EZSMS_E_LOGINFAIL (&8004A003) | 로그인에 실패하였다.
EZSMS_E_RECEIVERNOTFOUND (&H8004A005) | 전송할 수신자 정보가 없다.
EZSMS_E_NEEDFORCALL (&H8004A00A) | 잔여 콜 수가 부족하다.
EZSMS_E_FILEISTOOLARGE (&H8004A00C) | 이미지 파일의 용량이 너무 크다.
예제
Public objMessage As IMessage

Private Function Send() As Boolean
    Dim objReceivers As IReceivers
    Dim objContents As IContents
    Dim objSendResults As ISendResults
    Dim objSendResult As ISendResult
    Dim SendDate As Date
    Dim Report As String

    Send = False
    On Error Resume Next

    Set objContents = objMessage.CreateContents
    If Err.Number <> 0 Then Exit Function

    objContents.Type = EZSMS_MESSAGE_TYPE_LMS
    objContents.Subject = "문자 제목"

    SendDate = "2004-5-15 14:00:00"
    Set objReceivers = objMessage.CreateReceivers
    If Err.Number <> 0 Then Exit Function
    objReceivers.AddDirect "01012345678", "메시지1", EZSMS_RESERVATION, SendDate
    objReceivers.AddDirect "01023456789", "메시지2", EZSMS_RESERVATION, SendDate
    objReceivers.AddDirect "01034567890", "메시지3", EZSMS_RESERVATION, SendDate

    Set objSendResults = objMessage.Send("01033334444", objReceivers, objContents)
    If Err.Number <> 0 Then Exit Function
    For Each objSendResult In objSendResults
        Report = objSendResult.Phone & " 번호로 메시지 접수 결과: "
        If objSendResult.Result = EZSMS_SUCCEEDED Then Report = Report & "성공" Else Report = Report & "실패"
        Debug.Print Report
    Next

    Send = True
End Function
참고 항목
IMessage 인터페이스 , SendOne 메서드 , RequestLog 메서드 , RequestLogDetail 메서드 , LoginInfo 속성


IMessage::SendOne 메서드

[C++]

구문
HRESULT SendOne(
    BSTR ReturnPhone,
    IReceiver* pReceiver,
    IContents* pContents,
    ISendResult** ppSendResult
);
매개 변수
ReturnPhone
[in] 회신 번호
※ 주의: 회신 번호는 반드시 숫자로만 되어 있어야 합니다. 예를 들어 010-1234-1234 는 01012341234로 바꿔주어야 합니다.
pReceiver
[in] 수신자 휴대폰과 전송 메시지를 포함하는 수신자 정보
pContents
[in] 메시지 타입(SMS, LMS, MMS)과 메시지 내용, 이미지를 포함하는 컨텐츠
ppSendResult
[out, retval] 접수 결과를 저장할 ISendResult 인터페이스의 포인터의 포인터. NULL이면 전송 결과를 반환하지 않음
반환 값
반환 값 | 의미
S_OK | 전송 성공
E_INVALIDARG | 매개 변수 값이 잘 못 됐다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
EZSMS_E_NOTCONNECTED | 서버에 접속하지 못했다.
EZSMS_E_LOGINFAIL | 로그인에 실패하였다.
EZSMS_E_SERVERERROR | 서버에서 처리중 오류가 발생했다.
EZSMS_E_RECEIVERNOTFOUND | 전송할 수신자 정보가 없다.
EZSMS_E_NEEDFORCALL | 잔여 콜 수가 부족하다.
EZSMS_E_FILEISTOOLARGE | 이미지 파일의 용량이 너무 크다.
설명
매개 변수에 지정한 수신자 정보의 내용으로 메시지를 전송합니다(한 개만 전송). ezSMS Server는 이를 접수한 결과를 반환합니다. 그 내용은 ppSendResult에 저장되며 접수가 잘 됐는지 확인할 수 있습니다.

전송 내역은 Send 메서드나 SendOne 메서드를 호출 한만큼 생성됩니다. SendOne 메서드를 5번 호출하고 모두 성공했다면 전송 내역에는 5개의 로그가 기록됩니다.
전송 내역은 RequestLog 메서드를 통해 가져올 수 있으며 실제 전송 결과인 세부 전송 내역은 그 전송 내역의 인덱스 번호를 RequestLogDetail 메서드 인자에 지정하여 가져올 수 있습니다.

SendOne 메서드는 메시지를 전송한 후 잔여 콜 수를 갱신합니다. 잔여 콜 수는 LoginInfo 속성 중 FreeCall 속성으로 확인할 수 있습니다.
예제
BOOL SendOne(IMessage* pMessage)
{
    IReceiver* pReceiver = NULL;
    IContents* pContents = NULL;
    ISendResult* pSendResult = NULL;
    BOOL bRes = FALSE;
    HRESULT hr;

    hr = pMessage->CreateContents(&pContents);
    if(FAILED(hr)) return FALSE;

    pContents->put_Type(EZSMS_MESSAGE_TYPE_MMS);
    pContents->put_Subject(L"제목");
    pContents->put_Message(L"문자 내용");
    pContents->AddImageFile(L"C:\\temp\\myimage.jpg");

    COleDateTime SendTime(2004, 5, 15, 14, 0, 0);
    hr = pMessage->CreateReceiverDirect(L"01012345678", NULL, EZSMS_RESERVATION, SendTime, &pReceiver);
    if(SUCCEEDED(hr))
    {
        hr = pMessage->SendOne(L"01033334444", pReceiver, pContents, &pSendResult);
        if(SUCCEEDED(hr))
        {
            bRes = TRUE;
            BSTR bstrPhone;
            EZSMS_RESULT Result;
            pSendResult->get_Phone(&bstrPhone);
            pSendResult->get_Result(&Result);
            CString strPhone(bstrPhone);

            TRACE("%s 번호로 메시지 접수 결과: %s\n", strPhone, Result == EZSMS_SUCCEEDED ? "성공" : "실패");
            SysFreeString(bstrPhone);

            pSendResult->Release();
        }

        pReceiver->Release();
    }

    return bRes;
}
[Visual Basic]

구문
object.SendOne( _
    ReturnPhone As String, _
    objReceiver As IReceiver _
    objContents As IContents _
) As ISendResult
매개 변수
ReturnPhone
회신 번호
※ 주의: 회신 번호는 반드시 숫자로만 되어 있어야 합니다. 예를 들어 010-1234-1234 는 01012341234로 바꿔주어야 합니다.
objReceiver
수신자 휴대폰과 전송 메시지를 포함하는 수신자 정보
objContents
메시지 타입(SMS, LMS, MMS)과 메시지 내용, 이미지를 포함하는 컨텐츠
object
Message 객체
반환 값
접수 결과인 ISendResult 인터페이스를 반환합니다.
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수 값이 잘 못 됐다.
&H8007000E | 메모리가 부족하다.
EZSMS_E_NOTCONNECTED (&H8004A001) | 서버에 접속하지 못했다.
EZSMS_E_SERVERERROR (&8004A002) | 서버에서 처리중 오류가 발생했다.
EZSMS_E_LOGINFAIL (&8004A003) | 로그인에 실패하였다.
EZSMS_E_RECEIVERNOTFOUND (&H8004A005) | 전송할 수신자 정보가 없다.
EZSMS_E_NEEDFORCALL (&H8004A00A) | 잔여 콜 수가 부족하다.
EZSMS_E_FILEISTOOLARGE (&H8004A00C) | 이미지 파일의 용량이 너무 크다.
예제
Public objMessage As IMessage

Private Function SendOne() As Boolean
    Dim objReceiver As IReceiver
    Dim objContents As IContents
    Dim objSendResult As ISendResult
    Dim SendDate As Date
    Dim Report As String

    Send = False
    On Error Resume Next

    Set objContents = objMessage.CreateContents
    If Err.Number <> 0 Then Exit Function

    objContents.Type = EZSMS_MESSAGE_TYPE_LMS
    objContents.Subject = "문자 제목"

    SendDate = "2004-5-15 14:00:00"
    Set objReceiver = objMessage.CreateReceiverDirect("01012345678", "메시지1", EZSMS_RESERVATION, SendDate)
    If Err.Number <> 0 Then Exit Function

    Set objSendResult = objMessage.SendOne("01033334444", objReceiver, objContents)
    If Err.Number <> 0 Then Exit Function

    Report = objSendResult.Phone & " 번호로 메시지 접수 결과: "
    If objSendResult.Result = EZSMS_SUCCEEDED Then Report = Report & "성공" Else Report = Report & "실패"
    Debug.Print Report

    Send = True
End Function
참고 항목
IMessage 인터페이스 , SendOne 메서드 , RequestLog 메서드 , RequestLogDetail 메서드 , LoginInfo 속성


IMessage::UpdateLoginInfo 메서드

[C++]

구문
HRESULT UpdateLoginInfo(void);
반환 값
반환 값 | 의미
S_OK | 성공
EZSMS_E_NOTCONNECTED | 서버에 접속하지 못했다.
EZSMS_E_SERVERERROR | 서버에서 로그인 처리중 오류가 발생했다.
EZSMS_E_LOGINFAIL | 로그인에 실패하였다.
설명
이 메서드는 현재 설정된 사용자 계정 정보를 서버로부터 다시 읽어들여 값을 업데이트합니다. IMessage::LoginInfo속성으로 새로 업데이트된 내용을 받을 수 있습니다.
예제
extern IMessage* pMessage;
extern ILoginInfo* pLoginInfo;

pMessage->UpdateLoginInfo();

LONG lCall;
pLoginInfo->get_FreeCall(&lCall);
TRACE("남은 콜 수: %l\n", lCall);
[Visual Basic]

구문
object.UpdateLoginInfo()
매개 변수
object
Message 객체
에러 코드
에러 코드 | 의미
EZSMS_E_NOTCONNECTED (&H8004A001) | 서버에 접속하지 못했다.
EZSMS_E_SERVERERROR (&8004A002) | 서버에서 로그인 처리중 오류가 발생했다.
EZSMS_E_LOGINFAIL (&8004A003) | 로그인에 실패하였다.
예제
Public objMessage As IMessage
Public objLoginInfo As ILoginInfo

Private Sub UpdateLoginInfo()
    On Error Resume Next
    objMessage.UpdateLoginInfo
    Set objLoginInfo = objMessage.LoginInfo
    Debug.Print "남은 콜 수: " & objLoginInfo.FreeCall
End Sub
참고 항목
IMessage 인터페이스 IMessage::LoginInfo 속성 , EZSMS_E_CONSTANTS 열거


IMessage::ArrayBase 속성

[C++]

구문
HRESULT get_ArrayBase(LONG* pVal);

HRESULT put_ArrayBase(LONG newVal);
매개 변수
pVal
[out, retval] 컬렉션의 첫 인덱스 값을 얻을 포인터.
newVal
[in] 컬렉션의 첫 인덱스 값. 0 또는 1만 지정할 수 있습니다.
반환 값
반환 값 | 의미
S_OK | 성공
설명
ezSMSComponent는 IMessage::ArrayBase 속성을 통하여 컬렉션 객체의 시작 인덱스를 정할 수 있습니다. 비주얼 베이직 프로그래머는 루프를 돌면서 배열 값을 검색할 때 보통 1부터 인덱스를 지정합니다. 하지만 ezSMSComponent는 컬렉션의 인덱스가 기본적으로 0부터 시작하며, 1부터 시작하기 위해서는 ArrayBase 속성으로 값을 변경해야 합니다.
예제
extern IMessage* pMessage;
extern IReceivers* pReceivers;

pMessage->put_ArrayBase(1);

LONG nCnt = 0;
pReceivers->get_Count(&nCnt);

for(int i=1; i<=nCnt; i++)
{
    IDispatch* pDisp;
    pReceivers->get_Item(i, &pDisp);

    // ...
}
[Visual Basic]

구문
object.ArrayBase [= nBase]
매개 변수
nBase
컬렉션의 첫 인덱스 값. 0 또는 1만 지정할 수 있습니다.
object
Message 객체
반환 값
Long형의 컬렉션 첫 인덱스 값을 반환합니다.
예제
Public objMessage As IMessage
Public objReceivers As IReceivers

Private Sub ViewReceivers_Click()
    objMessage.ArrayBase = 1

    For I = 1 To objReceivers.Count
        Debug.Print objReceivers(I).Phone
    Next
End Sub
참고 항목
IMessage 인터페이스


IMessage::LoginInfo 속성

[C++]

구문
HRESULT get_LoginInfo(ILoginInfo** ppVal);
매개 변수
ppVal
[out, retval] 계정의 상태 정보를 받을 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
EZSMS_E_NOTLOGINED | 로그인 되어 있지 않다
설명
IMessage::SetAccountInfo로 사용자 계정 정보를 설정한 후 IMessage::UpdateLoginInfo 등의 메서드를 통하여 로그인이 성공하게 되면 Message는 LoginInfo 객체를 생성합니다. 클라이언트는 이 LoginInfo 속성을 통하여 LoginInfo 객체의 인터페이스를 얻을 수 있습니다.
만약 현재 로그인 상태가 아니라면 LoginInfo 객체는 없으므로 *ppVal은 NULL 값을 가지게 됩니다.
예제
extern IMessage* pMessage;

ILoginInfo* pLoginInfo = NULL;
HRESULT hr = pMessage->get_LoginInfo(&pLoginInfo);

if(SUCCEEDED(hr))
{
    BSTR bstrUserID;
    pLoginInfo->get_UserID(&bstrUserID);
    TRACE("사용자 ID: %s\n", (LPCTSTR)_bstr_t(bstrUserID));

    SysFreeString(bstrUserID);
    pLoginInfo->Release();
}
[Visual Basic]

구문
' 읽기전용
[ppLoginInfo =] object.LoginInfo
매개 변수
ppLoginInfo
LoginInfo 객체를 저장할 ILoginInfo형 변수
object
Message 객체
에러 코드
에러 코드 | 의미
EZSMS_E_NOTLOGINED (&8004A007) | 로그인 되어 있지 않다
예제
Public objMessage As IMessage

Private Sub ViewLoginInfo_Click()
    Dim objLoginInfo As ILoginInfo

    On Error Resume Next
    Set objLoginInfo = objMessage.LoginInfo
    If Err.Number = 0 Then
        Debug.Print "사용자 ID: " & objLoginInfo.UserID
        Debug.Print "로그인 상태: " & objLoginInfo.Logined
    End If
End Sub
참고 항목
IMessage 인터페이스 , IMessage::SetAccountInfo 메서드 , IMessage::UpdateLoginInfo 메서드


IMessage::VersionMajor 속성

[C++]

구문
HRESULT get_VersionMajor(LONG* pVal);
매개 변수
pVal
[out, retval] 컴포넌트의 메이저 버전 정보를 받을 LONG형 포인터 변수.
반환 값
반환 값 | 의미
S_OK | 성공
설명
ezSMS Component의 버전정보 중 Major 버전 정보(소숫점 왼쪽의 정수)를 반환합니다.
[Visual Basic]

구문
' 읽기전용
[pMajorVersion =] object.VersionMajor
매개 변수
pMajorVersion
메이저 버전 정보를 저장할 Long형 변수
object
Message 객체
참고 항목
IMessage 인터페이스


IMessage::VersionMinor 속성

[C++]

구문
HRESULT get_VersionMinor(LONG* pVal);
매개 변수
pVal
[out, retval] 컴포넌트의 마이너 버전 정보를 받을 LONG형 포인터 변수.
반환 값
반환 값 | 의미
S_OK | 성공
설명
ezSMS Component의 버전정보 중 Minor 버전 정보(소숫점 아래 숫자)를 반환합니다.
[Visual Basic]

구문
' 읽기전용
[pMinorVersion =] object.VersionMinor
매개 변수
pMinorVersion
마이너 버전 정보를 저장할 Long형 변수
object
Message 객체
참고 항목
IMessage 인터페이스


ICancelResult 인터페이스

 전송 취소 결과를 가지고 있습니다.

ICancelResult 속성
CountFailure 속성 | 세부 내역 중 취소 실패한 개수
CountSucceed 속성 | 세부 내역 중 취소 성공한 개수
CountTotal 속성 | 세부 내역 총 개수
Date 속성 | 요청 날짜
Index 속성 | 로그 인덱스
Result 속성 | 취소 결과

인터페이스 정보
IID | DDE2FC89-AB1D-4DA3-963E-01BD6D47FF5A
Implementation | CancelResult 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 3.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ICancelResult::CountFailure 속성

[C++]

구문
HRESULT get_CountFailure(LONG* pVal);
매개 변수
pVal
[out, retval] 실패한 개수를 받을 LONG 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
CountFailure는 해당 전송 내역에 묶여 있는 세부 내역 중 전송을 취소할 때 실패한 개수를 뜻합니다.
예제
extern ICancelResult* pResult;

LONG lCountFailure, lCountSucceed, lCountTotal;
pResult->get_CountFailure(&lCountFailure);
pResult->get_CountSucceed(&lCountSucceed);
pResult->get_CountTotal(&lCountTotal);

if(lCountTotal == lCountSucceed)
{
    TRACE("예약 취소 성공\n");
}
else if(lCountTotal == lCountFailure)
{
    TRACE("예약 취소 실패\n");
}
else
{
    TRACE("예약 취소: %d개 중 %d개 성공\n", lCountTotal, lCountSucceed);
}
[Visual Basic]

구문
' 읽기전용
[pCountFailure =] object.CountFailure
매개 변수
pCountFailure
실패한 개수를 저장할 Long형 변수.
object
CancelResult 객체
예제
Private Sub 예약취소(Res As ICancelResult)
    If Res.CountTotal = Res.CountSucceed Then
        Debug.Print "예약 취소 성공"
    ElseIf Res.CountTotal = Res.CountFailure Then
        Debug.Print "예약 취소 실패"
    Else
        Debug.Print "예약 취소: " & Str(Res.CountTotal) & "개 중 " & Str(Res.CountSucceed) & "개 성공"
    End If
End Sub
참고 항목
ICancelResult 인터페이스
, IMessage::CancelReservation 메서드
, IMessage::CancelReservationByList 메서드
, IMessage::CancelReservationByList 메서드


ICancelResult::CountSucceed 속성

[C++]

구문
HRESULT get_CountSucceed(LONG* pVal);
매개 변수
pVal
[out, retval] 성공한 개수를 받을 LONG 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
CountSucceed는 해당 전송 내역에 묶여 있는 세부 내역 중 취소 성공된 개수를 뜻합니다.
예제
extern ICancelResult* pResult;

LONG lCountFailure, lCountSucceed, lCountTotal;
pResult->get_CountFailure(&lCountFailure);
pResult->get_CountSucceed(&lCountSucceed);
pResult->get_CountTotal(&lCountTotal);

if(lCountTotal == lCountSucceed)
{
    TRACE("예약 취소 성공\n");
}
else if(lCountTotal == lCountFailure)
{
    TRACE("예약 취소 실패\n");
}
else
{
    TRACE("예약 취소: %d개 중 %d개 성공\n", lCountTotal, lCountSucceed);
}
[Visual Basic]

구문
' 읽기전용
[pCountSucceed =] object.CountSucceed
매개 변수
pCountSucceed
성공한 개수를 저장할 Long형 변수.
object
CancelResult 객체
예제
Private Sub 예약취소(Res As ICancelResult)
    If Res.CountTotal = Res.CountSucceed Then
        Debug.Print "예약 취소 성공"
    ElseIf Res.CountTotal = Res.CountFailure Then
        Debug.Print "예약 취소 실패"
    Else
        Debug.Print "예약 취소: " & Str(Res.CountTotal) & "개 중 " & Str(Res.CountSucceed) & "개 성공"
    End If
End Sub
참고 항목
ICancelResult 인터페이스
, IMessage::CancelReservation 메서드
, IMessage::CancelReservationByList 메서드
, IMessage::CancelReservationByList 메서드


ICancelResult::CountTotal 속성

[C++]

구문
HRESULT get_CountTotal(LONG* pVal);
매개 변수
pVal
[out, retval] 세부 작업 총 개수를 받을 LONG 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
CountTotal은 해당 전송 내역에 묶여 있는 세부 내역의 전체 개수입니다. 만약 이 개수가 0이면서 Result 속성 값이 EZSMS_FAILED라면 해당 로그가 데이터베이스에 없는 상태입니다.
예제
extern ICancelResult* pResult;

LONG lCountFailure, lCountSucceed, lCountTotal;
pResult->get_CountFailure(&lCountFailure);
pResult->get_CountSucceed(&lCountSucceed);
pResult->get_CountTotal(&lCountTotal);

if(lCountTotal == lCountSucceed)
{
    TRACE("예약 취소 성공\n");
}
else if(lCountTotal == lCountFailure)
{
    TRACE("예약 취소 실패\n");
}
else
{
    TRACE("예약 취소: %d개 중 %d개 성공\n", lCountTotal, lCountSucceed);
}
[Visual Basic]

구문
' 읽기전용
[pCountTotal =] object.CountTotal
매개 변수
pCountTotal
세부 작업 총 개수를 저장할 Long형 변수.
object
CancelResult 객체
예제
Private Sub 취소결과(Res As ICancelResult)
    If Res.CountTotal = Res.CountSucceed Then
        Debug.Print "예약 취소 성공"
    ElseIf Res.CountTotal = Res.CountFailure Then
        Debug.Print "예약 취소 실패"
    Else
        Debug.Print "예약 취소: " & Str(Res.CountTotal) & "개 중 " & Str(Res.CountSucceed) & "개 성공"
    End If
End Sub
참고 항목
ICancelResult 인터페이스
, IMessage::CancelReservation 메서드
, IMessage::CancelReservationByList 메서드
, IMessage::CancelReservationByList 메서드


ICancelResult::Date 속성

[C++]

구문
HRESULT get_Date(BSTR* pVal);
매개 변수
pVal
[out, retval] 날짜를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 취소 요청한 날짜를 그대로 담고 있습니다. CancelReservationByLists 메서드로 여러개의 전송 내역을 한꺼번에 취소할 때 이 속성이 유용하게 사용될 수 있습니다.

이 날짜의 문자열은 200404 같이 년도 4자리와 월 2자리로 구성되어 있습니다.
예제
extern IMessage* pMessage;

void Cancel(LONG nYear, LONG nMonth, BSTR bstrIndex, EZSMS_MESSAGE_TYPE Type)
{
    ICancelResult* pCancelResult;
    HRESULT hr = pMessage->CancelReservation(nYear, nMonth, bstrIndex, Type, &pCancelResult);
    if(SUCCEEDED(hr))
    {
        BSTR bstrCancelDate = NULL;
        BSTR bstrCancelIndex = NULL;

        pCancelResult->get_Date(&bstrCancelDate);
        pCancelResult->get_Index(&bstrCancelIndex);

        LONG nCancelYearMonth = atol(_bstr_t(bstrCancelIndex));
        LONG nCancelYear = nCancelYearMonth / 100;
        LONG nCancelMonth = nCancelYearMonth % 100;
        assert(nYear == nCancelYear && nMonth == nCancelMonth);
        assert(_bstr_t(bstrIndex) == _bstr_t(bstrCancelIndex));

        SysFreeString(bstrCancelIndex);
        SysFreeString(bstrCancelDate);
        pCancelResult->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[pDate =] object.Date
매개 변수
pDate
날짜를 저장할 String형 변수.
object
CancelResult 객체
예제
Public objMessage As IMessage

Private Function CancelReservation(objLogList As ILogList) As Boolean
    Dim objCancelResult As ICancelResult

    Set objCancelResult = objMessage.CancelReservationByList(objLogList)
    If objLogList.Date <> objCancelResult.Date Or objLogList.Index <> objCancelResult.Index Then MsgBox "엉뚱한 것을 예약 취소?"

    ' ...

    Set objCancelResult = Nothing
End Function
참고 항목
ICancelResult 인터페이스
, IMessage::CancelReservation 메서드
, IMessage::CancelReservationByList 메서드
, IMessage::CancelReservationByLists 메서드


ICancelResult::Index 속성

[C++]

구문
HRESULT get_Index(BSTR* pVal);
매개 변수
pVal
[out, retval] 로그의 고유 Index 번호를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 CancelReservation 메서드의 Index 인자 값을 그대로 담고 있습니다.
예제
extern IMessage* pMessage;

void Cancel(LONG nYear, LONG nMonth, BSTR bstrIndex, EZSMS_MESSAGE_TYPE Type)
{
    ICancelResult* pCancelResult;
    HRESULT hr = pMessage->CancelReservation(nYear, nMonth, bstrIndex, Type, &pCancelResult);
    if(SUCCEEDED(hr))
    {
        BSTR bstrCancelDate = NULL;
        BSTR bstrCancelIndex = NULL;

        pCancelResult->get_Date(&bstrCancelDate);
        pCancelResult->get_Index(&bstrCancelIndex);

        LONG nCancelYearMonth = atol(_bstr_t(bstrCancelIndex));
        LONG nCancelYear = nCancelYearMonth / 100;
        LONG nCancelMonth = nCancelYearMonth % 100;
        assert(nYear == nCancelYear && nMonth == nCancelMonth);
        assert(_bstr_t(bstrIndex) == _bstr_t(bstrCancelIndex));

        SysFreeString(bstrCancelIndex);
        SysFreeString(bstrCancelDate);
        pCancelResult->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[pIndex =] object.Index
매개 변수
pIndex
로그의 고유 Index 번호를 저장할 String형 변수.
object
CancelResult 객체
예제
Public objMessage As IMessage

Private Function CancelReservation(objLogList As ILogList) As Boolean
    Dim objCancelResult As ICancelResult

    Set objCancelResult = objMessage.CancelReservationByList(objLogList)
    If objLogList.Date <> objCancelResult.Date Or objLogList.Index <> objCancelResult.Index Then MsgBox "엉뚱한 것을 예약 취소?"

    ' ...

    Set objCancelResult = Nothing
End Function
참고 항목
ICancelResult 인터페이스
, IMessage::CancelReservation 메서드
, IMessage::CancelReservationByList 메서드
, IMessage::CancelReservationByList 메서드


ICancelResult::Result 속성

[C++]

구문
HRESULT get_Result(EZSMS_RESULT* pVal);
매개 변수
pVal
[out, retval] 취소 결과를 저장할 EZSMS_RESULT 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
세부 내역이 모두 취소되었을 때 EZSMS_SUCCEEDED를 반환하며 세부 내역중 하나라도 취소 실패가 일어나는 경우는 EZSMS_FAILED가 됩니다. 만약 EZSMS_FAILED이면서 CountTotal 속성 값이 0이라면 해당 로그가 데이터베이스에 없는 상태입니다.
[Visual Basic]

구문
' 읽기전용
[pResult =] object.Result
매개 변수
pResult
취소 결과를 저장할 EZSMS_RESULT형 변수.
object
CancelResult 객체
참고 항목
ICancelResult 인터페이스
, IMessage::CancelReservation 메서드
, IMessage::CancelReservationByList 메서드
, IMessage::CancelReservationByLists 메서드


ICancelResults 인터페이스 (컬렉션)

 전송 취소 결과(ICancelResult)의 컬렉션 인터페이스입니다.

ICancelResults 속성
_NewEnum 속성 | ICancelResult 인터페이스의 집합인 IEnumVARIANT 인터페이스를 리턴합니다.
Count 속성 | ICancelResult 아이템의 수를 리턴합니다.
Item 속성 | 지정한 인덱스의 CancelResult 객체에 대한 IDispatch 인터페이스를 리턴합니다.

인터페이스 정보
IID | 08A056A6-8F81-4CC8-A806-A6452581005A
Implementation | CancelResults 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 3.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ICancelResults::_NewEnum 속성

[C++]

구문
HRESULT get__NewEnum(IUnknown** pVal);
매개 변수
pVal
[out, retval] ICancelResult 인터페이스의 VARIANT 배열이 구현되어 있는 IEnumVARIANT의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | pVal 인자가 NULL이다.
E_OUTOFMEMORY | 메모리가 부족하다.
설명
이 속성은 C++보다는 Visual Basic이나 Scripting 계열의 언어에서 사용하기 위해 마련된 속성입니다. 예를 들어 Visual Basic의 For Each ... Next문은 컬렉션 인터페이스의 get__NewEnum 속성을 통해 객체를 반복하는 방법을 얻습니다.
[Visual Basic]

예제
Public objCancelResults As ICancelResults

Private Sub ViewCancelResults_Click()
    Dim objCancelResult As ICancelResult
    For Each objCancelResult In objCancelResults
        Debug.Print "성공여부: " & objCancelResult.Result
    Next
End Sub
참고 항목
ICancelResults 컬렉션 , ICancelResult 인터페이스


ICancelResults::Count 속성

[C++]

구문
HRESULT get_Count(LONG* pVal);
매개 변수
pVal
[out, retval] 컬렉션 내에 ICancelResult 인터페이스의 개수가 저장될 LONG 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
컬렉션 내에 CancelResult 객체의 개수를 세는 역할을 합니다.
예제
extern ICancelResults* pCancelResults;

LONG nCnt = 0;
pCancelResults->get_Count(&nCnt);

for(int i=0; i<nCnt; i++)
{
    IDispatch* pDisp = NULL;
    if(SUCCEEDED(pCancelResults->get_Item(i, &pDisp)))
    {
        ICancelResult* pCancelResult = NULL;
        if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ICancelResult), (void**)&pCancelResult)))
        {
            // 처리
            pCancelResult->Release();
        }
        pDisp->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[pCount =] object.Count
매개 변수
pCount
컬렉션 내 CancelResult 객체의 개수를 저장할 Long형 변수
object
ICancelResults 컬렉션
예제
Public objCancelResults As ICancelResults

Private Sub ViewCancelResults_Click()
    Dim objCancelResult As ICancelResult
    For I = 0 To objCancelResults.Count
        Set objCancelResult = objCancelResults(I)
        Debug.Print "취소된 상세 내역 개수: " & objCancelResult.CountSucceed
        Set objCancelResult = Nothing
    Next
End Sub
참고 항목
ICancelResults 컬렉션 , ICancelResult 인터페이스


ICancelResults::Item 속성

[C++]

구문
HRESULT get_Item(
    LONG nIndex,
    IDispatch** pVal
);
매개 변수
nIndex
[in] 컬렉션에서 데이터를 얻고자 하는 인덱스 지정
pVal
[out, retval] 컬렉션 중 nIndex에 위치한 아이템을 얻어올 IDispatch 인터페이스의 포인터의 포인터.
얻어온 아이템에서 ICancelResult 인터페이스를 쿼리(QueryInterface)하여 사용할 수 있다.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | pVal 인자가 NULL이다.
E_INVALIDARG | 매개 변수의 범위가 잘 못 됐다.
E_OUTOFMEMORY | 메모리가 부족하다.
설명
컬렉션 내 특정 위치에 있는 CancelResult 객체의 인터페이스를 얻습니다.
예제
extern ICancelResults* pCancelResults;

LONG nCnt = 0;
pCancelResults->get_Count(&nCnt);

for(int i=0; i<nCnt; i++)
{
    IDispatch* pDisp = NULL;
    if(SUCCEEDED(pCancelResults->get_Item(i, &pDisp)))
    {
        ICancelResult* pCancelResult = NULL;
        if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ICancelResult), (void**)&pCancelResult)))
        {
            // 처리
            pCancelResult->Release();
        }
        pDisp->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[ppCancelResult =] object.Item(Index As Long)
매개 변수
ppCancelResult
ICancelResult 인터페이스를 저장할 변수
Index
컬렉션에서 데이터를 얻고자 하는 인덱스
object
ICancelResults 컬렉션
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수의 범위가 잘 못 됐다.
&H8007000E | 메모리가 부족하다.
예제
Public objCancelResults As ICancelResults

Private Sub ViewCancelResults_Click()
    Dim objCancelResult As ICancelResult
    For I = 0 To objCancelResults.Count
        Set objCancelResult = objCancelResults.Item(I)
        Debug.Print "상세 내역 취소 실패 개수: " & objCancelResult.CountFailure
        Set objCancelResult = Nothing
    Next
End Sub
참고 항목
ICancelResults 컬렉션 , ICancelResult 인터페이스


IContents 인터페이스

 메시지를 전송할 때 사용되는 문자 내용, 제목, 이미지 정보입니다.

IContents 속성과 메서드
AddImageFile 메서드 | 이미지 파일을 추가한다.
AddJPEGImageStream 메서드 | JPEG 이미지 스트림을 추가한다.
ImageCount 속성 | 추가된 이미지 개수
ImageSize 속성 | 추가된 이미지 사이즈(Bytes)
Message 속성 | 전송할 메시지 내용
Subject 속성 | 전송할 메시지의 제목(LMS, MMS에서 사용)
Type 속성 | 전송할 메시지 타입 (SMS, LMS, MMS)

인터페이스 정보
IID | 463AD8E7-5480-4EB0-9CB9-5B1E25978C18
Implementation | Contents 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 4.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


IContents::AddImageFile 메서드

[C++]

구문
HRESULT AddImageFile(BSTR imageFilePath,  LONG* pVal);;
매개 변수
imageFilePath
[in] 추가할 이미지 파일 경로
pVal
[out, retval] 추가된 이미지 파일의 사이즈
반환 값
반환 값 | 의미
S_OK | 성공
EZSMS_E_NOTADDED | 이미지 파일이 추가되지 않았다.
설명
IMessage::Send 또는 IMessage::SendOne으로 MMS 메시지를 전송할 때 이미지를 포함시키기 위해 사용합니다. JPG, PNG 등의 포맷을 사용할 수 있습니다.
예제
extern IMessage *pMessage;
extern IReceivers *pReceivers;
extern IContents *pContents;

HRESULT hr;
hr = pContents->AddImageFile(L"C:\\temp\\myimage.jpg");
if(SUCCEEDED(hr))
{
    hr = pMessage->Send(myPhoneNumber, pReceivers, pContents);
    // ...
}
[Visual Basic]

구문
object.AddImageFile(imageFilePath As String) As Long
매개 변수
imageFilePath
[in] 추가할 이미지 파일 경로
object
Contents 객체
반환 값
추가된 이미지의 용량(Byte)을 반환합니다.
에러 코드
에러 코드 | 의미
&H8004A00B | 이미지 파일이 추가되지 않았다.
참고 항목
IContents::AddJPEGImageStream 메서드, IContents::ImageCount 속성, IContents::ImageSize 속성


IContents::AddJPEGImageStream 메서드

[C++]

구문
HRESULT AddJPEGImageStream(IStream *JPEGImageStream, LONG* pVal);
매개 변수
JPEGImageStream
[in] 추가할 JPEG 이미지 스트림
pVal
[out, retval] 추가된 이미지 파일의 사이즈
반환 값
반환 값 | 의미
S_OK | 성공
EZSMS_E_NOTADDED | 이미지 파일이 추가되지 않았다.
설명
IMessage::Send 또는 IMessage::SendOne으로 MMS 메시지를 전송할 때 이미지를 포함시키기 위해 사용합니다. JPEG 포맷으로 저장되어 있는 스트림만 사용할 수 있습니다.
예제
extern IMessage *pMessage;
extern IReceivers *pReceivers;
extern IContents *pContents;
extern IStream *pJPEGImage;

HRESULT hr;
LONG size = 0;
hr = pContents->AddJPEGImageStream(pJPEGImage, &size);
if(SUCCEEDED(hr))
{
    hr = pMessage->Send(myPhoneNumber, pReceivers, pContents);
    // ...
}
[Visual Basic]

구문
object.AddJPEGImageStream(JPEGImageStream As IStream) As Long

주의: 자동화 방식에서는 이 메서드를 사용할 수 없습니다.
매개 변수
JPEGImageStream
[in] 추가할 JPEG 이미지 스트림
object
Contents 객체
반환 값
추가된 이미지의 용량(Byte)을 반환합니다.
에러 코드
에러 코드 | 의미
&H8004A00B | 이미지 파일이 추가되지 않았다.
참고 항목
IContents::AddImageFile 메서드, IContents::ImageCount 속성, IContents::ImageSize 속성


IContents::ImageCount 속성

[C++]

구문
HRESULT get_ImageCount(LONG* pVal);
매개 변수
pVal
[out, retval] 추가된 이미지 개수를 얻어올 포인터
반환 값
반환 값 | 의미
S_OK | 성공
설명
예제
extern IMessage* pMessage;
extern IContents* pContents;

LONG nImageCount = 0;
pContents->get_ImageCount(&nImageCount);
[Visual Basic]

구문
object.ImageCount
반환 값
추가된 이미지 개수를 반환합니다.
예제
Public objMessage As IMessage

Private Sub Test()
    Dim objContents As IContents

    Set objContents = objMessage.CreateContents()

    Debug.Print objContents.ImageCount
End Sub
참고 항목
IContents 인터페이스


IContents::ImageSize 속성

[C++]

구문
HRESULT get_ImageSize(LONG* pVal);
매개 변수
pVal
[out, retval] 추가된 이미지 전체의 용량(Byte)을 얻어올 포인터
반환 값
반환 값 | 의미
S_OK | 성공
설명
예제
extern IMessage* pMessage;
extern IContents* pContents;

LONG nImageSize = 0;
pContents->get_ImageSize(&nImageSize);
[Visual Basic]

구문
object.ImageSize
반환 값
추가된 이미지의 전체 용량(Byte)을 반환합니다.
예제
Public objMessage As IMessage

Private Sub Test()
    Dim objContents As IContents

    Set objContents = objMessage.CreateContents()

    Debug.Print objContents.ImageSize
End Sub
참고 항목
IContents 인터페이스


IContents::Message 속성

[C++]

구문
HRESULT get_Message(BSTR* pVal);

HRESULT put_Message(BSTR newVal);
매개 변수
pVal
[out, retval] 전송메시지 내용을 받기 위한 BSTR 포인터
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
newVal
[in] 새로 설정할 전송메시지
반환 값
반환 값 | 의미
S_OK | 성공
설명
예제
extern IMessage* pMessage;

IContents* pContents;
pMessage->CreateContents(&pContents);

pContents>put_Message(L"저는 www.CEnA.co.kr SpeedVB, ArmyDay 개발자입니다");

BSTR bstrMessage;
pContents>get_Message(&bstrMessage);

ASSERT(wcscmp(bstrMessage, L"저는 www.CEnA.co.kr SpeedVB, ArmyDay 개발자입니다") == 0);

SysFreeString(bstrMessage);
pContents>Release();
[Visual Basic]

구문
object.Message [= newVal]
매개 변수
newVal
새로 설정할 전송메시지
object
Receiver 객체
반환 값
String형의 전송 메시지의 내용을 반환합니다.
예제
Public objMessage As IMessage

Private Sub Test()
    Dim objContents As IContents

    Set objContents = objMessage.CreateContents()
    objContents.Message = "프로그래밍 노하우는 결코 몇년만에 쌓이는게 아닙니다. 더욱 노력합시다"

    Debug.Print objContents.Message
End Sub
참고 항목
IContents 인터페이스


IContents::Subject 속성

[C++]

구문
HRESULT get_Subject(BSTR* pVal);

HRESULT put_Subject(BSTR newVal);
매개 변수
pVal
[out, retval] 전송메시지에 대한 제목을 받기 위한 BSTR 포인터
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
newVal
[in] 새로 설정할 전송메시지의 제목
반환 값
반환 값 | 의미
S_OK | 성공
설명
예제
extern IMessage* pMessage;

IContents* pContents;
pMessage->CreateContents(&pContents);

pContents->put_Subject(L"CEnA 인생시계 이벤트");

BSTR bstrSubject;
pContents->get_Subject(&bstrSubject);

ASSERT(wcscmp(bstrSubject, L"CEnA 인생시계 이벤트") == 0);

SysFreeString(bstrSubject);
pContents->Release();
[Visual Basic]

구문
object.Subject [= newVal]
매개 변수
newVal
새로 설정할 전송메시지의 제목
object
Contents 객체
반환 값
String형의 전송 메시지의 내용을 반환합니다.
예제
Public objMessage As IMessage

Private Sub Test()
    Dim objContents As IContents

    Set objContents = objMessage.CreateContents()
    objContents.Subject = "CEnA 개발자입니다."

    Debug.Print objContents.Subject
End Sub
참고 항목
IContents 인터페이스


IContents::Type 속성

[C++]

구문
HRESULT get_Type(EZSMS_MESSAGE_TYPE* pVal);

HRESULT put_Type(EZSMS_MESSAGE_TYPE newVal);
매개 변수
pVal
[out, retval] 메시지 타입을 받기 위한 EZSMS_MESSAGE_TYPE 포인터
newVal
[in] 새로 설정할 메시지 타입 (EZSMS_MESSAGE_TYPE 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
예제
extern IMessage* pMessage;

IContents* pContents;
pMessage->CreateContents(&pContents);

pContents>put_Type(EZSMS_MESSAGE_TYPE_MMS);

EZSMS_MESSAGE_TYPE Type;
pContents->get_Type(&Type);

ASSERT(Type == EZSMS_MESSAGE_TYPE_MMS);

pContents->Release();
[Visual Basic]

구문
object.Type [= newVal]
매개 변수
newVal
새로 설정할 메시지 타입
object
Contents 객체
반환 값
EZSMS_MESSAGE_TYPE형의 메시지 타입을 반환합니다.
예제
Public objMessage As IMessage

Private Sub Test()
    Dim objContents As IContents

    Set objContents = objMessage.CreateContents()
    objContents.Type = EZSMS_MESSAGE_TYPE_LMS

    Debug.Print objContents.Type
End Sub
참고 항목
IContents 인터페이스 , EZSMS_MESSAGE_TYPE 열거


IDeleteResult 인터페이스

 전송 내역 삭제 결과를 가지고 있습니다.

IDeleteResult 속성
Date 속성 | 요청 날짜
Index 속성 | 로그 인덱스
Result 속성 | 삭제 결과

인터페이스 정보
IID | A3491DB1-8E08-4235-98AF-8ECF424021BC
Implementation | DeleteResult 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 3.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


IDeleteResult::Date 속성

[C++]

구문
HRESULT get_Date(BSTR* pVal);
매개 변수
pVal
[out, retval] 날짜를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 삭제 요청한 날짜를 그대로 담고 있습니다. DeleteLogByLists 메서드로 여러개의 전송 내역을 한꺼번에 삭제할 경우 이 속성이 유용하게 사용될 수 있습니다.

이 날짜의 문자열은 200404 같이 년도 4자리와 월 2자리로 구성되어 있습니다.
예제
extern IMessage* pMessage;

void Delete(LONG nYear, LONG nMonth, BSTR bstrIndex, EZSMS_MESSAGE_TYPE Type)
{
    IDeleteResult* pDeleteResult;
    HRESULT hr = pMessage->DeleteLog(nYear, nMonth, bstrIndex, Type, &pDeleteResult);
    if(SUCCEEDED(hr))
    {
        BSTR bstrDeleteDate;
        BSTR bstrDeleteIndex;

        pDeleteResult->get_Date(&bstrDeleteDate);
        pDeleteResult->get_Index(&bstrDeleteIndex);

        LONG nDeleteYearMonth = atol(_bstr_t(bstrDeleteIndex));
        LONG nDeleteYear = nDeleteYearMonth / 100;
        LONG nDeleteMonth = nDeleteYearMonth % 100;
        assert(nYear == nDeleteYear && nMonth == nDeleteMonth);
        assert(_bstr_t(bstrIndex) == _bstr_t(bstrDeleteIndex));

        SysFreeString(bstrDeleteIndex);
        SysFreeString(bstrDeleteDate);
        pDeleteResult->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[pDate =] object.Date
매개 변수
pDate
날짜를 저장할 String형 변수.
object
DeleteResult 객체
예제
Public objMessage As IMessage

Private Function DeleteLog(objLogList As ILogList) As Boolean
    Dim objDeleteResult As IDeleteResult

    Set objDeleteResult = objMessage.DeleteLogByList(objLogList)
    If objLogList.Date <> objDeleteResult.Date Or objLogList.Index <> objDeleteResult.Index Then MsgBox "엉뚱한 것을 삭제?"

    ' ...

    Set objDeleteResult = Nothing
End Function
참고 항목
IDeleteResult 인터페이스
, IMessage::DeleteLog 메서드
, IMessage::DeleteLogByList 메서드
, IMessage::DeleteLogByLists 메서드


IDeleteResult::Index 속성

[C++]

구문
HRESULT get_Index(BSTR* pVal);
매개 변수
pVal
[out, retval] 로그의 고유 Index 번호를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 DeleteLog 메서드의 Index 인자 값을 그대로 담고 있습니다.
예제
extern IMessage* pMessage;

void Delete(LONG nYear, LONG nMonth, BSTR bstrIndex, EZSMS_MESSAGE_TYPE Type)
{
    IDeleteResult* pDeleteResult;
    HRESULT hr = pMessage->DeleteLog(nYear, nMonth, bstrIndex, Type, &pDeleteResult);
    if(SUCCEEDED(hr))
    {
        BSTR bstrDeleteDate;
        BSTR bstrDeleteIndex;

        pDeleteResult->get_Date(&bstrDeleteDate);
        pDeleteResult->get_Index(&bstrDeleteIndex);

        LONG nDeleteYearMonth = atol(_bstr_t(bstrDeleteIndex));
        LONG nDeleteYear = nDeleteYearMonth / 100;
        LONG nDeleteMonth = nDeleteYearMonth % 100;
        assert(nYear == nDeleteYear && nMonth == nDeleteMonth);
        assert(_bstr_t(bstrIndex) == _bstr_t(bstrDeleteIndex));

        SysFreeString(bstrDeleteIndex);
        SysFreeString(bstrDeleteDate);
        pDeleteResult->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[pIndex =] object.Index
매개 변수
pIndex
로그의 고유 Index 번호를 저장할 String형 변수.
object
DeleteResult 객체
예제
Public objMessage As IMessage

Private Function DeleteLog(objLogList As ILogList) As Boolean
    Dim objDeleteResult As IDeleteResult

    Set objDeleteResult = objMessage.DeleteLogByList(objLogList)
    If objLogList.Date <> objDeleteResult.Date Or objLogList.Index <> objDeleteResult.Index Then MsgBox "엉뚱한 것을 삭제?"

    ' ...

    Set objDeleteResult = Nothing
End Function
참고 항목
IDeleteResult 인터페이스
, IMessage::DeleteLog 메서드
, IMessage::DeleteLogByList 메서드
, IMessage::DeleteLogByLists 메서드


IDeleteResult::Result 속성

[C++]

구문
HRESULT get_Result(EZSMS_RESULT* pVal);
매개 변수
pVal
[out, retval] 삭제 결과를 저장할 EZSMS_RESULT 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 전송 내역 삭제 여부를 나타냅니다. EZSMS_SUCCEEDED를 리턴하면 삭제 성공, EZSMS_FAILED를 리턴하면 실패를 뜻합니다.
[Visual Basic]

구문
' 읽기전용
[pResult =] object.Result
매개 변수
pResult
삭제 결과를 저장할 EZSMS_RESULT형 변수.
object
DeleteResult 객체
참고 항목
IDeleteResult 인터페이스
, IMessage::DeleteLog 메서드
, IMessage::DeleteLogByList 메서드
, IMessage::DeleteLogByLists 메서드


IDeleteResults 인터페이스 (컬렉션)

 전송내역 삭제결과(IDeleteResult)의 컬렉션 인터페이스입니다.

IDeleteResults 속성
_NewEnum 속성 | IDeleteResult 인터페이스의 집합인 IEnumVARIANT 인터페이스를 리턴합니다.
Count 속성 | IDeleteResult 아이템의 수를 리턴합니다.
Item 속성 | 지정한 인덱스의 DeleteResult 객체에 대한 IDispatch 인터페이스를 리턴합니다.

인터페이스 정보
IID | 94A68FBC-CFBA-445F-9127-E601DC3365D1
Implementation | DeleteResults 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 3.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


IDeleteResults::_NewEnum 속성

[C++]

구문
HRESULT get__NewEnum(IUnknown** pVal);
매개 변수
pVal
[out, retval] IDeleteResult 인터페이스의 VARIANT 배열이 구현되어 있는 IEnumVARIANT의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | pVal 인자가 NULL이다.
E_OUTOFMEMORY | 메모리가 부족하다.
설명
이 속성은 C++보다는 Visual Basic이나 Scripting 계열의 언어에서 사용하기 위해 마련된 속성입니다. 예를 들어 Visual Basic의 For Each ... Next문은 컬렉션 인터페이스의 get__NewEnum 속성을 통해 객체를 반복하는 방법을 얻습니다.
[Visual Basic]

예제
Public objDeleteResults As IDeleteResults

Private Sub ViewDeleteResults_Click()
    Dim objDeleteResult As IDeleteResult
    For Each objDeleteResult In objDeleteResults
        Debug.Print "성공여부: " & objDeleteResult.Result
    Next
End Sub
참고 항목
IDeleteResults 컬렉션 , IDeleteResult 인터페이스


IDeleteResults::Count 속성

[C++]

구문
HRESULT get_Count(LONG* pVal);
매개 변수
pVal
[out, retval] 컬렉션 내에 IDeleteResult 인터페이스의 개수가 저장될 LONG 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
컬렉션 내에 DeleteResult 객체의 개수를 세는 역할을 합니다.
예제
extern IDeleteResults* pDeleteResults;

LONG nCnt = 0;
pDeleteResults->get_Count(&nCnt);

for(int i=0; i<nCnt; i++)
{
    IDispatch* pDisp = NULL;
    if(SUCCEEDED(pDeleteResults->get_Item(i, &pDisp)))
    {
        IDeleteResult* pDeleteResult = NULL;
        if(SUCCEEDED(pDisp->QueryInterface(__uuidof(IDeleteResult), (void**)&pDeleteResult)))
        {
            // 처리
            pDeleteResult->Release();
        }
        pDisp->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[pCount =] object.Count
매개 변수
pCount
컬렉션 내 DeleteResult 객체의 개수를 저장할 Long형 변수
object
IDeleteResults 컬렉션
예제
Public objDeleteResults As IDeleteResults

Private Sub ViewDeleteResults_Click()
    Dim objDeleteResult As IDeleteResult
    For I = 0 To objDeleteResults.Count
        Set objDeleteResult = objDeleteResults(I)
        Debug.Print "성공 여부: " & objDeleteResult.Result
        Set objDeleteResult = Nothing
    Next
End Sub
참고 항목
IDeleteResults 컬렉션 , IDeleteResult 인터페이스


IDeleteResults::Item 속성

[C++]

구문
HRESULT get_Item(
    LONG nIndex,
    IDispatch** pVal
);
매개 변수
nIndex
[in] 컬렉션에서 데이터를 얻고자 하는 인덱스 지정
pVal
[out, retval] 컬렉션 중 nIndex에 위치한 아이템을 얻어올 IDispatch 인터페이스의 포인터의 포인터.
얻어온 아이템에서 IDeleteResult 인터페이스를 쿼리(QueryInterface)하여 사용할 수 있다.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | pVal 인자가 NULL이다.
E_INVALIDARG | 매개 변수의 범위가 잘 못 됐다.
E_OUTOFMEMORY | 메모리가 부족하다.
설명
컬렉션 내 특정 위치에 있는 DeleteResult 객체의 인터페이스를 얻습니다.
예제
extern IDeleteResults* pDeleteResults;

LONG nCnt = 0;
pDeleteResults->get_Count(&nCnt);

for(int i=0; i<nCnt; i++)
{
    IDispatch* pDisp = NULL;
    if(SUCCEEDED(pDeleteResults->get_Item(i, &pDisp)))
    {
        IDeleteResult* pDeleteResult = NULL;
        if(SUCCEEDED(pDisp->QueryInterface(__uuidof(IDeleteResult), (void**)&pDeleteResult)))
        {
            // 처리
            pDeleteResult->Release();
        }
        pDisp->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[ppDeleteResult =] object.Item(Index As Long)
매개 변수
ppDeleteResult
IDeleteResult 인터페이스를 저장할 변수
Index
컬렉션에서 데이터를 얻고자 하는 인덱스
object
IDeleteResults 컬렉션
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수의 범위가 잘 못 됐다.
&H8007000E | 메모리가 부족하다.
예제
Public objDeleteResults As IDeleteResults

Private Sub ViewDeleteResults_Click()
    Dim objDeleteResult As IDeleteResult
    For I = 0 To objDeleteResults.Count
        Set objDeleteResult = objDeleteResults.Item(I)
        Debug.Print "성공 여부: " & objDeleteResult.Result
        Set objDeleteResult = Nothing
    Next
End Sub
참고 항목
IDeleteResults 컬렉션 , IDeleteResult 인터페이스


ILogDetail 인터페이스

 요청한 전송상세내역에 대한 내용이 들어있습니다.

ILogDetail 속성
Message 속성 | 전송 메시지
ReceiverPhone 속성 | 수신자 휴대폰 번호
Result 속성 | 전송 결과
Status 속성 | 전송 상태
TransDate 속성 | 메시지가 전송된(될) 날짜

인터페이스 정보
IID | D6B9D7CF-EA9A-4EB9-9272-A7790581D074
Implementation | LogDetail 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 3.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ILogDetail::Message 속성

[C++]

구문
HRESULT get_Message(BSTR* pVal);
매개 변수
pVal
[out, retval] 전송 메시지를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
전송될, 또는 전송된 메시지 내용을 가져옵니다.
예제
extern IMessage* pMessage;

void ViewLogDetail(ILogList* pLog)
{
    ILogDetails* pLogDetails;

    BSTR bstrIndex;
    pLog->get_Index(&bstrIndex);

    // 2004년 4월 로그 중 bstrIndex 인덱스의 세부 로그 요청
    HRESULT hr = pMessage->RequestLogDetail(2004, 4, bstrIndex, EZSMS_MESSAGE_TYPE_SMS, &pLogDetails);
    if(SUCCEEDED(hr))
    {
        LONG lCount;
        pLogDetails->get_Count(&lCount);

        for(LONG i=0; i<lCount; i++)
        {
            IDispatch* pDisp;
            if(SUCCEEDED(pLogDetails->get_Item(i, &pDisp)))
            {
                ILogDetail* pLogDetail;
                if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogDetail), (void**)&pLogDetail)))
                {
                    BSTR bstrMessage;
                    BSTR bstrReceiverPhone;
                    DATE dateTransDate;
                    EZSMS_TRANS_STATUS TransStatus;
                    EZSMS_TRANS_RESULT TransResult;
                    pLogDetail->get_Message(&bstrMessage);
                    pLogDetail->get_ReceiverPhone(&bstrReceiverPhone);
                    pLogDetail->get_TransDate(&dateTransDate);
                    pLogDetail->get_Status(&TransStatus);
                    pLogDetail->get_Result(&TransResult);

                    TRACE("---- 상세 정보 ----\n");
                    TRACE("메시지: %s\n", (LPCTSTR)_bstr_t(bstrMessage));
                    TRACE("수신자 휴대폰: %s\n", (LPCTSTR)_bstr_t(bstrReceiverPhone));
                    TRACE("전송 시간: %s\n", (LPCTSTR)COleDateTime(dateTransDate).Format("%Y-%m-%d %H:%M:%S"));
                    TRACE("전송 상태: %s\n", TransStatus == EZSMS_TRANS_REQUESTED ? "전송 요구" : (TransStatus == EZSMS_TRANS_WAITING ? "결과 대기" : "결과 받음"));
                    if(TransStatus == EZSMS_TRANS_RECEIVED)
                        TRACE("전송 결과: %s\n", TransResult == EZSMS_TRANS_SUCCEEDED ? "전송 성공" : (TransResult == EZSMS_TRANS_NOTEXISTNUMBER ? "없는 번호" : "전송 실패"));

                    SysFreeString(bstrMessage);
                    SysFreeString(bstrReceiverPhone);
                    pLogDetail->Release();
                }
                pDisp->Release();
            }
        }
        pLogDetails->Release();
    }
    SysFreeString(bstrIndex);
}
[Visual Basic]

구문
' 읽기전용
[pMessage =] object.Message
매개 변수
pMessage
전송 메시지를 저장할 String형 변수.
object
LogDetail 객체
예제
Public objMessage As IMessage

Private Function GetTransStatusString(Status As EZSMS_TRANS_STATUS) As String
    Select Case Status
        Case EZSMS_TRANS_REQUESTED
            GetTransStatusString = "전송 요구"
        Case EZSMS_TRANS_WAITING
            GetTransStatusString = "결과 대기"
        Case EZSMS_TRANS_RECEIVED
            GetTransStatusString = "결과 받음"
    End Select
End Function

Private Function GetTransResultString(Result As EZSMS_TRANS_RESULT) As String
    Select Case Result
        Case EZSMS_TRANS_SUCCEEDED
            GetTransResultString = "전송 성공"
        Case EZSMS_TRANS_FAILED
            GetTransResultString = "전송 실패"
        Case EZSMS_TRANS_NOTEXISTNUMBER
            GetTransResultString = "없는 번호"
    End Select
End Function

Private Sub ViewLogDetail(objLog As ILogList)
    Dim objLogDetails As ILogDetails
    Dim objLogDetail As ILogDetail

    On Error Resume Next
    Set objLogDetails = objMessage.RequestLogDetail(2004, 4, objLog.Index, EZSMS_MESSAGE_TYPE_SMS)
    If Err.Number = 0 Then
        For Each objLogDetail In objLogDetails
            Debug.Print "---- 상세 정보 ----"
            Debug.Print "메시지: " & objLogDetail.Message
            Debug.Print "수신자 휴대폰: " & objLogDetail.ReceiverPhone
            Debug.Print "전송 시간: " & objLogDetail.TransDate
            Debug.Print "전송 상태: " & GetTransStatusString(objLogDetail.Status)
            If objLogDetail.Status = EZSMS_TRANS_RECEIVED Then Debug.Print "전송 결과: " & GetTransResultString(objLogDetail.Result)
        Next
    End If
End Sub
참고 항목
ILogDetail 인터페이스 , IMessage::ILogDetails 컬렉션 , IMessage::RequestLogDetail 메서드 , EZSMS_TRANS_STATUS 열거 , EZSMS_TRANS_RESULT 열거


ILogDetail::ReceiverPhone 속성

[C++]

구문
HRESULT get_ReceiverPhone(BSTR* pVal);
매개 변수
pVal
[out, retval] 수신자 휴대폰 번호를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
수신자의 휴대폰 번호를 가져옵니다.
예제
extern IMessage* pMessage;

void ViewLogDetail(ILogList* pLog)
{
    ILogDetails* pLogDetails;

    BSTR bstrIndex;
    pLog->get_Index(&bstrIndex);

    // 2004년 4월 로그 중 bstrIndex 인덱스의 세부 로그 요청
    HRESULT hr = pMessage->RequestLogDetail(2004, 4, bstrIndex, EZSMS_MESSAGE_TYPE_SMS, &pLogDetails);
    if(SUCCEEDED(hr))
    {
        LONG lCount;
        pLogDetails->get_Count(&lCount);

        for(LONG i=0; i<lCount; i++)
        {
            IDispatch* pDisp;
            if(SUCCEEDED(pLogDetails->get_Item(i, &pDisp)))
            {
                ILogDetail* pLogDetail;
                if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogDetail), (void**)&pLogDetail)))
                {
                    BSTR bstrMessage;
                    BSTR bstrReceiverPhone;
                    DATE dateTransDate;
                    EZSMS_TRANS_STATUS TransStatus;
                    EZSMS_TRANS_RESULT TransResult;
                    pLogDetail->get_Message(&bstrMessage);
                    pLogDetail->get_ReceiverPhone(&bstrReceiverPhone);
                    pLogDetail->get_TransDate(&dateTransDate);
                    pLogDetail->get_Status(&TransStatus);
                    pLogDetail->get_Result(&TransResult);

                    TRACE("---- 상세 정보 ----\n");
                    TRACE("메시지: %s\n", (LPCTSTR)_bstr_t(bstrMessage));
                    TRACE("수신자 휴대폰: %s\n", (LPCTSTR)_bstr_t(bstrReceiverPhone));
                    TRACE("전송 시간: %s\n", (LPCTSTR)COleDateTime(dateTransDate).Format("%Y-%m-%d %H:%M:%S"));
                    TRACE("전송 상태: %s\n", TransStatus == EZSMS_TRANS_REQUESTED ? "전송 요구" : (TransStatus == EZSMS_TRANS_WAITING ? "결과 대기" : "결과 받음"));
                    if(TransStatus == EZSMS_TRANS_RECEIVED)
                        TRACE("전송 결과: %s\n", TransResult == EZSMS_TRANS_SUCCEEDED ? "전송 성공" : (TransResult == EZSMS_TRANS_NOTEXISTNUMBER ? "없는 번호" : "전송 실패"));

                    SysFreeString(bstrMessage);
                    SysFreeString(bstrReceiverPhone);
                    pLogDetail->Release();
                }
                pDisp->Release();
            }
        }
        pLogDetails->Release();
    }
    SysFreeString(bstrIndex);
}
[Visual Basic]

구문
' 읽기전용
[pReceiverPhone =] object.ReceiverPhone
매개 변수
pReceiverPhone
수신자 휴대폰 번호를 저장할 String형 변수.
object
LogDetail 객체
예제
Public objMessage As IMessage

Private Function GetTransStatusString(Status As EZSMS_TRANS_STATUS) As String
    Select Case Status
        Case EZSMS_TRANS_REQUESTED
            GetTransStatusString = "전송 요구"
        Case EZSMS_TRANS_WAITING
            GetTransStatusString = "결과 대기"
        Case EZSMS_TRANS_RECEIVED
            GetTransStatusString = "결과 받음"
    End Select
End Function

Private Function GetTransResultString(Result As EZSMS_TRANS_RESULT) As String
    Select Case Result
        Case EZSMS_TRANS_SUCCEEDED
            GetTransResultString = "전송 성공"
        Case EZSMS_TRANS_FAILED
            GetTransResultString = "전송 실패"
        Case EZSMS_TRANS_NOTEXISTNUMBER
            GetTransResultString = "없는 번호"
    End Select
End Function

Private Sub ViewLogDetail(objLog As ILogList)
    Dim objLogDetails As ILogDetails
    Dim objLogDetail As ILogDetail

    On Error Resume Next
    Set objLogDetails = objMessage.RequestLogDetail(2004, 4, objLog.Index, EZSMS_MESSAGE_TYPE_SMS)
    If Err.Number = 0 Then
        For Each objLogDetail In objLogDetails
            Debug.Print "---- 상세 정보 ----"
            Debug.Print "메시지: " & objLogDetail.Message
            Debug.Print "수신자 휴대폰: " & objLogDetail.ReceiverPhone
            Debug.Print "전송 시간: " & objLogDetail.TransDate
            Debug.Print "전송 상태: " & GetTransStatusString(objLogDetail.Status)
            If objLogDetail.Status = EZSMS_TRANS_RECEIVED Then Debug.Print "전송 결과: " & GetTransResultString(objLogDetail.Result)
        Next
    End If
End Sub
참고 항목
ILogDetail 인터페이스 , IMessage::ILogDetails 컬렉션 , IMessage::RequestLogDetail 메서드 , EZSMS_TRANS_STATUS 열거 , EZSMS_TRANS_RESULT 열거


ILogDetail::Result 속성

[C++]

구문
HRESULT get_Result(EZSMS_TRANS_RESULT* pVal);
매개 변수
pVal
[out, retval] 전송 결과를 저장할 EZSMS_TRANS_RESULT 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 메시지가 실제로 이동통신사에 전달되고, 휴대폰에 메시지를 전송했을 때의 결과를 나타냅니다. 전송 성공, 실패, 또는 없는 번호 등의 결과를 확인할 수 있습니다.

이 속성은 Status 속성이 EZSMS_TRANS_SUCCEEDED일 경우에만 값이 채워집니다. 따라서 나머지의 경우에는 쓰레기 값이 채워져 있습니다.
예제
extern IMessage* pMessage;

void ViewLogDetail(ILogList* pLog)
{
    ILogDetails* pLogDetails;

    BSTR bstrIndex;
    pLog->get_Index(&bstrIndex);

    // 2004년 4월 로그 중 bstrIndex 인덱스의 세부 로그 요청
    HRESULT hr = pMessage->RequestLogDetail(2004, 4, bstrIndex, EZSMS_MESSAGE_TYPE_SMS, &pLogDetails);
    if(SUCCEEDED(hr))
    {
        LONG lCount;
        pLogDetails->get_Count(&lCount);

        for(LONG i=0; i<lCount; i++)
        {
            IDispatch* pDisp;
            if(SUCCEEDED(pLogDetails->get_Item(i, &pDisp)))
            {
                ILogDetail* pLogDetail;
                if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogDetail), (void**)&pLogDetail)))
                {
                    BSTR bstrMessage;
                    BSTR bstrReceiverPhone;
                    DATE dateTransDate;
                    EZSMS_TRANS_STATUS TransStatus;
                    EZSMS_TRANS_RESULT TransResult;
                    pLogDetail->get_Message(&bstrMessage);
                    pLogDetail->get_ReceiverPhone(&bstrReceiverPhone);
                    pLogDetail->get_TransDate(&dateTransDate);
                    pLogDetail->get_Status(&TransStatus);
                    pLogDetail->get_Result(&TransResult);

                    TRACE("---- 상세 정보 ----\n");
                    TRACE("메시지: %s\n", (LPCTSTR)_bstr_t(bstrMessage));
                    TRACE("수신자 휴대폰: %s\n", (LPCTSTR)_bstr_t(bstrReceiverPhone));
                    TRACE("전송 시간: %s\n", (LPCTSTR)COleDateTime(dateTransDate).Format("%Y-%m-%d %H:%M:%S"));
                    TRACE("전송 상태: %s\n", TransStatus == EZSMS_TRANS_REQUESTED ? "전송 요구" : (TransStatus == EZSMS_TRANS_WAITING ? "결과 대기" : "결과 받음"));
                    if(TransStatus == EZSMS_TRANS_RECEIVED)
                        TRACE("전송 결과: %s\n", TransResult == EZSMS_TRANS_SUCCEEDED ? "전송 성공" : (TransResult == EZSMS_TRANS_NOTEXISTNUMBER ? "없는 번호" : "전송 실패"));

                    SysFreeString(bstrMessage);
                    SysFreeString(bstrReceiverPhone);
                    pLogDetail->Release();
                }
                pDisp->Release();
            }
        }
        pLogDetails->Release();
    }
    SysFreeString(bstrIndex);
}
[Visual Basic]

구문
' 읽기전용
[pResult =] object.Result
매개 변수
pResult
전송 결과를 저장할 EZSMS_TRANS_RESULT형 변수.
object
LogDetail 객체
예제
Public objMessage As IMessage

Private Function GetTransStatusString(Status As EZSMS_TRANS_STATUS) As String
    Select Case Status
        Case EZSMS_TRANS_REQUESTED
            GetTransStatusString = "전송 요구"
        Case EZSMS_TRANS_WAITING
            GetTransStatusString = "결과 대기"
        Case EZSMS_TRANS_RECEIVED
            GetTransStatusString = "결과 받음"
    End Select
End Function

Private Function GetTransResultString(Result As EZSMS_TRANS_RESULT) As String
    Select Case Result
        Case EZSMS_TRANS_SUCCEEDED
            GetTransResultString = "전송 성공"
        Case EZSMS_TRANS_FAILED
            GetTransResultString = "전송 실패"
        Case EZSMS_TRANS_NOTEXISTNUMBER
            GetTransResultString = "없는 번호"
    End Select
End Function

Private Sub ViewLogDetail(objLog As ILogList)
    Dim objLogDetails As ILogDetails
    Dim objLogDetail As ILogDetail

    On Error Resume Next
    Set objLogDetails = objMessage.RequestLogDetail(2004, 4, objLog.Index, EZSMS_MESSAGE_TYPE_SMS)
    If Err.Number = 0 Then
        For Each objLogDetail In objLogDetails
            Debug.Print "---- 상세 정보 ----"
            Debug.Print "메시지: " & objLogDetail.Message
            Debug.Print "수신자 휴대폰: " & objLogDetail.ReceiverPhone
            Debug.Print "전송 시간: " & objLogDetail.TransDate
            Debug.Print "전송 상태: " & GetTransStatusString(objLogDetail.Status)
            If objLogDetail.Status = EZSMS_TRANS_RECEIVED Then Debug.Print "전송 결과: " & GetTransResultString(objLogDetail.Result)
        Next
    End If
End Sub
참고 항목
ILogDetail 인터페이스 , IMessage::ILogDetails 컬렉션 , IMessage::RequestLogDetail 메서드 , EZSMS_TRANS_STATUS 열거 , EZSMS_TRANS_RESULT 열거


ILogDetail::Status 속성

[C++]

구문
HRESULT get_Status(EZSMS_TRANS_STATUS* pVal);
매개 변수
pVal
[out, retval] 전송 진행 상태를 저장할 EZSMS_TRANS_STATUS 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 메시지의 전달 상태를 나타냅니다. EZSMS_TRANS_REQUESTED는 접수는 되었으나 아직 이동통신사에 전달되지 않은 상태이며 EZSMS_TRANS_WAITING은 이동통신사에서 전송 처리중이라는 뜻이며, EZSMS_TRANS_RECEIVED는 이동통신사에서 전송 처리가 완료되었다는 뜻입니다. EZSMS_TRANS_RECEIVED 상태이면 Result 속성을 통하여 전송 결과를 확인할 수 있습니다.
예제
extern IMessage* pMessage;

void ViewLogDetail(ILogList* pLog)
{
    ILogDetails* pLogDetails;

    BSTR bstrIndex;
    pLog->get_Index(&bstrIndex);

    // 2004년 4월 로그 중 bstrIndex 인덱스의 세부 로그 요청
    HRESULT hr = pMessage->RequestLogDetail(2004, 4, bstrIndex, EZSMS_MESSAGE_TYPE_SMS, &pLogDetails);
    if(SUCCEEDED(hr))
    {
        LONG lCount;
        pLogDetails->get_Count(&lCount);

        for(LONG i=0; i<lCount; i++)
        {
            IDispatch* pDisp;
            if(SUCCEEDED(pLogDetails->get_Item(i, &pDisp)))
            {
                ILogDetail* pLogDetail;
                if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogDetail), (void**)&pLogDetail)))
                {
                    BSTR bstrMessage;
                    BSTR bstrReceiverPhone;
                    DATE dateTransDate;
                    EZSMS_TRANS_STATUS TransStatus;
                    EZSMS_TRANS_RESULT TransResult;
                    pLogDetail->get_Message(&bstrMessage);
                    pLogDetail->get_ReceiverPhone(&bstrReceiverPhone);
                    pLogDetail->get_TransDate(&dateTransDate);
                    pLogDetail->get_Status(&TransStatus);
                    pLogDetail->get_Result(&TransResult);

                    TRACE("---- 상세 정보 ----\n");
                    TRACE("메시지: %s\n", (LPCTSTR)_bstr_t(bstrMessage));
                    TRACE("수신자 휴대폰: %s\n", (LPCTSTR)_bstr_t(bstrReceiverPhone));
                    TRACE("전송 시간: %s\n", (LPCTSTR)COleDateTime(dateTransDate).Format("%Y-%m-%d %H:%M:%S"));
                    TRACE("전송 상태: %s\n", TransStatus == EZSMS_TRANS_REQUESTED ? "전송 요구" : (TransStatus == EZSMS_TRANS_WAITING ? "결과 대기" : "결과 받음"));
                    if(TransStatus == EZSMS_TRANS_RECEIVED)
                        TRACE("전송 결과: %s\n", TransResult == EZSMS_TRANS_SUCCEEDED ? "전송 성공" : (TransResult == EZSMS_TRANS_NOTEXISTNUMBER ? "없는 번호" : "전송 실패"));

                    SysFreeString(bstrMessage);
                    SysFreeString(bstrReceiverPhone);
                    pLogDetail->Release();
                }
                pDisp->Release();
            }
        }
        pLogDetails->Release();
    }
    SysFreeString(bstrIndex);
}
[Visual Basic]

구문
' 읽기전용
[pStatus =] object.Status
매개 변수
pStatus
전송 진행 상태를 저장할 EZSMS_TRANS_STATUS형 변수.
object
LogDetail 객체
예제
Public objMessage As IMessage

Private Function GetTransStatusString(Status As EZSMS_TRANS_STATUS) As String
    Select Case Status
        Case EZSMS_TRANS_REQUESTED
            GetTransStatusString = "전송 요구"
        Case EZSMS_TRANS_WAITING
            GetTransStatusString = "결과 대기"
        Case EZSMS_TRANS_RECEIVED
            GetTransStatusString = "결과 받음"
    End Select
End Function

Private Function GetTransResultString(Result As EZSMS_TRANS_RESULT) As String
    Select Case Result
        Case EZSMS_TRANS_SUCCEEDED
            GetTransResultString = "전송 성공"
        Case EZSMS_TRANS_FAILED
            GetTransResultString = "전송 실패"
        Case EZSMS_TRANS_NOTEXISTNUMBER
            GetTransResultString = "없는 번호"
    End Select
End Function

Private Sub ViewLogDetail(objLog As ILogList)
    Dim objLogDetails As ILogDetails
    Dim objLogDetail As ILogDetail

    On Error Resume Next
    Set objLogDetails = objMessage.RequestLogDetail(2004, 4, objLog.Index, EZSMS_MESSAGE_TYPE_SMS)
    If Err.Number = 0 Then
        For Each objLogDetail In objLogDetails
            Debug.Print "---- 상세 정보 ----"
            Debug.Print "메시지: " & objLogDetail.Message
            Debug.Print "수신자 휴대폰: " & objLogDetail.ReceiverPhone
            Debug.Print "전송 시간: " & objLogDetail.TransDate
            Debug.Print "전송 상태: " & GetTransStatusString(objLogDetail.Status)
            If objLogDetail.Status = EZSMS_TRANS_RECEIVED Then Debug.Print "전송 결과: " & GetTransResultString(objLogDetail.Result)
        Next
    End If
End Sub
참고 항목
ILogDetail 인터페이스 , IMessage::ILogDetails 컬렉션 , IMessage::RequestLogDetail 메서드 , EZSMS_TRANS_STATUS 열거 , EZSMS_TRANS_RESULT 열거


ILogDetail::TransDate 속성

[C++]

구문
HRESULT get_TransDate(DATE* pVal);
매개 변수
pVal
[out, retval] 메시지가 전송된(될) 날짜를 저장할 DATE 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
메시지가 전송된 또는 전송될 날짜를 가져옵니다.
예제
extern IMessage* pMessage;

void ViewLogDetail(ILogList* pLog)
{
    ILogDetails* pLogDetails;

    BSTR bstrIndex;
    pLog->get_Index(&bstrIndex);

    // 2004년 4월 로그 중 bstrIndex 인덱스의 세부 로그 요청
    HRESULT hr = pMessage->RequestLogDetail(2004, 4, bstrIndex, EZSMS_MESSAGE_TYPE_SMS, &pLogDetails);
    if(SUCCEEDED(hr))
    {
        LONG lCount;
        pLogDetails->get_Count(&lCount);

        for(LONG i=0; i<lCount; i++)
        {
            IDispatch* pDisp;
            if(SUCCEEDED(pLogDetails->get_Item(i, &pDisp)))
            {
                ILogDetail* pLogDetail;
                if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogDetail), (void**)&pLogDetail)))
                {
                    BSTR bstrMessage;
                    BSTR bstrReceiverPhone;
                    DATE dateTransDate;
                    EZSMS_TRANS_STATUS TransStatus;
                    EZSMS_TRANS_RESULT TransResult;
                    pLogDetail->get_Message(&bstrMessage);
                    pLogDetail->get_ReceiverPhone(&bstrReceiverPhone);
                    pLogDetail->get_TransDate(&dateTransDate);
                    pLogDetail->get_Status(&TransStatus);
                    pLogDetail->get_Result(&TransResult);

                    TRACE("---- 상세 정보 ----\n");
                    TRACE("메시지: %s\n", (LPCTSTR)_bstr_t(bstrMessage));
                    TRACE("수신자 휴대폰: %s\n", (LPCTSTR)_bstr_t(bstrReceiverPhone));
                    TRACE("전송 시간: %s\n", (LPCTSTR)COleDateTime(dateTransDate).Format("%Y-%m-%d %H:%M:%S"));
                    TRACE("전송 상태: %s\n", TransStatus == EZSMS_TRANS_REQUESTED ? "전송 요구" : (TransStatus == EZSMS_TRANS_WAITING ? "결과 대기" : "결과 받음"));
                    if(TransStatus == EZSMS_TRANS_RECEIVED)
                        TRACE("전송 결과: %s\n", TransResult == EZSMS_TRANS_SUCCEEDED ? "전송 성공" : (TransResult == EZSMS_TRANS_NOTEXISTNUMBER ? "없는 번호" : "전송 실패"));

                    SysFreeString(bstrMessage);
                    SysFreeString(bstrReceiverPhone);
                    pLogDetail->Release();
                }
                pDisp->Release();
            }
        }
        pLogDetails->Release();
    }
    SysFreeString(bstrIndex);
}
[Visual Basic]

구문
' 읽기전용
[pTransDate =] object.TransDate
매개 변수
pTransDate
메시지가 전송된(될) 날짜를 저장할 Date형 변수.
object
LogDetail 객체
예제
Public objMessage As IMessage

Private Function GetTransStatusString(Status As EZSMS_TRANS_STATUS) As String
    Select Case Status
        Case EZSMS_TRANS_REQUESTED
            GetTransStatusString = "전송 요구"
        Case EZSMS_TRANS_WAITING
            GetTransStatusString = "결과 대기"
        Case EZSMS_TRANS_RECEIVED
            GetTransStatusString = "결과 받음"
    End Select
End Function

Private Function GetTransResultString(Result As EZSMS_TRANS_RESULT) As String
    Select Case Result
        Case EZSMS_TRANS_SUCCEEDED
            GetTransResultString = "전송 성공"
        Case EZSMS_TRANS_FAILED
            GetTransResultString = "전송 실패"
        Case EZSMS_TRANS_NOTEXISTNUMBER
            GetTransResultString = "없는 번호"
    End Select
End Function

Private Sub ViewLogDetail(objLog As ILogList)
    Dim objLogDetails As ILogDetails
    Dim objLogDetail As ILogDetail

    On Error Resume Next
    Set objLogDetails = objMessage.RequestLogDetail(2004, 4, objLog.Index, EZSMS_MESSAGE_TYPE_SMS)
    If Err.Number = 0 Then
        For Each objLogDetail In objLogDetails
            Debug.Print "---- 상세 정보 ----"
            Debug.Print "메시지: " & objLogDetail.Message
            Debug.Print "수신자 휴대폰: " & objLogDetail.ReceiverPhone
            Debug.Print "전송 시간: " & objLogDetail.TransDate
            Debug.Print "전송 상태: " & GetTransStatusString(objLogDetail.Status)
            If objLogDetail.Status = EZSMS_TRANS_RECEIVED Then Debug.Print "전송 결과: " & GetTransResultString(objLogDetail.Result)
        Next
    End If
End Sub
참고 항목
ILogDetail 인터페이스 , IMessage::ILogDetails 컬렉션 , IMessage::RequestLogDetail 메서드 , EZSMS_TRANS_STATUS 열거 , EZSMS_TRANS_RESULT 열거


ILogDetail2 인터페이스

 요청한 전송상세내역에 대한 내용이 들어있습니다.

ILogDetail2 속성
Name 속성 수신자 이름

인터페이스 정보
IID | 7B742653-FE2F-483F-A679-31D6738BB53B
Implementation | LogDetail 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 4.2
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ILogDetail2::Name 속성

[C++]

구문
HRESULT get_Name(BSTR* pVal);
매개 변수
pVal
[out, retval] 수신자 이름을 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
수신자의 이름을 가져옵니다.
예제
extern IMessage* pMessage;

void ViewLogDetail(ILogList* pLog)
{
    ILogDetails* pLogDetails;

    BSTR bstrIndex;
    pLog->get_Index(&bstrIndex);

    // 2004년 4월 로그 중 bstrIndex 인덱스의 세부 로그 요청
    HRESULT hr = pMessage->RequestLogDetail(2004, 4, bstrIndex, EZSMS_MESSAGE_TYPE_SMS, &pLogDetails);
    if(SUCCEEDED(hr))
    {
        LONG lCount;
        pLogDetails->get_Count(&lCount);

        for(LONG i=0; i<lCount; i++)
        {
            IDispatch* pDisp;
            if(SUCCEEDED(pLogDetails->get_Item(i, &pDisp)))
            {
                ILogDetail* pLogDetail;
                if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogDetail), (void**)&pLogDetail)))
                {
                    BSTR bstrMessage;
                    BSTR bstrReceiverPhone;
                    DATE dateTransDate;
                    EZSMS_TRANS_STATUS TransStatus;
                    EZSMS_TRANS_RESULT TransResult;
                    pLogDetail->get_Message(&bstrMessage);
                    pLogDetail->get_ReceiverPhone(&bstrReceiverPhone);
                    pLogDetail->get_TransDate(&dateTransDate);
                    pLogDetail->get_Status(&TransStatus);
                    pLogDetail->get_Result(&TransResult);

                    TRACE("---- 상세 정보 ----\n");
                    TRACE("메시지: %s\n", (LPCTSTR)_bstr_t(bstrMessage));
                    TRACE("수신자 휴대폰: %s\n", (LPCTSTR)_bstr_t(bstrReceiverPhone));

                    ILogDetail2 *pLogDetail2 = NULL;
                    if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogDetail2), (void**)&pLogDetail2)))
                    {
                        BSTR bstrReceiverName;
                        pLogDetail2->get_Name(&bstrReceiverName);
                        TRACE("수신자 이름: %s\n", (LPCTSTR)_bstr_t(bstrReceiverName));
                        SysFreeString(bstrReceiverName);
                        pLogDetail2->Release();
                    }

                    TRACE("전송 시간: %s\n", (LPCTSTR)COleDateTime(dateTransDate).Format("%Y-%m-%d %H:%M:%S"));
                    TRACE("전송 상태: %s\n", TransStatus == EZSMS_TRANS_REQUESTED ? "전송 요구" : (TransStatus == EZSMS_TRANS_WAITING ? "결과 대기" : "결과 받음"));
                    if(TransStatus == EZSMS_TRANS_RECEIVED)
                        TRACE("전송 결과: %s\n", TransResult == EZSMS_TRANS_SUCCEEDED ? "전송 성공" : (TransResult == EZSMS_TRANS_NOTEXISTNUMBER ? "없는 번호" : "전송 실패"));

                    SysFreeString(bstrMessage);
                    SysFreeString(bstrReceiverPhone);
                    pLogDetail->Release();
                }
                pDisp->Release();
            }
        }
        pLogDetails->Release();
    }
    SysFreeString(bstrIndex);
}
[Visual Basic]

구문
' 읽기전용
[pReceiverName =] object.Name
매개 변수
pReceiverName
수신자 이름을 저장할 String형 변수.
object
LogDetail2 객체
예제
Public objMessage As IMessage

Private Function GetTransStatusString(Status As EZSMS_TRANS_STATUS) As String
    Select Case Status
        Case EZSMS_TRANS_REQUESTED
            GetTransStatusString = "전송 요구"
        Case EZSMS_TRANS_WAITING
            GetTransStatusString = "결과 대기"
        Case EZSMS_TRANS_RECEIVED
            GetTransStatusString = "결과 받음"
    End Select
End Function

Private Function GetTransResultString(Result As EZSMS_TRANS_RESULT) As String
    Select Case Result
        Case EZSMS_TRANS_SUCCEEDED
            GetTransResultString = "전송 성공"
        Case EZSMS_TRANS_FAILED
            GetTransResultString = "전송 실패"
        Case EZSMS_TRANS_NOTEXISTNUMBER
            GetTransResultString = "없는 번호"
    End Select
End Function

Private Sub ViewLogDetail(objLog As ILogList)
    Dim objLogDetails As ILogDetails
    Dim objLogDetail As ILogDetail
    Dim objLogDetail2 As ILogDetail2

    On Error Resume Next
    Set objLogDetails = objMessage.RequestLogDetail(2004, 4, objLog.Index, EZSMS_MESSAGE_TYPE_SMS)
    If Err.Number = 0 Then
        For Each objLogDetail In objLogDetails
            Set objLogDetail2 = objLogDetail
            Debug.Print "---- 상세 정보 ----"
            Debug.Print "메시지: " & objLogDetail.Message
            Debug.Print "수신자 휴대폰: " & objLogDetail.ReceiverPhone
            Debug.Print "수신자 이름: " & objLogDetail2.Name
            Debug.Print "전송 시간: " & objLogDetail.TransDate
            Debug.Print "전송 상태: " & GetTransStatusString(objLogDetail.Status)
            If objLogDetail.Status = EZSMS_TRANS_RECEIVED Then Debug.Print "전송 결과: " & GetTransResultString(objLogDetail.Result)
        Next
    End If
End Sub
참고 항목
ILogDetail 인터페이스 , ILogDetail2 인터페이스 , IMessage::ILogDetails 컬렉션 , IMessage::RequestLogDetail 메서드 , EZSMS_TRANS_STATUS 열거 , EZSMS_TRANS_RESULT 열거


ILogDetails 인터페이스 (컬렉션)

 전송상세내역(ILogDetail)의 컬렉션 인터페이스입니다.

ILogDetails 속성과 메서드
_NewEnum 속성 | ILogDetail 인터페이스의 집합인 IEnumVARIANT 인터페이스를 리턴합니다.
Count 속성 | ILogDetail 아이템의 수를 리턴합니다.
Date 속성 | 요청 날짜
Index 속성 | 로그 인덱스
Item 속성 | 지정한 인덱스의 LogDetail 객체에 대한 IDispatch 인터페이스를 리턴합니다.
ReturnPhone 속성 | 회신 번호

인터페이스 정보
IID | 391DF203-3182-44A6-8CE2-E02F5913AA94
Implementation | LogDetails 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 3.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ILogDetails::_NewEnum 속성

[C++]

구문
HRESULT get__NewEnum(IUnknown** pVal);
매개 변수
pVal
[out, retval] ILogDetail 인터페이스의 VARIANT 배열이 구현되어 있는 IEnumVARIANT의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | pVal 인자가 NULL이다.
E_OUTOFMEMORY | 메모리가 부족하다.
설명
이 속성은 C++보다는 Visual Basic이나 Scripting 계열의 언어에서 사용하기 위해 마련된 속성입니다. 예를 들어 Visual Basic의 For Each ... Next문은 컬렉션 인터페이스의 get__NewEnum 속성을 통해 객체를 반복하는 방법을 얻습니다.
[Visual Basic]

예제
Public objLogDetails As ILogDetails

Private Sub ViewLogDetails_Click()
    Dim objLogDetail As ILogDetail
    For Each objLogDetail In objLogDetails
        Debug.Print "전송날짜: " & objLogDetail.TransDate
    Next
End Sub
참고 항목
ILogDetails 컬렉션 , ILogDetail 인터페이스


ILogDetails::Count 속성

[C++]

구문
HRESULT get_Count(LONG* pVal);
매개 변수
pVal
[out, retval] 컬렉션 내에 ILogDetail 인터페이스의 개수가 저장될 LONG 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
컬렉션 내에 LogDetail 객체의 개수를 세는 역할을 합니다.
예제
extern ILogDetails* pLogDetails;

LONG nCnt = 0;
pLogDetails->get_Count(&nCnt);

for(int i=0; i<nCnt; i++)
{
    IDispatch* pDisp = NULL;
    if(SUCCEEDED(pLogDetails->get_Item(i, &pDisp)))
    {
        ILogDetail* pLogDetail = NULL;
        if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogDetail), (void**)&pLogDetail)))
        {
            // 처리
            pLogDetail->Release();
        }
        pDisp->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[pCount =] object.Count
매개 변수
pCount
컬렉션 내 LogDetail 객체의 개수를 저장할 Long형 변수
object
ILogDetails 컬렉션
예제
Public objLogDetails As ILogDetails

Private Sub ViewLogDetails_Click()
    Dim objLogDetail As ILogDetail
    For I = 0 To objLogDetails.Count
        Set objLogDetail = objLogDetails(I)
        Debug.Print "전송날짜: " & objLogDetail.TransDate
        Set objLogDetail = Nothing
    Next
End Sub
참고 항목
ILogDetails 컬렉션 , ILogDetail 인터페이스


ILogDetails::Date 속성

[C++]

구문
HRESULT get_Date(BSTR* pVal);
매개 변수
pVal
[out, retval] 날짜를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 요청한 전송 내역의 날짜를 담고 있습니다.
이 날짜의 문자열은 200404 같이 년도 4자리와 월 2자리로 구성되어 있습니다.
[Visual Basic]

구문
' 읽기전용
[pDate =] object.Date
매개 변수
pDate
날짜를 저장할 String형 변수.
object
LogDetails 객체
참고 항목
ILogDetails 인터페이스
, IMessage::RequestLog 메서드
, IMessage::RequestLogDetail 메서드
, IMessage::RequestLogDetailByList 메서드


ILogDetails::Index 속성

[C++]

구문
HRESULT get_Index(BSTR* pVal);
매개 변수
pVal
[out, retval] 로그의 고유 Index 번호를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다.
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 요청한 전송 내역의 고유 인덱스 번호를 담고 있습니다.
[Visual Basic]

구문
' 읽기전용
[pIndex =] object.Index
매개 변수
pIndex
로그의 고유 Index 번호를 저장할 String형 변수.
object
LogDetails 객체
참고 항목
ILogDetails 인터페이스
, IMessage::RequestLog 메서드
, IMessage::RequestLogDetail 메서드
, IMessage::RequestLogDetailByList 메서드


ILogDetails::Item 속성

[C++]

구문
HRESULT get_Item(
    LONG nIndex,
    IDispatch** pVal
);
매개 변수
nIndex
[in] 컬렉션에서 데이터를 얻고자 하는 인덱스 지정
pVal
[out, retval] 컬렉션 중 nIndex에 위치한 아이템을 얻어올 IDispatch 인터페이스의 포인터의 포인터.
얻어온 아이템에서 ILogDetail 인터페이스를 쿼리(QueryInterface)하여 사용할 수 있다.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | pVal 인자가 NULL이다.
E_INVALIDARG | 매개 변수의 범위가 잘 못 됐다.
E_OUTOFMEMORY | 메모리가 부족하다.
설명
컬렉션 내 특정 위치에 있는 LogDetail 객체의 인터페이스를 얻습니다.
예제
extern ILogDetails* pLogDetails;

LONG nCnt = 0;
pLogDetails->get_Count(&nCnt);

for(int i=0; i<nCnt; i++)
{
    IDispatch* pDisp = NULL;
    if(SUCCEEDED(pLogDetails->get_Item(i, &pDisp)))
    {
        ILogDetail* pLogDetail = NULL;
        if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogDetail), (void**)&pLogDetail)))
        {
            // 처리
            pLogDetail->Release();
        }
        pDisp->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[ppLogDetail =] object.Item(Index As Long)
매개 변수
ppLogDetail
ILogDetail 인터페이스를 저장할 변수
Index
컬렉션에서 데이터를 얻고자 하는 인덱스
object
ILogDetails 컬렉션
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수의 범위가 잘 못 됐다.
&H8007000E | 메모리가 부족하다.
예제
Public objLogDetails As ILogDetails

Private Sub ViewLogDetails_Click()
    Dim objLogDetail As ILogDetail
    For I = 0 To objLogDetails.Count
        Set objLogDetail = objLogDetails.Item(I)
        Debug.Print "전송날짜: " & objLogDetail.TransDate
        Set objLogDetail = Nothing
    Next
End Sub
참고 항목
ILogDetails 컬렉션 , ILogDetail 인터페이스


ILogDetails::ReturnPhone 속성

[C++]

구문
HRESULT get_ReturnPhone(BSTR* pVal);
매개 변수
pVal
[out, retval] 회신 번호를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 전송 당시의 회신 번호가 저장되어 있습니다.
예제
extern ILogDetails* pLogDetails;

BSTR bstrReturnPhone;
pLogDetails->get_ReturnPhone(bstrReturnPhone);
TRACE("회신 번호: %s\n", (LPCTSTR)_bstr_t(bstrReturnPhone));

SysFreeString(bstrReturnPhone);
[Visual Basic]

구문
' 읽기전용
[pReturnPhone =] object.ReturnPhone
매개 변수
pReturnPhone
회신 번호를 저장할 String형 변수.
object
LogDetails 객체
예제
Private Sub PrintLogReturnPhone(objLogDetails As ILogDetails)
    Debug.Print objLogDetails.ReturnPhone
End Sub
참고 항목
ILogDetails 인터페이스
, IMessage::RequestLog 메서드
, IMessage::RequestLogDetail 메서드
, IMessage::RequestLogDetailByList 메서드


ILogDetails2 인터페이스 (컬렉션)

 전송상세내역(ILogDetail)의 컬렉션 인터페이스입니다.

ILogDetails2 속성과 메서드
Type 속성 전송 타입 (SMS, LMS, MMS)

인터페이스 정보
IID | FAEB0C3E-D44E-43EE-ABD4-197DDDF9F403
Implementation | LogDetails 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 4.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ILogDetails2::Type 속성

[C++]

구문
HRESULT get_Type(EZSMS_MESSAGE_TYPE* pVal);
매개 변수
pVal
[out, retval] 메시지 타입을 받기 위한 EZSMS_MESSAGE_TYPE 포인터
반환 값
반환 값 | 의미
S_OK | 성공
설명
예제
extern ILogDetails* pLogDetails;

ILogDetails2* pLogDetails2 = NULL;
if(SUCCEEDED(pLogDetails->QueryInterface(__uuidof(ILogDetails2), (void**)&pLogDetails2)))
{
    EZSMS_MESSAGE_TYPE Type;
    pLogDetails2->get_Type(&Type);

    pLogDetails2->Release();
}
[Visual Basic]

구문
object.Type
반환 값
EZSMS_MESSAGE_TYPE형의 메시지 타입을 반환합니다.
예제
Public objLogDetails As ILogDetails

Private Sub ViewLogDetails_Click()
    Dim objLogDetails2 As ILogDetails2
    Set objLogDetails2 = objLogDetails
    Debug.Print "전송Type: " & objLogDetails2.Type
    Set objLogDetails2 = Nothing
End Sub
참고 항목
ILogDetails 인터페이스 , EZSMS_MESSAGE_TYPE 열거


ILogDetails3 인터페이스 (컬렉션)

 전송상세내역(ILogDetail)의 컬렉션 인터페이스입니다.

ILogDetails3 속성과 메서드
ImageURLs 속성 전송한 MMS 이미지 확인용 URL 목록

인터페이스 정보
IID | 13678840-B785-403C-B9C0-3C87A910518D
Implementation | LogDetails 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 4.2
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ILogDetails3::ImageURLs 속성

[C++]

구문
HRESULT get_ImageURLs(VARIANT* pVal);
매개 변수
pVal
[out, retval] MMS Image URL 목록(SAFEARRAY)을 저장할 VARIANT 포인터
반환 값
반환 값 | 의미
S_OK | 성공
설명
전송했던 MMS 이미지를 확인하고자할 때 쓰입니다.
예제
// SmartPointer example
extern ILogDetailsPtr pLogDetails;
ILogDetails3Ptr pLogDetails3(pLogDetails);
CComSafeArray<BSTR> sa(pLogDetails3->GetImageURLs().parray);
[Visual Basic]

구문
object.ImageURLs
반환 값
전송했던 MMS 이미지 URL 목록을 저장할 String 배열
예제
Public objLogDetails As ILogDetails
Dim logDetails3 As ILogDetails3

Set logDetails3 = objLogDetails
For i = LBound(logDetails3.ImageURLs) To UBound(logDetails3.ImageURLs)
    Dim URLString As String = logDetails3.ImageURLs(i)
    Debug.Print "Image URL: " & URLString
Next
참고 항목
ILogDetails 인터페이스 , ILogDetails2 인터페이스


ILoginInfo 인터페이스

 로그인 한 결과 및 부수 정보가 들어있습니다.

ILoginInfo 속성
FreeCall 속성 | 남은 콜 수 정보
Logined 속성 | 로그인 상태
ServerIP 속성 | 접속된 서버 IP 어드레스
ServerPort 속성 | 접속된 서버 포트
ServerTime 속성 | 로그인 성공시 서버 시간 (서버 시간 동기화에 사용될 수 있음)
ServerVersion 속성 (deprecated) | 서버 버전
UserID 속성 | 사용자 ID
UserPassword 속성 (deprecated) | 사용자 패스워드
UserName 속성 | 사용자 ID
UserPhoneNumber 속성 | 사용자 휴대폰 번호

인터페이스 정보
IID | 33BB4915-25AF-4C0D-97AE-949F4181D6F3
Implementation | LoginInfo 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 3.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ILoginInfo::FreeCall 속성

[C++]

구문
HRESULT get_FreeCall(LONG* pVal);
매개 변수
pVal
[out, retval] 잔여 콜 수를 저장할 LONG 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성을 통하여 잔여 콜 수를 확인할 수 있습니다. 문자 전송 전, 잔여 콜 수를 확인하여 실제로 보낼 건 수보다 적으면 전송되지 않습니다. 또한 ezSMSComponent에서 로그인하거나 문자를 전송한 후 웹이나 기타 다른 프로그램에서 콜 수를 차감했을 때 이 속성은 실시간으로 잔여 콜 수를 업데이트 하지 않으므로 하나의 아이디를 여러 사람이 사용하는 경우 실제 잔여 콜 수와 일치하지 않을 경우가 있습니다. 이 때는 IMessage::UpdateLoginInfo 메서드를 호출한 후 갱신된 잔여 콜 수를 확인하면 됩니다.
예제
extern IMessage* pMessage;

ILoginInfo* pLoginInfo;
HRESULT hr = pMessage->get_LoginInfo(&pLoginInfo);
if(SUCCEEDED(hr))
{
    LONG nMyFreeCall;
    pLoginInfo->get_FreeCall(nMyFreeCall);

    CString str;
    str.Format("남은 콜 수는 %ld 입니다.", nMyFreeCall);
    MessageBox(str);

    pLoginInfo->Release();
}
[Visual Basic]

구문
' 읽기전용
[pFreeCall =] object.FreeCall
매개 변수
pFreeCall
잔여 콜 수를 저장할 Long형 변수.
object
LoginInfo 객체
예제
Public objMessage As IMessage

Private Sub ViewFreeCall_Click()
    Dim objLoginInfo As ILoginInfo
    On Error Resume Next
    Set objLoginInfo = objMessage.LoginInfo
    If Err.Number = 0 Then
        MsgBox "남은 콜 수는 " & objLoginInfo.FreeCall & " 입니다."
    End If
End Sub
참고 항목
ILoginInfo 인터페이스 , IMessage 인터페이스 , IMessage::LoginInfo 속성


ILoginInfo::Logined 속성

[C++]

구문
HRESULT get_Logined(EZSMS_RESULT* pVal);
매개 변수
pVal
[out, retval] 로그인 상태를 저장할 EZSMS_RESULT 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
현재 로그인 된 상태인지를 확인할 수 있습니다. *pVal의 값이 EZSMS_SUCCEEDED이면 로그인된 상태이며, EZSMS_FAILED이면 로그 아웃 상태이며 이 때는 사용자 계정 정보를 다시 설쟁 해야 합니다.

로그인 정보는 로그인 된 상태에서만 받을 수 있습니다. 하지만 로그인된 상태에서 Send 메서드, RequestLog 메서드 등을 호출했을 때 현재 로그인 정보와 서버측 정보가 일치하지 않을 때 이 속성에 EZSMS_FAILED가 기록됩니다.

보통 이 속성을 확인하여 로그인 상태를 판단하지 않습니다. Send, RequestLog, CancelReservation 등의 메서드들은 현재 로그인정보와 서버측 로그인 정보가 일치하지 않을 경우 EZSMS_E_LOGINFAIL을 반환하기 때문에 실제로 클라이언트 구현시 이 속성을 사용하는 것은 드뭅니다.
예제
extern ILoginInfo* pLoginInfo;

EZSMS_RESULT Logined;
pLoginInfo->get_Logined(&Logined);
if(Logined == EZSMS_FAILED)
{
    TRACE("다시 로그인 하세요\n");
}
[Visual Basic]

구문
' 읽기전용
[pLogined =] object.Logined
매개 변수
pLogined
로그인 상태를 저장할 EZSMS_RESULT형 변수.
object
LoginInfo 객체
예제
Private Sub ViewLoginStatus(objLoginInfo As ILoginInfo)
    If objLoginInfo.Logined = EZSMS_SUCCEEDED Then
        Debug.Print "로그인 상태"
    Else
        Debug.Print "로그아웃 상태"
    End If
End Sub
참고 항목
ILoginInfo 인터페이스 , IMessage 인터페이스 , IMessage::LoginInfo 속성 , EZSMS_RESULT 열거


ILoginInfo::ServerIP 속성

[C++]

구문
HRESULT get_ServerIP(BSTR* pVal);
매개 변수
pVal
[out, retval] 로그인된 서버의 IP 주소를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다.
반환 값
반환 값 | 의미
S_OK | 성공
설명
연결된 서버의 IP 주소를 가져옵니다.
[Visual Basic]

구문
' 읽기전용
[pServerIP =] object.ServerIP
매개 변수
pServerIP
로그인된 서버의 IP 주소를 저장할 String형 변수.
object
LoginInfo 객체
참고 항목
ILoginInfo 인터페이스 , IMessage 인터페이스 , IMessage::LoginInfo 속성


ILoginInfo::ServerPort 속성

[C++]

구문
HRESULT get_ServerPort(LONG* pVal);
매개 변수
pVal
[out, retval] 로그인된 서버의 포트 번호를 저장할 LONG 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
연결된 서버의 포트 번호를 가져옵니다.
[Visual Basic]

구문
' 읽기전용
[pServerPort =] object.ServerPort
매개 변수
pServerPort
로그인된 서버의 포트 번호를 저장할 Long형 변수.
object
LoginInfo 객체
참고 항목
ILoginInfo 인터페이스 , IMessage 인터페이스 , IMessage::LoginInfo 속성


ILoginInfo::ServerTime 속성

[C++]

구문
HRESULT get_ServerTime(DATE* pVal);
매개 변수
pVal
[out, retval] 서버의 시간을 저장할 DATE 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
현재 서버의 시간을 가져옵니다. 예약 작업에서 클라이언트와 서버 시간 차이를 구하여 동기화 하려할 때 많이 쓰입니다. 이 속성은 로그인 했을 때의 시간 그대로를 가지고 있지 않고 시스템 시간이 증가한만큼 같이 증가되어 반환됩니다.
예제
extern IMessage* pMessage;

ILoginInfo* pLoginInfo;
if(SUCCEEDED(pMessage->get_LoginInfo(&pLoginInfo)))
{
    DATE dateServerTime;
    pLoginInfo->get_ServerTime(&dateServerTime);

    CString strMsg;
    strMsg.Format("현재 서버 시간은 %s 입니다.\n", COleDateTime(dateServerTime).Format("%Y-%m-%d %H:%M:%S"));
    TRACE(strMsg);

    pLoginInfo->Release();
}
[Visual Basic]

구문
' 읽기전용
[pServerTime =] object.ServerTime
매개 변수
pServerTime
서버의 시간을 저장할 Date형 변수.
object
LoginInfo 객체
예제
Public objMessage As IMessage

Private Sub ViewServerTime()
    On Error Resume Next
    Debug.Print "현재 서버 시간은 " & objMessage.LoginInfo.ServerTime & " 입니다."
End Sub
참고 항목
ILoginInfo 인터페이스 , IMessage 인터페이스 , IMessage::LoginInfo 속성


ILoginInfo::UserID 속성

[C++]

구문
HRESULT get_UserID(BSTR* pVal);
매개 변수
pVal
[out, retval] 로그인된 사용자의 ID를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
로그인에 사용한 사용자의 ID를 얻고자 할 때 쓰입니다.
예제
extern IMessage* pMessage;
extern IReceiver* pReceiver;
extern IContents* pContents;
extern ISendResult* pResult;

HRESULT hr = pMessage->SendOne(L"01012345678", pReceiver, pContents, &pResult);
if(SUCCEEDED(hr))
{
    // 전송 성공
    pResult->Release();
}
else if(hr == EZSMS_E_LOGINFAIL)
{
    // 다시 로그인 해야 함
    ILoginInfo* pLoginInfo;
    if(SUCCEEDED(pMessage->get_LoginInfo(&pLoginInfo)))
    {
        BSTR bstrUserID;
        pLoginInfo->get_UserID(&bstrUserID);

        TRACE("%s 님의 로그인 정보가 일치하지 않습니다.\n", (LPCTSTR)_bstr_t(bstrUserID));

        SysFreeString(bstrUserID);
        pLoginInfo->Release();
    }
}
else
{
    // 다른 오류
}
[Visual Basic]

구문
' 읽기전용
[pUserID =] object.UserID
매개 변수
pUserID
로그인된 사용자의 ID를 저장할 String형 변수.
object
LoginInfo 객체
예제
Public objMessage As IMessage
Public objReceiver As IReceiver
Public objContents As IContents

Private Sub Send_Click()
    Dim objSendResult As ISendResult

    On Error Resume Next
    Set objSendResult = objMessage.SendOne("01012345678", objReceiver, objContents)
    If Err.Number = 0 Then
        ' 전송 성공
        Set objSendResult = Nothing
    ElseIf Err.Number = EZSMS_E_LOGINFAIL Then
        Debug.Print objMessage.LoginInfo.UserID & " 님의 로그인 정보가 일치하지 않습니다."
    Else
        ' 다른 오류
    End If
End Sub
참고 항목
ILoginInfo 인터페이스 , IMessage 인터페이스 , IMessage::LoginInfo 속성


ILoginInfo::UserName 속성

[C++]

구문
HRESULT get_UserName(BSTR* pVal);
매개 변수
pVal
[out, retval] 로그인된 사용자의 실명을 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
로그인한 사용자의 이름을 얻고자 할 때 쓰입니다.
예제
extern IMessage* pMessage;
extern IReceiver* pReceiver;
extern IContents* pContents;
extern ISendResult* pResult;

HRESULT hr = pMessage->SendOne(L"01012345678", pReceiver, pContents, &pResult);
if(SUCCEEDED(hr))
{
    // 전송 성공
    pResult->Release();
}
else if(hr == EZSMS_E_LOGINFAIL)
{
    // 다시 로그인 해야 함
    ILoginInfo* pLoginInfo;
    if(SUCCEEDED(pMessage->get_LoginInfo(&pLoginInfo)))
    {
        BSTR bstrUserName;
        pLoginInfo->get_UserName(&bstrUserName);

        TRACE("%s 님의 로그인 정보가 일치하지 않습니다.\n", (LPCTSTR)_bstr_t(bstrUserName));

        SysFreeString(bstrUserName);
        pLoginInfo->Release();
    }
}
else
{
    // 다른 오류
}
[Visual Basic]

구문
' 읽기전용
[pUserName =] object.UserName
매개 변수
pUserName
로그인된 사용자의 이름을 저장할 String형 변수.
object
LoginInfo 객체
예제
Public objMessage As IMessage
Public objReceiver As IReceiver
Public objContents As IContents

Private Sub Send_Click()
    Dim objSendResult As ISendResult

    On Error Resume Next
    Set objSendResult = objMessage.SendOne("01012345678", objReceiver, objContents)
    If Err.Number = 0 Then
        ' 전송 성공
        Set objSendResult = Nothing
    ElseIf Err.Number = EZSMS_E_LOGINFAIL Then
        Debug.Print objMessage.LoginInfo.UserName & " 님의 로그인 정보가 일치하지 않습니다."
    Else
        ' 다른 오류
    End If
End Sub
참고 항목
ILoginInfo 인터페이스 , IMessage 인터페이스 , IMessage::LoginInfo 속성


ILoginInfo::UserPhoneNumber 속성

[C++]

구문
HRESULT get_UserPhoneNumber(BSTR* pVal);
매개 변수
pVal
[out, retval] 로그인된 사용자 휴대폰 번호를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
로그인한 사용자의 휴대폰 번호를 얻고자 할 때 쓰입니다.
예제
extern IMessage* pMessage;
extern ILoginInfo* pLoginInfo;
extern IReceiver* pReceiver;
extern IContents* pContents;
extern ISendResult* pResult;

BSTR bstrUserPhoneNumber;
pLoginInfo->get_UserPhoneNumber(&bstrUserPhoneNumber);
HRESULT hr = pMessage->SendOne(bstrUserPhoneNumber, pReceiver, pContents, &pResult);
if(SUCCEEDED(hr))
{
    // 전송 성공
    pResult->Release();
}
else
{
    // 다른 오류
}
SysFreeString(bstrUserPhoneNumber);
[Visual Basic]

구문
' 읽기전용
[pUserPhoneNumber =] object.UserPhoneNumber
매개 변수
pUserPhoneNumber
로그인된 사용자의 휴대폰 번호를 저장할 String형 변수.
object
LoginInfo 객체
예제
Public objMessage As IMessage
Public objReceiver As IReceiver
Public objContents As IContents

Private Sub Send_Click()
    Dim objSendResult As ISendResult

    On Error Resume Next
    Set objSendResult = objMessage.SendOne(objMessage.LoginInfo.UserPhoneNumber, objReceiver, objContents)
    If Err.Number = 0 Then
        ' 전송 성공
        Set objSendResult = Nothing
    Else
        ' 다른 오류
    End If
End Sub
참고 항목
ILoginInfo 인터페이스 , IMessage 인터페이스 , IMessage::LoginInfo 속성


ILoginInfo3 인터페이스

 로그인 한 결과 및 부수 정보가 들어있습니다.

ILoginInfo 속성
UserPhoneNumbers 속성 사용자 회신 번호 목록

인터페이스 정보
IID | CA83F269-FDE9-43F4-9ADA-5BD94E489B2C
Implementation | LoginInfo 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 4.1.2
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ILoginInfo3::UserPhoneNumbers 속성

[C++]

구문
HRESULT get_UserPhoneNumbers(VARIANT* pVal);
매개 변수
pVal
[out, retval] 로그인된 사용자 회신 번호 목록(SAFEARRAY)을 저장할 VARIANT 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
로그인한 사용자의 회신 번호 목록을 얻고자 할 때 쓰입니다.
예제
// SmartPointer example
extern IMessagePtr message;
ILoginInfo3Ptr info3(message->LoginInfo);
CComSafeArray<BSTR> sa(info3->GetUserPhoneNumbers().parray);
[Visual Basic]

구문
' 읽기전용
[pUserPhoneNumbers =] object.UserPhoneNumbers
매개 변수
pUserPhoneNumbers
로그인된 사용자의 회신번호 목록을 저장할 String 배열 변수.
object
LoginInfo 객체
예제
Public objMessage As IMessage
Dim loginInfo3 As ILoginInfo3

Set loginInfo3 = objMessage.LoginInfo
For i = LBound(loginInfo3.UserPhoneNumbers) To UBound(loginInfo3.UserPhoneNumbers)
    Dim phoneNumber As String = loginInfo3.UserPhoneNumbers(i)
Next
참고 항목
ILoginInfo3 인터페이스 , IMessage 인터페이스 , IMessage::LoginInfo 속성


ILogList 인터페이스

 요청한 전송 내역에 대한 내용이 들어있습니다.

ILogList 속성
CountFailure 속성 | 세부 내역 중 전송 실패한 개수
CountSucceed 속성 | 세부 내역 중 전송 성공한 개수
CountTotal 속성 | 세부 내역 총 개수
Date 속성 | 요청 날짜
Index 속성 | 로그 인덱스
Message 속성 | 전송된(될) 메시지
ReceiverPhone 속성 | 수신자 휴대폰 번호
ReturnPhone 속성 | 회신 번호
SendMode 속성 | 전송 모드 (즉시, 예약)
SendTime 속성 | 전송된(될) 날짜/시간

인터페이스 정보
IID | FC97480C-B4A2-4C4B-8DC4-AE191D58222F
Implementation | LogList 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 3.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ILogList::CountFailure 속성

[C++]

구문
HRESULT get_CountFailure(LONG* pVal);
매개 변수
pVal
[out, retval] 실패한 개수를 받을 LONG 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
CountFailure는 해당 전송 내역에 묶여 있는 세부 내역 중 전송 실패한 개수를 뜻합니다.
예제
extern ILogList* pLogList;

LONG lCountFailure, lCountSucceed, lCountTotal;
pLogList->get_CountFailure(&lCountFailure);
pLogList->get_CountSucceed(&lCountSucceed);
pLogList->get_CountTotal(&lCountTotal);

if(lCountTotal == lCountSucceed)
{
    TRACE("전송 성공\n");
}
else if(lCountTotal == lCountFailure)
{
    TRACE("전송 실패\n");
}
else
{
    TRACE("전송: %d개 중 %d개 성공\n", lCountTotal, lCountSucceed);
}
[Visual Basic]

구문
' 읽기전용
[pCountFailure =] object.CountFailure
매개 변수
pCountFailure
실패한 개수를 저장할 Long형 변수.
object
LogList 객체
예제
Private Sub ViewResult(Log As ILogList)
    If Log.CountTotal = Log.CountSucceed Then
        Debug.Print "전송 성공"
    ElseIf Log.CountTotal = Log.CountFailure Then
        Debug.Print "전송 실패"
    Else
        Debug.Print "전송: " & Str(Log.CountTotal) & "개 중 " & Str(Log.CountSucceed) & "개 성공"
    End If
End Sub
참고 항목
ILogList 인터페이스 , IMessage::RequestLog 메서드


ILogList::CountSucceed 속성

[C++]

구문
HRESULT get_CountSucceed(LONG* pVal);
매개 변수
pVal
[out, retval] 성공한 개수를 받을 LONG 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
CountSucceed는 해당 전송 내역에 묶여 있는 세부 내역 중 전송 성공한 개수를 뜻합니다.
예제
extern ILogList* pLogList;

LONG lCountFailure, lCountSucceed, lCountTotal;
pLogList->get_CountFailure(&lCountFailure);
pLogList->get_CountSucceed(&lCountSucceed);
pLogList->get_CountTotal(&lCountTotal);

if(lCountTotal == lCountSucceed)
{
    TRACE("전송 성공\n");
}
else if(lCountTotal == lCountFailure)
{
    TRACE("전송 실패\n");
}
else
{
    TRACE("전송: %d개 중 %d개 성공\n", lCountTotal, lCountSucceed);
}
[Visual Basic]

구문
' 읽기전용
[pCountSucceed =] object.CountSucceed
매개 변수
pCountSucceed
성공한 개수를 저장할 Long형 변수.
object
LogList 객체
예제
Private Sub ViewResult(Log As ILogList)
    If Log.CountTotal = Log.CountSucceed Then
        Debug.Print "전송 성공"
    ElseIf Log.CountTotal = Log.CountFailure Then
        Debug.Print "전송 실패"
    Else
        Debug.Print "전송: " & Str(Log.CountTotal) & "개 중 " & Str(Log.CountSucceed) & "개 성공"
    End If
End Sub
참고 항목
ILogList 인터페이스 , IMessage::RequestLog 메서드


ILogList::CountTotal 속성

[C++]

구문
HRESULT get_CountTotal(LONG* pVal);
매개 변수
pVal
[out, retval] 세부 작업 총 개수를 받을 LONG 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
CountTotal은 해당 전송 내역에 묶여 있는 세부 내역의 전체 개수입니다.
예제
extern ILogList* pLogList;

LONG lCountFailure, lCountSucceed, lCountTotal;
pLogList->get_CountFailure(&lCountFailure);
pLogList->get_CountSucceed(&lCountSucceed);
pLogList->get_CountTotal(&lCountTotal);

if(lCountTotal == lCountSucceed)
{
    TRACE("전송 성공\n");
}
else if(lCountTotal == lCountFailure)
{
    TRACE("전송 실패\n");
}
else
{
    TRACE("전송: %d개 중 %d개 성공\n", lCountTotal, lCountSucceed);
}
[Visual Basic]

구문
' 읽기전용
[pCountTotal =] object.CountTotal
매개 변수
pCountTotal
세부 작업 총 개수를 저장할 Long형 변수.
object
LogList 객체
예제
Private Sub ViewResult(Log As ILogList)
    If Log.CountTotal = Log.CountSucceed Then
        Debug.Print "전송 성공"
    ElseIf Log.CountTotal = Log.CountFailure Then
        Debug.Print "전송 실패"
    Else
        Debug.Print "전송: " & Str(Log.CountTotal) & "개 중 " & Str(Log.CountSucceed) & "개 성공"
    End If
End Sub
참고 항목
ILogList 인터페이스 , IMessage::RequestLog 메서드


ILogList::Date 속성

[C++]

구문
HRESULT get_Date(BSTR* pVal);
HRESULT put_Date(BSTR newVal);
매개 변수
pVal
[out, retval] 날짜를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
newVal
[in] 새로 설정할 날짜 문자열 값.
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 요청한 전송 내역의 날짜를 담고 있습니다. 이 날짜의 문자열은 200404 같이 년도 4자리와 월 2자리로 구성되어 있습니다.
[Visual Basic]

구문
object.Date [= newVal]
매개 변수
newVal
새로 설정할 날짜 값
object
LogList 객체
반환 값
String형의 날짜(년도 4자리와 월 2자리로 구성된 6자리 문자열) 값을 반환합니다.
참고 항목
ILogList 인터페이스 , IMessage::RequestLog 메서드


ILogList::Index 속성

[C++]

구문
HRESULT get_Index(BSTR* pVal);
HRESULT put_Index(BSTR newVal);
매개 변수
pVal
[out, retval] 로그의 고유 Index 번호를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
newVal
[in] 새로 설정할 Index 번호
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 요청한 전송 내역의 고유 인덱스 번호를 담고 있습니다.
예제
extern IMessage* pMessage;
extern ILogList* pLogList;

ICancelResult* pCancelResult;
BSTR bstrDate;
BSTR bstrIndex;
EZSMS_MESSAGE_TYPE Type;

pLogList->get_Date(&bstrDate);
pLogList->get_Index(&bstrIndex);
pLogList->get_Type(&Type);

LONG nYearMonth = atol(_bstr_t(bstrIndex));
LONG nYear = nYearMonth / 100;
LONG nMonth = nYearMonth % 100;
HRESULT hr = pMessage->CancelReservation(nYear, nMonth, bstrIndex, Type, &pCancelResult);

// ...

SysFreeString(bstrIndex);
SysFreeString(bstrDate);
[Visual Basic]

구문
object.Index [= newVal]
매개 변수
newVal
새로 설정할 String형 Index 번호 값
object
LogList 객체
반환 값
String형의 로그 인덱스 값을 반환합니다.
예제
Public objMessage As IMessage

Private Function CancelReservation(objLogList As ILogList) As Boolean
    Dim objCancelResult As ICancelResult

    Set objCancelResult = objMessage.CancelReservation( _
        CLng(Left(objLogList.Date, 4)), _
        CLng(Right(objLogList.Date, 2)), _
        objLogList.Index, _
        objLogList.Type)

    ' ...

    Set objCancelResult = Nothing
End Function
참고 항목
ILogList 인터페이스 , IMessage::CancelReservation 메서드 , IMessage::RequestLog 메서드


ILogList::Message 속성

[C++]

구문
HRESULT get_Message(BSTR* pVal);
매개 변수
pVal
[out, retval] 메시지 내용을 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 전송했거나 전송하려는 메시지 내용을 담고 있습니다. 하나의 전송 내역에 여러 개의 상세 내역이 있을 경우에는 첫번째로 보냈던 메시지 내용이 이 속성 값에 저장됩니다.
예제
extern ILogList* pLogList;

BSTR bstrMessage;
pLogList->get_Message(&bstrMessage);
TRACE("전송된 메시지: %s\n", (LPCTSTR)_bstr_t(bstrMessage));

SysFreeString(bstrMessage);
[Visual Basic]

구문
' 읽기전용
[pMessage =] object.Message
매개 변수
pMessage
메시지 내용을 저장할 String형 변수.
object
LogList 객체
예제
Private Sub PrintLogMessage(objLogList As ILogList)
    Debug.Print objLogList.Message
End Sub
참고 항목
ILogList 인터페이스 , IMessage::RequestLog 메서드


ILogList::ReceiverPhone 속성

[C++]

구문
HRESULT get_ReceiverPhone(BSTR* pVal);
매개 변수
pVal
[out, retval] 수신자 휴대폰 번호를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 수신자 휴대폰으로 지정했던 번호를 말합니다.
예제
extern ILogList* pLogList;

BSTR bstrReceiverPhone;
pLogList->get_ReceiverPhone(&bstrReceiverPhone);
TRACE("수신자 휴대폰 번호: %s\n", (LPCTSTR)_bstr_t(bstrReceiverPhone));

SysFreeString(bstrReceiverPhone);
[Visual Basic]

구문
' 읽기전용
[pReceiverPhone =] object.ReceiverPhone
매개 변수
pReceiverPhone
수신자 휴대폰 번호를 저장할 String형 변수.
object
LogList 객체
예제
Private Sub PrintLogReceiverPhone(objLogList As ILogList)
    Debug.Print objLogList.ReceiverPhone
End Sub
참고 항목
ILogList 인터페이스 , IMessage::RequestLog 메서드


ILogList::ReturnPhone 속성

[C++]

구문
HRESULT get_ReturnPhone(BSTR* pVal);
매개 변수
pVal
[out, retval] 회신 번호를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 전송 당시의 회신 번호가 저장되어 있습니다.
예제
extern ILogList* pLogList;

BSTR bstrReturnPhone;
pLogList->get_ReturnPhone(&bstrReturnPhone);
TRACE("회신 번호: %s\n", (LPCTSTR)_bstr_t(bstrReturnPhone));

SysFreeString(bstrReturnPhone);
[Visual Basic]

구문
' 읽기전용
[pReturnPhone =] object.ReturnPhone
매개 변수
pReturnPhone
회신 번호를 저장할 String형 변수.
object
LogList 객체
예제
Private Sub PrintLogReturnPhone(objLogList As ILogList)
    Debug.Print objLogList.ReturnPhone
End Sub
참고 항목
ILogList 인터페이스 , IMessage::RequestLog 메서드


ILogList::SendMode 속성

[C++]

구문
HRESULT get_SendMode(EZSMS_SENDMODE* pVal);
매개 변수
pVal
[out, retval] 전송모드를 저장할 EZSMS_SENDMODE 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 메시지를 전송할 때 즉시 보낸 것인지, 예약으로 보낸 것인지를 구분하기 위한 것입니다.
예제
extern ILogList* pLogList;

EZSMS_SENDMODE SendMode;
pLogList->get_SendMode(&SendMode);

DATE dateSendTime;
pLogList->get_SendTime(&dateSendTime);
TRACE("%s: %s\n",
    (SendMode == EZSMS_RESERVATION ? "예약 시간" : "즉시 전송"),
    COleDateTime(dateSendTime).Format("%Y-%m-%d %H:%M:%S")
);
[Visual Basic]

구문
' 읽기전용
[pSendMode =] object.SendMode
매개 변수
pSendMode
전송모드를 저장할 EZSMS_SENDMODE형 변수.
object
LogList 객체
예제
Private Sub PrintLogSendTime(objLogList As ILogList)
    If objLogList.SendMode = EZSMS_RESERVATION Then
        Debug.Print "예약 시간: " & objLogList.SendTime
    Else
        Debug.Print "즉시 전송:" & objLogList.SendTime
    End If
End Sub
참고 항목
ILogList 인터페이스 , IMessage::RequestLog 메서드 , EZSMS_SENDMODE 열거


ILogList::SendTime 속성

[C++]

구문
HRESULT get_SendTime(DATE* pVal);
매개 변수
pVal
[out, retval] 전송 시간을 저장할 DATE 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 메시지가 실제로 보내질 날짜/시간을 뜻합니다.
예제
extern ILogList* pLogList;

EZSMS_SENDMODE SendMode;
pLogList->get_SendMode(&SendMode);

DATE dateSendTime;
pLogList->get_SendTime(&dateSendTime);
TRACE("%s: %s\n",
    (SendMode == EZSMS_RESERVATION ? "예약 시간" : "즉시 전송"),
    COleDateTime(dateSendTime).Format("%Y-%m-%d %H:%M:%S")
);
[Visual Basic]

구문
' 읽기전용
[pSendTime =] object.SendTime
매개 변수
pSendTime
전송 시간을 저장할 Date형 변수.
object
LogList 객체
예제
Private Sub PrintLogSendTime(objLogList As ILogList)
    If objLogList.SendMode = EZSMS_RESERVATION Then
        Debug.Print "예약 시간: " & objLogList.SendTime
    Else
        Debug.Print "즉시 전송:" & objLogList.SendTime
    End If
End Sub
참고 항목
ILogList 인터페이스 , IMessage::RequestLog 메서드 , EZSMS_LOGBY 열거


ILogList2 인터페이스

 요청한 전송 내역에 대한 내용이 들어있습니다.

ILogList2 속성
WriteTime 속성 접수된 날짜/시간

인터페이스 정보
IID | 352E5182-28A6-4DC6-BB5B-B33009DC4079
Implementation | LogList 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 3.1
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ILogList2::WriteTime 속성

[C++]

구문
HRESULT get_WriteTime(DATE* pVal);
매개 변수
pVal
[out, retval] 접수 시간을 저장할 DATE 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 메시지를 접수한 날짜/시간을 뜻합니다.
예제
extern ILogList* pLogList;

EZSMS_SENDMODE SendMode;
pLogList->get_SendMode(&SendMode);

DATE dateSendTime;
pLogList->get_SendTime(&dateSendTime);
TRACE("%s: %s\n",
    (SendMode == EZSMS_RESERVATION ? "예약 시간" : "즉시 전송"),
    COleDateTime(dateSendTime).Format("%Y-%m-%d %H:%M:%S")
);

ILogList2* pLogList2;
pLogList->QueryInterface(__uuidof(ILogList2), (void**) &pLogList2);
if(pLogList2)
{
    DATE dateWriteTime;
    pLogList2->get_WriteTime(&dateWriteTime);
    TRACE("접수시간: %s\n", COleDateTime(dateWriteTime).Format("%Y-%m-%d %H:%M:%S"));
    pLogList2->Release();
}
[Visual Basic]

구문
' 읽기전용
[pWriteTime =] object.WriteTime
매개 변수
pWriteTime
전송 시간을 저장할 Date형 변수.
object
LogList 객체
예제
Private Sub PrintLogTimes(objLogList As ILogList)
    Dim objLogList2 As ILogList2

    If objLogList.SendMode = EZSMS_RESERVATION Then
        Debug.Print "예약 시간: " & objLogList.SendTime
    Else
        Debug.Print "즉시 전송:" & objLogList.SendTime
    End If

    Set objLogList2 = objLogList
    Debug.Print "접수시간: " & objLogList2.WriteTime
End Sub
참고 항목
ILogList 인터페이스 , ILogList2 인터페이스 , IMessage::RequestLog 메서드 , EZSMS_LOGBY 열거


ILogList3 인터페이스

 요청한 전송 내역에 대한 내용이 들어있습니다.

ILogList3 속성
Type 속성 메시지 타입

인터페이스 정보
IID | F9694B40-84BF-472D-A4AF-A0B24C1ECDF9
Implementation | LogList 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 4
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ILogList3::Type 속성

[C++]

구문
HRESULT get_Type(EZSMS_MESSAGE_TYPE* pVal);
매개 변수
pVal
[out, retval] 메시지 타입을 받기 위한 EZSMS_MESSAGE_TYPE 포인터
반환 값
반환 값 | 의미
S_OK | 성공
설명
예제
extern ILogList* pLogList;

ILogList3* pLogList3 = NULL;
if(SUCCEEDED(pLogList->QueryInterface(__uuidof(ILogList3), (void**)&pLogList3)))
{
    EZSMS_MESSAGE_TYPE Type;
    pLogList3->get_Type(&Type);

    pLogList3->Release();
}
[Visual Basic]

구문
object.Type
반환 값
EZSMS_MESSAGE_TYPE형의 메시지 타입을 반환합니다.
예제
Public objLogList As ILogList

Private Sub ViewLogDetails_Click()
    Dim objLogList3 As ILogList3
    Set objLogList3 = objLogList
    Debug.Print "전송Type: " & objLogList3.Type
    Set objLogList3 = Nothing
End Sub
참고 항목
ILogList 인터페이스 , EZSMS_MESSAGE_TYPE 열거


ILogLists 인터페이스 (컬렉션)

 전송 내역(ILogList)의 컬렉션 인터페이스입니다.
반환된 ILogList 인터페이스로 QueryInterface를 통해 ILogList2 인터페이스를 얻을 수도 있습니다.

ILogLists 속성과 메서드
_NewEnum 속성 | ILogList 인터페이스의 집합인 IEnumVARIANT 인터페이스를 리턴합니다.
Add 메서드 | ILogList 항목 추가
AddDirect 메서드 (deprecated) | ILogList 항목 직접 추가
Count 속성 | ILogList 아이템의 수를 리턴합니다.
Item 속성 | 지정한 인덱스의 LogList 객체에 대한 IDispatch 인터페이스를 리턴합니다.
Remove 메서드 | ILogList 항목 삭제 추가

인터페이스 정보
IID | 9BACFED7-FC39-4032-A190-50688F89D2A4
Implementation | LogLists 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 3.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ILogLists::Add 메서드

[C++]

구문
HRESULT Add(ILogList* pLogList);
매개 변수
pLogList
[in] 컬렉션에 추가할 LogList 객체의 인터페이스
반환 값
반환 값 | 의미
S_OK | 성공
E_INVALIDARG | 매개 변수가 명시되지 않았다.
설명
컬렉션에 로그 데이터를 추가합니다.
예제
extern IMessage* pMessage;

ILogLists* pLogLists;
ILogList* pLogList;

pMessage->CreateLogLists(&pLogLists);
pMessage->CreateLogList(&pLogList);
pLogList->put_Date(L"200406")
pLogList->put_Index(L"12345")
pLogList->put_Type(EZSMS_MESSAGE_TYPE_SMS);
pLogLists->Add(pLogList);

// ...

pLogList->Release();
pLogLists->Release();
[Visual Basic]

구문
object.Add(objLogList As ILogList)
매개 변수
objLogList
추가할 LogList 객체
object
LogLists 객체
예제
Public objMessage As IMessage

Private Sub AddLogList_Click()
    Dim objLogLists As ILogLists
    Dim objLogList As ILogList

    Set objLogLists = objMessage.CreateLogLists()
    Set objLogList = objMessage.CreateLogList()

    objLogList.Date = "200406"
    objLogList.Index = "12345"
    objLogList.Type = EZSMS_MESSAGE_TYPE_SMS
    objLogLists.Add objLogList

    '...

    Set objLogList = Nothing
    Set objLogLists = Nothing
End Sub
참고 항목
ILogLists 인터페이스
, ILogList 인터페이스
, IMessage::CreateLogList 메서드
, IMessage::CreateLogLists 메서드
, IMessage::CreateLogListDirect 메서드


ILogLists::Remove 메서드

[C++]

구문
HRESULT Remove(LONG Index);
매개 변수
Index
[in] 삭제할 아이템 인덱스
반환 값
반환 값 | 의미
S_OK | 성공
E_INVALIDARG | Index의 범위가 벗어났다.
설명
컬렉션의 특정 인덱스에 존재하는 로그 데이터를 삭제합니다.
예제
extern ILogLists* pLogLists;

// 세번째 아이템 삭제
pLogLists->Remove(2);
[Visual Basic]

구문
object.Remove(Index As Long)
매개 변수
Index
삭제할 아이템 인덱스
object
LogLists 객체
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수의 범위가 잘 못 됐다.
예제
Private Sub RemoveLogList_Click()
    Dim objLogLists As ILogLists

    ' 첫번째 아이템 삭제
    objLogLists.Remove 0
End Sub
참고 항목
ILogLists 인터페이스
, IMessage::CreateLogList 메서드
, IMessage::CreateLogLists 메서드
, IMessage::CreateLogListDirect 메서드


ILogLists::_NewEnum 속성

[C++]

구문
HRESULT get__NewEnum(IUnknown** pVal);
매개 변수
pVal
[out, retval] ILogList 인터페이스의 VARIANT 배열이 구현되어 있는 IEnumVARIANT의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | pVal 인자가 NULL이다.
E_OUTOFMEMORY | 메모리가 부족하다.
설명
이 속성은 C++보다는 Visual Basic이나 Scripting 계열의 언어에서 사용하기 위해 마련된 속성입니다. 예를 들어 Visual Basic의 For Each ... Next문은 컬렉션 인터페이스의 get__NewEnum 속성을 통해 객체를 반복하는 방법을 얻습니다.
[Visual Basic]

예제
Public objLogLists As ILogLists

Private Sub ViewLogLists_Click()
    Dim objLogList As ILogList
    For Each objLogList In objLogLists
        Debug.Print "수신자 휴대폰: " & objLogList.ReceiverPhone
    Next
End Sub
참고 항목
ILogLists 컬렉션 , ILogList 인터페이스


ILogLists::Count 속성

[C++]

구문
HRESULT get_Count(LONG* pVal);
매개 변수
pVal
[out, retval] 컬렉션 내에 ILogList 인터페이스의 개수가 저장될 LONG 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
컬렉션 내에 LogList 객체의 개수를 세는 역할을 합니다.
예제
extern ILogLists* pLogLists;

LONG nCnt = 0;
pLogLists->get_Count(&nCnt);

for(int i=0; i<nCnt; i++)
{
    IDispatch* pDisp = NULL;
    if(SUCCEEDED(pLogLists->get_Item(i, &pDisp)))
    {
        ILogList* pLogList = NULL;
        if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogList), (void**)&pLogList)))
        {
            // 처리
            pLogList->Release();
        }
        pDisp->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[pCount =] object.Count
매개 변수
pCount
컬렉션 내 LogList 객체의 개수를 저장할 Long형 변수
object
ILogLists 컬렉션
예제
Public objLogLists As ILogLists

Private Sub ViewLogLists_Click()
    Dim objLogList As ILogList
    For I = 0 To objLogLists.Count
        Set objLogList = objLogLists(I)
        Debug.Print "수신자 휴대폰: " & objLogList.ReceiverPhone
        Set objLogList = Nothing
    Next
End Sub
참고 항목
ILogLists 컬렉션 , ILogList 인터페이스


ILogLists::Item 속성

[C++]

구문
HRESULT get_Item(
    LONG nIndex,
    IDispatch** pVal
);
매개 변수
nIndex
[in] 컬렉션에서 데이터를 얻고자 하는 인덱스 지정
pVal
[out, retval] 컬렉션 중 nIndex에 위치한 아이템을 얻어올 IDispatch 인터페이스의 포인터의 포인터.
얻어온 아이템에서 ILogList 인터페이스를 쿼리(QueryInterface)하여 사용할 수 있다.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | pVal 인자가 NULL이다.
E_INVALIDARG | 매개 변수의 범위가 잘 못 됐다.
E_OUTOFMEMORY | 메모리가 부족하다.
설명
컬렉션 내 특정 위치에 있는 LogList 객체의 인터페이스를 얻습니다.
예제
extern ILogLists* pLogLists;

LONG nCnt = 0;
pLogLists->get_Count(&nCnt);

for(int i=0; i<nCnt; i++)
{
    IDispatch* pDisp = NULL;
    if(SUCCEEDED(pLogLists->get_Item(i, &pDisp)))
    {
        ILogList* pLogList = NULL;
        if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ILogList), (void**)&pLogList)))
        {
            // 처리
            pLogList->Release();
        }
        pDisp->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[ppLogList =] object.Item(Index As Long)
매개 변수
ppLogList
ILogList 인터페이스를 저장할 변수
Index
컬렉션에서 데이터를 얻고자 하는 인덱스
object
ILogLists 컬렉션
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수의 범위가 잘 못 됐다.
&H8007000E | 메모리가 부족하다.
예제
Public objLogLists As ILogLists

Private Sub ViewLogLists_Click()
    Dim objLogList As ILogList
    For I = 0 To objLogLists.Count
        Set objLogList = objLogLists.Item(I)
        Debug.Print "수신자 휴대폰: " & objLogList.ReceiverPhone
        Set objLogList = Nothing
    Next
End Sub
참고 항목
ILogLists 컬렉션 , ILogList 인터페이스


IReceiver 인터페이스

 메시지를 전송할 때 사용되는 수신자 정보입니다.

IReceiver 속성
Message 속성 | 전송할 메시지
Phone 속성 | 수신자 휴대폰 번호
SendMode 속성 | 전송 모드 (즉시 전송, 예약 전송)
SendTime 속성 | 전송 시간 (예약 전송시)

인터페이스 정보
IID | 01952A20-842B-4597-B08B-1C05BCA7BDED
Implementation | Receiver 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 3.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


IReceiver::Message 속성

[C++]

구문
HRESULT get_Message(BSTR* pVal);

HRESULT put_Message(BSTR newVal);
매개 변수
pVal
[out, retval] 전송메시지 내용을 받기 위한 BSTR 포인터
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
newVal
[in] 새로 설정할 전송메시지
반환 값
반환 값 | 의미
S_OK | 성공
설명
예제
extern IMessage* pMessage;

IReceiver* pReceiver;
pMessage->CreateReceiver(&pReceiver);

pReceiver->put_Message(L"저는 www.CEnA.co.kr SpeedVB, ArmyDay 개발자입니다");

BSTR bstrMessage;
pReceiver->get_Message(&bstrMessage);

ASSERT(wcscmp(bstrMessage, L"저는 www.CEnA.co.kr SpeedVB, ArmyDay 개발자입니다") == 0);

SysFreeString(bstrMessage);
pReceiver->Release();
[Visual Basic]

구문
object.Message [= newVal]
매개 변수
newVal
새로 설정할 전송메시지
object
Receiver 객체
반환 값
String형의 전송 메시지의 내용을 반환합니다.
예제
Public objMessage As IMessage

Private Sub Test()
    Dim objReceiver As IReceiver

    Set objReceiver = objMessage.CreateReceiver()
    objReceiver.Message = "프로그래밍 노하우는 결코 몇년만에 쌓이는게 아닙니다. 더욱 노력합시다"

    Debug.Print objReceiver.Message
End Sub
참고 항목
IReceiver 인터페이스


IReceiver::Phone 속성

[C++]

구문
HRESULT get_Phone(BSTR* pVal);

HRESULT put_Phone(BSTR newVal);
매개 변수
pVal
[out, retval] 휴대폰 번호를 받기 위한 BSTR 포인터
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
newVal
[in] 새로 설정할 휴대폰 번호
※ 주의: 휴대폰 번호는 반드시 숫자로만 되어 있어야 합니다. 예를 들어 010-1234-1234 는 01012341234로 바꿔주어야 합니다.
반환 값
반환 값 | 의미
S_OK | 성공
설명
예제
extern IMessage* pMessage;

IReceiver* pReceiver;
pMessage->CreateReceiver(&pReceiver);

pReceiver->put_Phone(L"01012345678");

BSTR bstrPhone;
pReceiver->get_Phone(&bstrPhone);

ASSERT(wcscmp(bstrPhone, L"01012345678") == 0);

SysFreeString(bstrPhone);
pReceiver->Release();
[Visual Basic]

구문
object.Phone [= newVal]
매개 변수
newVal
새로 설정할 휴대폰 번호
※ 주의: 휴대폰 번호는 반드시 숫자로만 되어 있어야 합니다. 예를 들어 010-1234-1234 는 01012341234로 바꿔주어야 합니다.
object
Receiver 객체
반환 값
String형의 휴대폰 번호를 반환합니다.
예제
Public objMessage As IMessage

Private Sub Test()
    Dim objReceiver As IReceiver

    Set objReceiver = objMessage.CreateReceiver()
    objReceiver.Phone = "01012345678"

    Debug.Print objReceiver.Phone
End Sub
참고 항목
IReceiver 인터페이스


IReceiver::SendMode 속성

[C++]

구문
HRESULT get_SendMode(EZSMS_SENDMODE* pVal);

HRESULT put_SendMode(EZSMS_SENDMODE newVal);
매개 변수
pVal
[out, retval] 전송 모드를 받기 위한 BSTR 포인터
newVal
[in] 새로 설정할 전송 모드 (EZSMS_SENDMODE 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
예제
extern IMessage* pMessage;

IReceiver* pReceiver;
pMessage->CreateReceiver(&pReceiver);

pReceiver->put_SendMode(EZSMS_RESERVATION);

EZSMS_SENDMODE SendMode;
pReceiver->get_SendMode(&SendMode);

ASSERT(SendMode == EZSMS_RESERVATION);

pReceiver->Release();
[Visual Basic]

구문
object.SendMode [= newVal]
매개 변수
newVal
새로 설정할 전송 모드
object
Receiver 객체
반환 값
EZSMS_SENDMODE형의 전송 모드를 반환합니다.
예제
Public objMessage As IMessage

Private Sub Test()
    Dim objReceiver As IReceiver

    Set objReceiver = objMessage.CreateReceiver()
    objReceiver.SendMode = EZSMS_RESERVATION

    Debug.Print objReceiver.SendMode
End Sub
참고 항목
IReceiver 인터페이스 , EZSMS_SENDMODE 열거


IReceiver::SendTime 속성

[C++]

구문
HRESULT get_SendTime(DATE* pVal);

HRESULT put_SendTime(DATE newVal);
매개 변수
pVal
[out, retval] 전송 날짜를 받기 위한 BSTR 포인터
newVal
[in] 새로 설정할 전송 날짜/시간
반환 값
반환 값 | 의미
S_OK | 성공
설명
예제
extern IMessage* pMessage;

IReceiver* pReceiver;
pMessage->CreateReceiver(&pReceiver);

DATE dateCurTime = COleDateTime::GetCurrentTime();
pReceiver->put_SendTime(dateCurTime);

DATE dateSendTime;
pReceiver->get_SendTime(&dateSendTime);

ASSERT(date == dateCurTime);

pReceiver->Release();
[Visual Basic]

구문
object.SendTime [= newVal]
매개 변수
newVal
새로 설정할 전송 날짜/시간
object
Receiver 객체
반환 값
Date형의 전송 날짜/시간을 반환합니다.
예제
Public objMessage As IMessage

Private Sub Test()
    Dim objReceiver As IReceiver

    Set objReceiver = objMessage.CreateReceiver()
    objReceiver.SendTime = Now

    Debug.Print objReceiver.Now
End Sub
참고 항목
IReceiver 인터페이스


IReceiver2 인터페이스

 메시지를 전송할 때 사용되는 수신자 정보입니다.

IReceiver 속성
Name 속성 수신자 이름

인터페이스 정보
IID | 6754D29D-ED20-476B-8A77-2B5505E408AF
Implementation | Receiver 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 4.2
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


IReceiver2::Name 속성

[C++]

구문
HRESULT get_Name(BSTR* pVal);

HRESULT put_Name(BSTR newVal);
매개 변수
pVal
[out, retval] 수신자 이름을 받기 위한 BSTR 포인터
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
newVal
[in] 새로 설정할 수신자 이름
반환 값
반환 값 | 의미
S_OK | 성공
설명
예제
extern IMessage* pMessage;

IReceiver* pReceiver;
pMessage->CreateReceiver(&pReceiver);
IReceiver2* pReceiver2;
pReceiver->QueryInterface(__uuidof(IReceiver2), (void**)&pReceiver2));

pReceiver2->put_Name(L"테무칸");

BSTR bstrName;
pReceiver2->get_Name(&bstrName);

ASSERT(wcscmp(bstrName, L"테무칸") == 0);

SysFreeString(bstrName);
pReceiver2->Release();
pReceiver->Release();
[Visual Basic]

구문
object.Name [= newVal]
매개 변수
newVal
새로 설정할 수신자 이름
object
Receiver2 객체
반환 값
String형의 휴대폰 번호를 반환합니다.
예제
Public objMessage As IMessage

Private Sub Test()
    Dim objReceiver As IReceiver
    Dim objReceiver2 As IReceiver2

    Set objReceiver = objMessage.CreateReceiver()
    Set objReceiver2 = objReceiver
    objReceiver2.Name = "테무칸"

    Debug.Print objReceiver2.Name
End Sub
참고 항목
IReceiver 인터페이스 , IReceiver2 인터페이스


IReceivers 인터페이스 (컬렉션)

 수신자 정보(IReceiver)의 컬렉션 인터페이스입니다.

IReceivers 속성과 메서드
_NewEnum 속성 | IReceiver 인터페이스의 집합인 IEnumVARIANT 인터페이스를 리턴합니다.
Add 메서드 | 수신자 추가
AddDirect 메서드 | 수신자 직접 추가
Count 속성 | IReceiver 아이템의 수를 리턴합니다.
Item 속성 | 지정한 인덱스의 Receiver 객체에 대한 IDispatch 인터페이스를 리턴합니다.
Remove 메서드 | 수신자 삭제

인터페이스 정보
IID | 74E4A813-42B5-4729-BA40-938E958BC0E7
Implementation | Receivers 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 3.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


IReceivers::Add 메서드

[C++]

구문
HRESULT Add(IReceiver* pReceiver);
매개 변수
pReceiver
[in] 컬렉션에 추가할 Receiver 객체의 인터페이스
반환 값
반환 값 | 의미
S_OK | 성공
E_INVALIDARG | 매개 변수가 명시되지 않았다.
설명
컬렉션에 수신자 정보 하나를 추가합니다.
예제
extern IMessage* pMessage;

IReceivers* pReceivers;
IReceiver* pReceiver;

pMessage->CreateReceivers(&pReceivers);
pMessage->CreateReceiver(&pReceiver);
pReceiver->put_Phone(L"01012345678");
pReceiver->put_Message(L"메시지 테스트");
pReceivers->Add(pReceiver);

pReceiver->Release();
pReceivers->Release();
[Visual Basic]

구문
object.Add(objReceiver As IReceiver)
매개 변수
objReceiver
추가할 Receiver 객체
object
Receivers 객체
예제
Public objMessage As IMessage

Private Sub AddReceiver_Click()
    Dim objReceivers As IReceivers
    Dim objReceiver As IReceiver

    Set objReceivers = objMessage.CreateReceivers()
    Set objReceiver = objMessage.CreateReceiver()

    objReceiver.Phone = "01012345678"
    objReceiver.Message = "메시지 테스트"
    objReceivers.Add objReceiver

    Set objReceiver = Nothing
    Set objReceivers = Nothing
End Sub
참고 항목
IReceivers 인터페이스 , IReceiver 인터페이스


IReceivers::AddDirect 메서드

[C++]

구문
HRESULT AddDirect(
    BSTR Phone,
    BSTR Message,
    EZSMS_SENDMODE SendMode,
    DATE SendTime
);
매개 변수
Phone
[in] 받을 사람의 휴대폰 번호
※ 주의: 휴대폰 번호는 반드시 숫자로만 되어 있어야 합니다. 예를 들어 010-1234-1234 는 01012341234로 바꿔주어야 합니다.
Message
[in] 전송할 메시지
SendMode
[in] 전송 모드(즉시 전송, 예약 전송)
SendTime
[in] 전송 시간(즉시 전송인 경우는 Now로 대체)
반환 값
반환 값 | 의미
S_OK | 성공
E_OUTOFMEMORY | 메모리가 충분하지 않다.
설명
컬렉션에 수신자 정보를 직접 추가합니다.
예제
extern IMessage* pMessage;

IReceivers* pReceivers;

pMessage->CreateReceivers(&pReceivers);
pReceivers->AddDirect(L"01012345678", L"메시지 테스트", EZSMS_DIRECT, 0);

pReceivers->Release();
[Visual Basic]

구문
object.AddDirect( _
    Phone As String, _
    Message As String, _
    SendMode As EZSMS_SENDMODE, _
    SendTime As Date _
)
매개 변수
Phone
받을 사람의 휴대폰 번호
※ 주의: 휴대폰 번호는 반드시 숫자로만 되어 있어야 합니다. 예를 들어 010-1234-1234 는 01012341234로 바꿔주어야 합니다.
Message
전송할 메시지
SendMode
전송 모드(즉시 전송, 예약 전송)
SendTime
전송 시간(즉시 전송인 경우는 Now로 대체)
object
Receivers 객체
에러 코드
에러 코드 | 의미
&H8007000E | 메모리가 부족하다.
예제
Public objMessage As IMessage

Private Sub AddReceiver_Click()
    Dim objReceivers As IReceivers

    Set objReceivers = objMessage.CreateReceivers()
    objReceivers.AddDirect "01012345678", "메시지 테스트", EZSMS_DIRECT, Now

    Set objReceivers = Nothing
End Sub
참고 항목
IReceivers 인터페이스 , EZSMS_SENDMODE 열거


IReceivers::Remove 메서드

[C++]

구문
HRESULT Remove(LONG Index);
매개 변수
Index
[in] 삭제할 아이템 인덱스
반환 값
반환 값 | 의미
S_OK | 성공
E_INVALIDARG | Index의 범위가 벗어났다.
설명
컬렉션의 특정 인덱스에 존재하는 수신자 정보를 삭제합니다.
예제
extern IReceivers* pReceivers;

// 세번째 아이템 삭제
pReceivers->Remove(2);
[Visual Basic]

구문
object.Remove(Index As Long)
매개 변수
Index
삭제할 아이템 인덱스
object
Receivers 객체
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수의 범위가 잘 못 됐다.
예제
Private Sub RemoveReceiver_Click()
    Dim objReceivers As IReceivers

    ' 첫번째 아이템 삭제
    objReceivers.Remove 0
End Sub
참고 항목
IReceivers 인터페이스


IReceivers::_NewEnum 속성

[C++]

구문
HRESULT get__NewEnum(IUnknown** pVal);
매개 변수
pVal
[out, retval] IReceiver 인터페이스의 VARIANT 배열이 구현되어 있는 IEnumVARIANT의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | pVal 인자가 NULL이다.
E_OUTOFMEMORY | 메모리가 부족하다.
설명
이 속성은 C++보다는 Visual Basic이나 Scripting 계열의 언어에서 사용하기 위해 마련된 속성입니다. 예를 들어 Visual Basic의 For Each ... Next문은 컬렉션 인터페이스의 get__NewEnum 속성을 통해 객체를 반복하는 방법을 얻습니다.
[Visual Basic]

예제
Public objReceivers As IReceivers

Private Sub ViewReceivers_Click()
    Dim objReceiver As IReceiver
    For Each objReceiver In objReceivers
        Debug.Print "휴대폰: " & objReceiver.Phone
    Next
End Sub
참고 항목
IReceivers 컬렉션 , IReceiver 인터페이스


IReceivers::Count 속성

[C++]

구문
HRESULT get_Count(LONG* pVal);
매개 변수
pVal
[out, retval] 컬렉션 내에 IReceiver 인터페이스의 개수가 저장될 LONG 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
컬렉션 내에 Receiver 객체의 개수를 세는 역할을 합니다.
예제
extern IReceivers* pReceivers;

LONG nCnt = 0;
pReceivers->get_Count(&nCnt);

for(int i=0; i<nCnt; i++)
{
    IDispatch* pDisp = NULL;
    if(SUCCEEDED(pReceivers->get_Item(i, &pDisp)))
    {
        IReceiver* pReceiver = NULL;
        if(SUCCEEDED(pDisp->QueryInterface(__uuidof(IReceiver), (void**)&pReceiver)))
        {
            // 처리
            pReceiver->Release();
        }
        pDisp->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[pCount =] object.Count
매개 변수
pCount
컬렉션 내 Receiver 객체의 개수를 저장할 Long형 변수
object
IReceivers 컬렉션
예제
Public objReceivers As IReceivers

Private Sub ViewReceivers_Click()
    Dim objReceiver As IReceiver
    For I = 0 To objReceivers.Count
        Set objReceiver = objReceivers(I)
        Debug.Print "휴대폰: " & objReceiver.Phone
        Set objReceiver = Nothing
    Next
End Sub
참고 항목
IReceivers 컬렉션 , IReceiver 인터페이스


IReceivers::Item 속성

[C++]

구문
HRESULT get_Item(
    LONG nIndex,
    IDispatch** pVal
);
매개 변수
nIndex
[in] 컬렉션에서 데이터를 얻고자 하는 인덱스 지정
pVal
[out, retval] 컬렉션 중 nIndex에 위치한 아이템을 얻어올 IDispatch 인터페이스의 포인터의 포인터.
얻어온 아이템에서 IReceiver 인터페이스를 쿼리(QueryInterface)하여 사용할 수 있다.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | pVal 인자가 NULL이다.
E_INVALIDARG | 매개 변수의 범위가 잘 못 됐다.
E_OUTOFMEMORY | 메모리가 부족하다.
설명
컬렉션 내 특정 위치에 있는 Receiver 객체의 인터페이스를 얻습니다.
예제
extern IReceivers* pReceivers;

LONG nCnt = 0;
pReceivers->get_Count(&nCnt);

for(int i=0; i<nCnt; i++)
{
    IDispatch* pDisp = NULL;
    if(SUCCEEDED(pReceivers->get_Item(i, &pDisp)))
    {
        IReceiver* pReceiver = NULL;
        if(SUCCEEDED(pDisp->QueryInterface(__uuidof(IReceiver), (void**)&pReceiver)))
        {
            // 처리
            pReceiver->Release();
        }
        pDisp->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[ppReceiver =] object.Item(Index As Long)
매개 변수
ppReceiver
IReceiver 인터페이스를 저장할 변수
Index
컬렉션에서 데이터를 얻고자 하는 인덱스
object
IReceivers 컬렉션
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수의 범위가 잘 못 됐다.
&H8007000E | 메모리가 부족하다.
예제
Public objReceivers As IReceivers

Private Sub ViewReceivers_Click()
    Dim objReceiver As IReceiver
    For I = 0 To objReceivers.Count
        Set objReceiver = objReceivers.Item(I)
        Debug.Print "휴대폰: " & objReceiver.Phone
        Set objReceiver = Nothing
    Next
End Sub
참고 항목
IReceivers 컬렉션 , IReceiver 인터페이스


ISendResult 인터페이스

 메시지를 전송한 후 각 수신자에 대한 각각의 결과 정보입니다.

ISendResult 속성과 메서드
Date 속성 | 로그 날짜
Index 속성 | 로그 인덱스
MakeLogList 메서드 | 이 결과물을 LogList 객체로 만들어 리턴한다.
Phone 속성 | 수신자 휴대폰 번호
Result 속성 | 메시지 접수 결과

인터페이스 정보
IID | 5111672A-B3EA-4111-9937-08C2779D7404
Implementation | SendResult 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 3.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ISendResult::MakeLogList 메서드

[C++]

구문
HRESULT MakeLogList(ILogList** ppLogList);
매개 변수
ppLogList
[out, retval] 생성된 로그 객체를 받을 ILogList 인터페이스의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | ppReceiver 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
설명
IMessage::RequestLogDetailByList 또는 IMessage::DeleteLogByList 등 ByList로 끝나는 메서드를 사용할 때 이 메서드로 생성된 LogList 객체를 넘겨줄 수 있습니다.
예제
extern IMessage* pMessage;
extern ISendResult* pSendResult;

ILogDetails* pLogDetails;
ILogList* pLogList;

HRESULT hr;
hr = pSendResult->MakeLogList(&pLogList);
if(SUCCEEDED(hr))
{
    hr = RequestLogDetailByList(pLogList, &pLogDetails);
    // ...
    pLogList->Release();
}
[Visual Basic]

구문
object.MakeLogList() As ILogList
매개 변수
object
SendResult 객체
반환 값
생성된 로그 객체의 인터페이스인 ILogList를 반환합니다.
에러 코드
에러 코드 | 의미
&H8007000E | 메모리가 충분하지 않다.
예제
Public objMessage As IMessage

Private Sub MakeLogListTest(objSendResult As ISendResult)
    Dim objLogList As ILogList

    Set objLogList = objSendResult.MakeLogList()
    Set objLogDetails = objMessage.RequestLogDetailByList(objLogList)
    ' ...
End Function
참고 항목
ISendResult 인터페이스 , ILogList 인터페이스 , IMessage::RequestLogDetailByList 메서드


ISendResult::Date 속성

[C++]

구문
HRESULT get_Date(BSTR* pVal);
매개 변수
pVal
[out, retval] 날짜를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 메시지 전송 후 서버에 기록된 로그의 날짜 데이터 값을 가지고 있습니다. 이 날짜의 문자열은 200404 같이 년도 4자리와 월 2자리로 구성되어 있습니다.
예제
extern IMessage* pMessage;
extern ISendResult* pSendResult;

IDeleteResult* pDeleteResult;
BSTR bstrDate;
BSTR bstrIndex;
EZSMS_MESSAGE_TYPE Type;

pSendResult->get_Date(&bstrDate);
pSendResult->get_Index(&bstrIndex);
pSendResult->get_Type(&Type);

LONG nYearMonth = atol(_bstr_t(bstrIndex));
LONG nYear = nYearMonth / 100;
LONG nMonth = nYearMonth % 100;
HRESULT hr = pMessage->DeleteLog(nYear, nMonth, bstrIndex, Type, &pDeleteResult);

// ...

SysFreeString(bstrIndex);
SysFreeString(bstrDate);
[Visual Basic]

구문
' 읽기전용
[pDate =] object.Date
매개 변수
pDate
날짜를 저장할 String형 변수.
object
SendResult 객체
예제
Public objMessage As IMessage

Private Function DeleteLog(objSendResult As ISendResult) As Boolean
    Dim objDeleteResult As IDeleteResult

    Set objDeleteResult = objMessage.DeleteLog( _
        CLng(Left(objSendResult.Date, 4)), _
        CLng(Right(objSendResult.Date, 2)), _
        objSendResult.Index, _
        objSendResult.Type)

    ' ...

    Set objDeleteResult = Nothing
End Function
참고 항목
ISendResult 인터페이스 , ILogList 인터페이스 , IMessage::DeleteLog 메서드


ISendResult::Index 속성

[C++]

구문
HRESULT get_Index(BSTR* pVal);
매개 변수
pVal
[out, retval] 로그의 고유 Index 번호를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
이 속성은 메시지 전송 후 서버에 기록된 로그의 인덱스 값을 가지고 있습니다.
예제
extern IMessage* pMessage;
extern ISendResult* pSendResult;

IDeleteResult* pDeleteResult;
BSTR bstrDate;
BSTR bstrIndex;
EZSMS_MESSAGE_TYPE Type;

pSendResult->get_Date(&bstrDate);
pSendResult->get_Index(&bstrIndex);
pSendResult->get_Type(&Type);

LONG nYearMonth = atol(_bstr_t(bstrIndex));
LONG nYear = nYearMonth / 100;
LONG nMonth = nYearMonth % 100;
HRESULT hr = pMessage->DeleteLog(nYear, nMonth, bstrIndex, Type, &pDeleteResult);

// ...

SysFreeString(bstrIndex);
SysFreeString(bstrDate);
[Visual Basic]

구문
' 읽기전용
[pIndex =] object.Index
매개 변수
pIndex
로그의 고유 Index 번호를 저장할 String형 변수.
object
SendResult 객체
예제
Public objMessage As IMessage

Private Function DeleteLog(objSendResult As ISendResult) As Boolean
    Dim objDeleteResult As IDeleteResult

    Set objDeleteResult = objMessage.DeleteLog( _
        CLng(Left(objSendResult.Date, 4)), _
        CLng(Right(objSendResult.Date, 2)), _
        objSendResult.Index, _
        objSendResult.Type)

    ' ...

    Set objDeleteResult = Nothing
End Function
참고 항목
ISendResult 인터페이스 , ILogList 인터페이스 , IMessage::DeleteLog 메서드


ISendResult::Phone 속성

[C++]

구문
HRESULT get_Phone(BSTR* pVal);
매개 변수
pVal
[out, retval] 휴대폰 번호를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
설명
IMessage::Send 또는 IMessage::SendOne 메서드로 문자를 전송하면 각 수신자에 대한 결과가 반환됩니다. 반환 결과가 컬렉션이라면, 수신자 목록의 순서대로 전송 결과가 만들어집니다.
예제
extern ISendResult* pSendResult;

BSTR bstrPhone;
EZSMS_RESULT enumSucc;
pSendResult->get_Phone(&bstrPhone);
pSendResult->get_Result(&enumSucc);

wprintf(L"%s: %s\n", bstrPhone, enumSucc == EZSMS_SUCCEEDED ? L"성공" : L"실패");
SysFreeString(bstrPhone);
[Visual Basic]

구문
' 읽기전용
[pPhone =] object.Phone
매개 변수
pPhone
휴대폰 번호를 저장할 String형 변수
object
ISendResult 인터페이스
예제
Public objSendResult As ISendResult

Private Sub VerifySendResult_Click()
    If objSendResult.Result = EZSMS_SUCCEEDED Then
        Debug.Print objSendResult.Phone & ": " & "성공"
    Else
        Debug.Print objSendResult.Phone & ": " & "실패"
    End If
End Sub
참고 항목
ISendResult 인터페이스 , IMessage::SendOne 메서드 , IMessage::Send 메서드


ISendResult::Result 속성

[C++]

구문
HRESULT get_Result(EZSMS_RESULT* pVal);
매개 변수
pVal
[out, retval] 접수 결과를 저장할 EZSMS_RESULT 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
IMessage::Send 또는 IMessage::SendOne 메서드로 문자를 전송하면 각 수신자에 대한 결과가 반환됩니다. 반환 결과가 컬렉션이라면, 수신자 목록의 순서대로 전송 결과가 만들어집니다.

이 속성은 접수 결과를 얻는 것이며 실제로 전송된 결과를 얻으려면 IMessage::RequestLog 메서드를 호출하여야 합니다.
예제
extern ISendResult* pSendResult;

BSTR bstrPhone;
EZSMS_RESULT enumSucc;
pSendResult->get_Phone(&bstrPhone);
pSendResult->get_Result(&enumSucc);

wprintf(L"%s: %s\n", bstrPhone, enumSucc == EZSMS_SUCCEEDED ? L"성공" : L"실패");
SysFreeString(bstrPhone);
[Visual Basic]

구문
' 읽기전용
[pResult =] object.Result
매개 변수
pResult
접수 결과를 저장할 EZSMS_RESULT형 변수
object
ISendResult 인터페이스
예제
Public objSendResult As ISendResult

Private Sub VerifySendResult_Click()
    If objSendResult.Result = EZSMS_SUCCEEDED Then
        Debug.Print objSendResult.Phone & ": " & "성공"
    Else
        Debug.Print objSendResult.Phone & ": " & "실패"
    End If
End Sub
참고 항목
ISendResult 인터페이스 , IMessage::SendOne 메서드 , IMessage::Send 메서드


ISendResult2 인터페이스

 메시지를 전송한 후 각 수신자에 대한 각각의 결과 정보입니다.

ISendResult2 속성
Type 속성 메시지 타입

인터페이스 정보
IID | B9B53F86-3271-4F7F-91AA-1E6BF1E5E83F
Implementation | SendResult 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 4.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ISendResult2::Type 속성

[C++]

구문
HRESULT get_Type(EZSMS_MESSAGE_TYPE* pVal);
매개 변수
pVal
[out, retval] 메시지 타입을 받기 위한 EZSMS_MESSAGE_TYPE 포인터
반환 값
반환 값 | 의미
S_OK | 성공
설명
예제
extern ISendResult* pSendResult;

ISendResult2* pSendResult2 = NULL;
if(SUCCEEDED(pSendResult->QueryInterface(__uuidof(ISendResult2), (void**)&pSendResult2)))
{
    EZSMS_MESSAGE_TYPE Type;
    pSendResult2->get_Type(&Type);

    pSendResult2->Release();
}
[Visual Basic]

구문
object.Type
반환 값
EZSMS_MESSAGE_TYPE형의 메시지 타입을 반환합니다.
예제
Public objSendResult As ISendResult

Private Sub ViewLogDetails_Click()
    Dim objSendResult2 As ISendResult2
    Set objSendResult2 = objSendResult
    Debug.Print "전송Type: " & objSendResult2.Type
    Set objSendResult2 = Nothing
End Sub
참고 항목
ISendResult 인터페이스 , EZSMS_MESSAGE_TYPE 열거


ISendResults 인터페이스 (컬렉션)

 전송 결과(ISendResult)의 컬렉션 인터페이스입니다.

ISendResults 속성과 메서드
_NewEnum 속성 | ISendResult 인터페이스의 집합인 IEnumVARIANT 인터페이스를 리턴합니다.
Count 속성 | ISendResult 아이템의 수를 리턴합니다.
Date 속성 | 로그 날짜
Index 속성 | 로그 인덱스
Item 속성 | 지정한 인덱스의 SendResult 객체에 대한 IDispatch 인터페이스를 리턴합니다.
MakeLogList 메서드 | 이 결과물을 LogList 객체로 만들어 리턴한다.

인터페이스 정보
IID | 8FC814E1-639E-47AB-B32F-67B86298765C
Implementation | SendResults 객체 (ezSMSComponent32.dll)
Inherits from | IDispatch
Minimum availability | ezSMSComponent 3.0
Minimum operating systems | Microsoft Windows 98, Microsoft Windows 2000 Server


ISendResults::MakeLogList 메서드

[C++]

구문
HRESULT MakeLogList(ILogList** ppLogList);
매개 변수
ppLogList
[out, retval] 생성된 로그 객체를 받을 ILogList 인터페이스의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | ppReceiver 가 NULL이다.
E_OUTOFMEMORY | 메모리가 충분하지 않다.
EZSMS_E_LOGLISTNOTFOUND | 컬렉션 내 로그 정보가 존재하지 않다
설명
IMessage::RequestLogDetailByList 또는 IMessage::DeleteLogByList 등 ByList로 끝나는 메서드를 사용할 때 이 메서드로 생성된 LogList 객체를 넘겨줄 수 있습니다.
예제
extern IMessage* pMessage;
extern ISendResults* pSendResults;

ILogDetails* pLogDetails;
ILogList* pLogList;

HRESULT hr;
hr = pSendResults->MakeLogList(&pLogList);
if(SUCCEEDED(hr))
{
    hr = RequestLogDetailByList(pLogList, &pLogDetails);
    // ...
    pLogList->Release();
}
[Visual Basic]

구문
object.MakeLogList() As ILogList
매개 변수
object
SendResults 객체
반환 값
생성된 로그 객체의 인터페이스인 ILogList를 반환합니다.
에러 코드
에러 코드 | 의미
&H8007000E | 메모리가 충분하지 않다.
EZSMS_E_LOGLISTNOTFOUND (&H8004A009) | 컬렉션 내 로그 정보가 존재하지 않다
예제
Public objMessage As IMessage

Private Sub MakeLogListTest(objSendResults As ISendResults)
    Dim objLogList As ILogList

    Set objLogList = objSendResults.MakeLogList()
    Set objLogDetails = objMessage.RequestLogDetailByList(objLogList)
    ' ...
End Function
참고 항목
ISendResults 인터페이스 , ILogList 인터페이스 , IMessage::RequestLogDetailByList 메서드


ISendResults::_NewEnum 속성

[C++]

구문
HRESULT get__NewEnum(IUnknown** pVal);
매개 변수
pVal
[out, retval] ISendResult 인터페이스의 VARIANT 배열이 구현되어 있는 IEnumVARIANT의 포인터의 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | pVal 인자가 NULL이다.
E_OUTOFMEMORY | 메모리가 부족하다.
설명
이 속성은 C++보다는 Visual Basic이나 Scripting 계열의 언어에서 사용하기 위해 마련된 속성입니다. 예를 들어 Visual Basic의 For Each ... Next문은 컬렉션 인터페이스의 get__NewEnum 속성을 통해 객체를 반복하는 방법을 얻습니다.
[Visual Basic]

예제
Public objSendResults As ISendResults

Private Sub ViewSendResults_Click()
    Dim objSendResult As ISendResult
    For Each objSendResult In objSendResults
        Debug.Print "휴대폰: " & objSendResult.Phone
    Next
End Sub
참고 항목
ISendResults 컬렉션 , ISendResult 인터페이스


ISendResults::Count 속성

[C++]

구문
HRESULT get_Count(LONG* pVal);
매개 변수
pVal
[out, retval] 컬렉션 내에 ISendResult 인터페이스의 개수가 저장될 LONG 포인터.
반환 값
반환 값 | 의미
S_OK | 성공
설명
컬렉션 내에 SendResult 객체의 개수를 세는 역할을 합니다.
예제
extern ISendResults* pSendResults;

LONG nCnt = 0;
pSendResults->get_Count(&nCnt);

for(int i=0; i<nCnt; i++)
{
    IDispatch* pDisp = NULL;
    if(SUCCEEDED(pSendResults->get_Item(i, &pDisp)))
    {
        ISendResult* pSendResult = NULL;
        if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ISendResult), (void**)&pSendResult)))
        {
            // 처리
            pSendResult->Release();
        }
        pDisp->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[pCount =] object.Count
매개 변수
pCount
컬렉션 내 SendResult 객체의 개수를 저장할 Long형 변수
object
ISendResults 컬렉션
예제
Public objSendResults As ISendResults

Private Sub ViewSendResults_Click()
    Dim objSendResult As ISendResult
    For I = 0 To objSendResults.Count
        Set objSendResult = objSendResults(I)
        Debug.Print "휴대폰: " & objSendResult.Phone
        Set objSendResult = Nothing
    Next
End Sub
참고 항목
ISendResults 컬렉션 , ISendResult 인터페이스


ISendResults::Item 속성

[C++]

구문
HRESULT get_Item(
    LONG nIndex,
    IDispatch** pVal
);
매개 변수
nIndex
[in] 컬렉션에서 데이터를 얻고자 하는 인덱스 지정
pVal
[out, retval] 컬렉션 중 nIndex에 위치한 아이템을 얻어올 IDispatch 인터페이스의 포인터의 포인터.
얻어온 아이템에서 ISendResult 인터페이스를 쿼리(QueryInterface)하여 사용할 수 있다.
반환 값
반환 값 | 의미
S_OK | 성공
E_POINTER | pVal 인자가 NULL이다.
E_INVALIDARG | 매개 변수의 범위가 잘 못 됐다.
E_OUTOFMEMORY | 메모리가 부족하다.
설명
컬렉션 내 특정 위치에 있는 SendResult 객체의 인터페이스를 얻습니다.
예제
extern ISendResults* pSendResults;

LONG nCnt = 0;
pSendResults->get_Count(&nCnt);

for(int i=0; i<nCnt; i++)
{
    IDispatch* pDisp = NULL;
    if(SUCCEEDED(pSendResults->get_Item(i, &pDisp)))
    {
        ISendResult* pSendResult = NULL;
        if(SUCCEEDED(pDisp->QueryInterface(__uuidof(ISendResult), (void**)&pSendResult)))
        {
            // 처리
            pSendResult->Release();
        }
        pDisp->Release();
    }
}
[Visual Basic]

구문
' 읽기전용
[ppSendResult =] object.Item(Index As Long)
매개 변수
ppSendResult
ISendResult 인터페이스를 저장할 변수
Index
컬렉션에서 데이터를 얻고자 하는 인덱스
object
ISendResults 컬렉션
에러 코드
에러 코드 | 의미
&H80070057 | 매개 변수의 범위가 잘 못 됐다.
&H8007000E | 메모리가 부족하다.
예제
Public objSendResults As ISendResults

Private Sub ViewSendResults_Click()
    Dim objSendResult As ISendResult
    For I = 0 To objSendResults.Count
        Set objSendResult = objSendResults.Item(I)
        Debug.Print "휴대폰: " & objSendResult.Phone
        Set objSendResult = Nothing
    Next
End Sub
참고 항목
ISendResults 컬렉션 , ISendResult 인터페이스


열거자

 아래는 ezSMSComponent에서 사용된 에러 코드, 전송 모드, 전송 상태 등을 나타내는 열거자 목록입니다.

ezSMSComponent 상수들
EZSMS_E_CONSTANTS | IMessage 인터페이스의 메서드 호출 후 에러 코드를 확인할 때 사용
EZSMS_LOGBY | 전송 내역 요청시 검색 방식을 지정할 때 사용
EZSMS_MESSAGE_TYPE | 문자 전송, 전송 내역 등에서 사용되는 메시지 타입(SMS, LMS, MMS)
EZSMS_RESULT | 로그인, 문자 전송, 전송 내역 요청 등 결과를 확인할 때 사용
EZSMS_SENDMODE | 문자 전송, 전송 내역에서 사용되는 전송 모드(즉시 전송, 예약 전송)
EZSMS_TRANS_RESULT | Message가 전송된 후 결과가 어떤지 확인할 때 사용
EZSMS_TRANS_STATUS | Message를 요청하고 있는지, 결과를 대기중인지, 결과를 받았는지를 확인할 때 사용


EZSMS_E_CONSTANTS 열거

 IMessage의 메서드나 속성 실행 시 반환하는 오류 코드 집합입니다.

구문
[C++]
typedef enum {
    EZSMS_E_CANNOTASSIGN = 0x8004A008,
    EZSMS_E_DEPRECATED = 0x8004A00D,
    EZSMS_E_FILEISTOOLARGE = 0x8004A00C,
    EZSMS_E_LOGINFAIL = 0x8004A003,
    EZSMS_E_LOGLISTNOTFOUND = 0x8004A009,
    EZSMS_E_NEEDFORCALL = 0x8004A00A,
    EZSMS_E_NOTADDED = 0x8004A00B,
    EZSMS_E_NOTCONNECTED = 0x8004A001,
    EZSMS_E_NOTLOGINED = 0x8004A007,
    EZSMS_E_RECEIVERNOTFOUND = 0x8004A005,
    EZSMS_E_SERVERERROR = 0x8004A002,
    EZSMS_E_SOCKINITFAIL = 0x8004A006,
    EZSMS_E_TOOBUSY = 0x8004A004,
} EZSMS_E_CONSTANTS;

[Visual Basic]
Enum EZSMS_E_CONSTANTS
    EZSMS_E_CANNOTASSIGN = &H8004A008
    EZSMS_E_DEPRECATED = &H8004A00D
    EZSMS_E_FILEISTOOLARGE = &H8004A00C
    EZSMS_E_LOGINFAIL = &H8004A003
    EZSMS_E_LOGLISTNOTFOUND = &H8004A009
    EZSMS_E_NEEDFORCALL = &H8004A00A
    EZSMS_E_NOTADDED = &H8004A00B
    EZSMS_E_NOTCONNECTED = &H8004A001
    EZSMS_E_NOTLOGINED = &H8004A007
    EZSMS_E_RECEIVERNOTFOUND = &H8004A005
    EZSMS_E_SERVERERROR = &H8004A002
    EZSMS_E_SOCKINITFAIL = &H8004A006
    EZSMS_E_TOOBUSY = &H8004A004
End Enum
상수
EZSMS_E_CANNOTASSIGN
쓰기 가능한 속성이지만, 값을 할당할 수 없을 때
EZSMS_E_DEPRECATED
더 이상 사용되지 않는 메서드, 속성일 때
EZSMS_E_FILEISTOOLARGE
파일의 용량이 너무 클 때
EZSMS_E_LOGINFAIL
로그인 정보가 일치하지 않을 때 (로그인 되지 않았을 때).
Send나 RequestLog 등의 메서드 수행 후 반환 값이 EZSMS_E_LOGINFAIL일 경우, 사용자 계정 정보를 다시 설정(SetAccountInfo)해야 합니다.
EZSMS_E_LOGLISTNOTFOUND
요청할 로그 목록이 비어 있을 때
이 값은 IMessage::DeleteLogByList, IMessage::CancelReservationByList, IMessage::RequestLogDetailByList 등의 메서드에서 요청할 로그 목록을 지정하지 않았을 때 반환됩니다.
EZSMS_E_NEEDFORCALL
잔여 콜 수가 부족하여 SMS 전송에 실패하였을 때.
EZSMS_E_NOTADDED
이미지를 추가하는데 실패했을 때
EZSMS_E_NOTCONNECTED
서버에 접속할 수 없을 때.
EZSMS_E_NOTLOGINED
로그인 과정을 수행하지 않은 상태에서 서버에 어떤 작업을 요청했을 때
EZSMS_E_RECEIVERNOTFOUND
수신자 정보 목록이 비어 있을 때
이 값은 IMessage::Send, IMessage::SendOne 메서드에서 수신자를 지정하지 않았을 때 반환됩니다.
EZSMS_E_SERVERERROR
서버 처리 중 오류가 발생 했을 때.
EZSMS_E_SOCKINITFAIL
소켓 초기화중 오류가 발생했을 때(이 때는 Message 객체가 생성되지 않습니다)
EZSMS_E_TOOBUSY
서버 처리가 지연되고 있을 때.
참고 항목
IMessage::GetErrorMessage 메서드


EZSMS_LOGBY 열거

 IMessage의 RequestLog 메서드를 호출할 때 사용되는 상수 값으로써, 전송 내역 중 어떤 것을 요청할 것인가를 결정합니다.

구문
[C++]
typedef enum {
    EZSMS_BYALL = 0,
    EZSMS_BYRESERVATION = 1,
} EZSMS_LOGBY;

[Visual Basic]
Enum EZSMS_RESULT
    EZSMS_BYALL = 0
    EZSMS_BYRESERVATION = 1
End Enum
상수
EZSMS_BYALL
요청한 날짜의 전송 내역을 검색합니다.
EZSMS_BYRESERVATION
아직 전송되지 않은, 예약된 항목만 검색합니다.
참고 항목
IMessage::RequestLog 메서드


EZSMS_MESSAGE_TYPE 열거

 Message 타입을 나타내는 상수 집합입니다.

구문
[C++]
typedef enum {
    EZSMS_MESSAGE_TYPE_ALL = 0,
    EZSMS_MESSAGE_TYPE_SMS = 1,
    EZSMS_MESSAGE_TYPE_LMS = 2,
    EZSMS_MESSAGE_TYPE_MMS = 3
} EZSMS_MESSAGE_TYPE;

[Visual Basic]
Enum EZSMS_MESSAGE_TYPE
    EZSMS_MESSAGE_TYPE_ALL = 0
    EZSMS_MESSAGE_TYPE_SMS = 1
    EZSMS_MESSAGE_TYPE_LMS = 2
    EZSMS_MESSAGE_TYPE_MMS = 3
End Enum
상수
EZSMS_MESSAGE_TYPE_ALL
모든 문자 (RequestLog, RequestLogBound 메서드에서만 사용)
EZSMS_MESSAGE_TYPE_SMS
SMS 문자
EZSMS_MESSAGE_TYPE_LMS
LMS 문자
EZSMS_MESSAGE_TYPE_MMS
MMS 문자
참고 항목
IMessage::CreateContents 메서드
, IContents::Type 속성
, ILogList3::Type 속성
, ISendResult2::Type 속성
, ILogDetails2::Type 속성


EZSMS_SENDMODE 열거

 Message 전송 방식을 나타내는 상수 집합입니다.

구문
[C++]
typedef enum {
    EZSMS_RESERVATION = 0,
    EZSMS_DIRECT = 1,
} EZSMS_SENDMODE;

[Visual Basic]
Enum EZSMS_SENDMODE
    EZSMS_RESERVATION = 0
    EZSMS_DIRECT = 1
End Enum
상수
EZSMS_RESERVATION
예약 전송임을 뜻함.
EZSMS_DIRECT
즉시 전송임을 뜻함.
참고 항목
IMessage::CreateReceiverDirect 메서드
, ILogList::SendMode 속성
, IReceiver::SendMode 속성
, IReceivers::AddDirect 메서드


EZSMS_TRANS_RESULT 열거

 상세 전송 내역에서 Message를 전송한 결과를 나타내는 상수 집합입니다.

구문
[C++]
typedef enum {
    EZSMS_TRANS_FAILED = 0,
    EZSMS_TRANS_SUCCEEDED = 1,
    EZSMS_TRANS_NOTEXISTNUMBER = 2,
} EZSMS_TRANS_RESULT;

[Visual Basic]
Enum EZSMS_TRANS_RESULT
    EZSMS_TRANS_FAILED = 0
    EZSMS_TRANS_SUCCEEDED = 1
    EZSMS_TRANS_NOTEXISTNUMBER = 2
End Enum
상수
EZSMS_TRANS_FAILED
전송 실패한 경우.
EZSMS_TRANS_SUCCEEDED
전송 성공한 경우.
EZSMS_TRANS_NOTEXISTNUMBER
없는 번호인 경우.
참고 항목
ILogDetail::Result 속성


EZSMS_TRANS_STATUS 열거

 상세 전송 내역에서 Message 전송 진행중인 상태를 나타내는 상수 집합입니다.

구문
[C++]
typedef enum {
    EZSMS_TRANS_REQUESTED = 0,
    EZSMS_TRANS_WAITING = 1,
    EZSMS_TRANS_RECEIVED = 2,
} EZSMS_TRANS_STATUS;

[Visual Basic]
Enum EZSMS_TRANS_STATUS
    EZSMS_TRANS_REQUESTED = 0
    EZSMS_TRANS_WAITING = 1
    EZSMS_TRANS_RECEIVED = 2
End Enum
상수
EZSMS_TRANS_REQUESTED
전송 요청중.
EZSMS_TRANS_WAITING
결과 수신 대기중.
EZSMS_TRANS_RECEIVED
결과를 받은 상태.
참고 항목
ILogDetail::Status 속성


EZSMS_RESULT 열거

 요청에 대한 결과를 나타내는 상수 집합입니다.

구문
[C++]
typedef enum {
    EZSMS_FAILED = 0,
    EZSMS_SUCCEEDED = 1,
} EZSMS_RESULT;

[Visual Basic]
Enum EZSMS_RESULT
    EZSMS_FAILED = 0
    EZSMS_SUCCEEDED = 1
End Enum
상수
EZSMS_FAILED
요청이 실패한 경우.
EZSMS_SUCCEEDED
요청이 성공한 경우.
참고 항목
ISendResult::Result 속성 , ILoginInfo::Logined 속성


ISendResults::Date 속성

[C++]

구문
HRESULT get_Date(BSTR* pVal);
매개 변수
pVal
[out, retval] 날짜를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
EZSMS_E_LOGLISTNOTFOUND | 컬렉션 내 로그 정보가 존재하지 않다
설명
이 속성은 메시지 전송 후 서버에 기록된 로그의 날짜 데이터 값을 가지고 있습니다. 이 날짜의 문자열은 200404 같이 년도 4자리와 월 2자리로 구성되어 있습니다.
예제
extern IMessage* pMessage;
extern ISendResults* pSendResults;

IDeleteResult* pDeleteResult;
BSTR bstrDate;
BSTR bstrIndex;
EZSMS_MESSAGE_TYPE Type;

pSendResults->get_Date(&bstrDate);
pSendResults->get_Index(&bstrIndex);
pSendResults->get_Type(&Type);

LONG nYearMonth = atol(_bstr_t(bstrIndex));
LONG nYear = nYearMonth / 100;
LONG nMonth = nYearMonth % 100;
HRESULT hr = pMessage->DeleteLog(nYear, nMonth, bstrIndex, Type, &pDeleteResult);

// ...

SysFreeString(bstrIndex);
SysFreeString(bstrDate);
[Visual Basic]

구문
' 읽기전용
[pDate =] object.Date
매개 변수
pDate
날짜를 저장할 String형 변수.
object
SendResults 객체
에러 코드
에러 코드 | 의미
EZSMS_E_LOGLISTNOTFOUND (&H8004A009) | 컬렉션 내 로그 정보가 존재하지 않다
예제
Public objMessage As IMessage

Private Function DeleteLog(objSendResults As ISendResults) As Boolean
    Dim objDeleteResult As IDeleteResult

    Set objDeleteResult = objMessage.DeleteLog( _
        CLng(Left(objSendResults.Date, 4)), _
        CLng(Right(objSendResults.Date, 2)), _
        objSendResults.Index, _
        objSendResults.Type)

    ' ...

    Set objDeleteResult = Nothing
End Function
참고 항목
ISendResults 인터페이스 , ILogList 인터페이스 , IMessage::DeleteLog 메서드


ISendResults::Index 속성

[C++]

구문
HRESULT get_Index(BSTR* pVal);
매개 변수
pVal
[out, retval] 로그의 고유 Index 번호를 저장할 BSTR 포인터.
※ 주의: COM 특성상 값을 얻은 후 SysFreeString으로 *pVal을 해제해야 합니다. (예제 참고)
반환 값
반환 값 | 의미
S_OK | 성공
EZSMS_E_LOGLISTNOTFOUND | 컬렉션 내 로그 정보가 존재하지 않다
설명
이 속성은 메시지 전송 후 서버에 기록된 로그의 인덱스 값을 가지고 있습니다.
예제
extern IMessage* pMessage;
extern ISendResults* pSendResults;

IDeleteResult* pDeleteResult;
BSTR bstrDate;
BSTR bstrIndex;
EZSMS_MESSAGE_TYPE Type;

pSendResults->get_Date(&bstrDate);
pSendResults->get_Index(&bstrIndex);
pSendResults->get_Type(&Type);

LONG nYearMonth = atol(_bstr_t(bstrIndex));
LONG nYear = nYearMonth / 100;
LONG nMonth = nYearMonth % 100;
HRESULT hr = pMessage->DeleteLog(nYear, nMonth, bstrIndex, Type, &pDeleteResult);

// ...

SysFreeString(bstrIndex);
SysFreeString(bstrDate);
[Visual Basic]

구문
' 읽기전용
[pIndex =] object.Index
매개 변수
pIndex
로그의 고유 Index 번호를 저장할 String형 변수.
object
SendResults 객체
에러 코드
에러 코드 | 의미
EZSMS_E_LOGLISTNOTFOUND (&H8004A009) | 컬렉션 내 로그 정보가 존재하지 않다
예제
Public objMessage As IMessage

Private Function DeleteLog(objSendResults As ISendResults) As Boolean
    Dim objDeleteResult As IDeleteResult

    Set objDeleteResult = objMessage.DeleteLog( _
        CLng(Left(objSendResults.Date, 4)), _
        CLng(Right(objSendResults.Date, 2)), _
        objSendResults.Index, _
        objSendResults.Type)

    ' ...

    Set objDeleteResult = Nothing
End Function
참고 항목
ISendResults 인터페이스 , ILogList 인터페이스 , IMessage::DeleteLog 메서드