Aspose.Email  C++의 경우

이메일 보내기 C++

C++ 및 SMTP를 사용하여 첨부 파일 또는 iCalendar가 포함된 이메일을 보내는 방법

  무료 평가판 다운로드

일반적으로 SMTP 프로토콜은 이메일 메시지를 보내는 데 사용됩니다.메시지를 보내려면 SMTP 서버에 액세스해야 합니다.네트워크에서 SMTP 서버의 주소를 찾고 암호화 포트 및 유형, 로그인 및 권한 부여 방법을 결정해야 합니다.또한 일부 이메일 공급자의 경우 계정 설정에서 SMTP 서버에 대한 액세스를 활성화해야 합니다.또한 소프트웨어에서 OAuth 인증을 구현하는 것이 불편하다면 계정 설정에서 애플리케이션에 대한 별도의 비밀번호를 만들어 볼 수 있습니다.

따라서 준비 작업을 모두 마쳤다면 이제 메시지 전송을 시작할 차례입니다.이를 위해 C++용 Aspose.Email 라이브러리를 사용할 수 있습니다.가장 간단한 예를 생각해 봅시다.

auto smtpClient = MakeObject<SmtpClient>(u"smtp.gmail.com", u"login", u"password", SecurityOptions::SSLAuto);
smtpClient->Send(u"login@gmail.com", u"to@gmail.com", u"subject", u"body");

간단한 텍스트 이메일을 보내려면 이 옵션을 사용하십시오.

C++를 사용하여 첨부 파일이 포함된 이메일 보내기

C++를 사용하여 복잡한 이메일 메시지를 보내야 하는 경우 MailMessage 클래스가 유용할 것입니다.예를 들어, 이전 메시지와 비슷한 메시지를 보내려면:

auto message = MakeObject<MailMessage>(u"login@gmail.com", u"to@aspose.com", u"subject", u"body");
smtpClient->Send(message);

메일메시지 클래스는 훌륭한 도구입니다.이를 통해 EML 및 MSG (Outlook 메시지 형식) 파일 형식으로 저장된 메시지를 보낼 수 있습니다.이 형식을 사용하여 첨부 파일 또는 iCalendar 개체를 전송하여 출석을 설정하거나 확인할 수도 있습니다.MailMessage를 사용하면 수신자, Cc 및 Bcc 수신자 목록을 세부적으로 조정할 수 있습니다.HTML 마크업을 사용하여 이메일을 보낼 수 있습니다.메시지를 보내기 전에 다양한 플래그로 메시지를 표시하고, 메타데이터를 추가하고, 암호화하는 등의 작업을 수행할 수도 있습니다.

사람들이 이메일을 보내기 위해 C++용 Aspose.Email을 선택하는 이유는 무엇입니까?

네, C++용 Aspose.Email은 단순히 이메일 메시지를 보내기 위한 유틸리티가 아닙니다.이 솔루션은 이메일 전송, 수신, 저장 및 처리와 관련된 다양한 작업을 포괄적으로 지원하는 포괄적인 솔루션입니다.또한 이러한 작업을 수행할 때 라이브러리의 한계에 부딪히지 않을 것임을 확신할 수 있습니다.당사는 이 주제를 수년간 연구해 왔으며 지속적으로 기능을 확장하고 있습니다.

비교적 최근에 등장한 작은 도서관을 보셨을 것입니다.많은 사용자들이 직면하는 간단한 문제를 쉽고 자연스럽게 해결합니다.하지만 조금만 물러서자마자 이 소박한 것을 계속 사용하면 목발, 라이브러리 제한을 우회하기 위한 일부 모듈, 작은 라이브러리와 다른 작은 라이브러리를 친구로 만들기 위해 설계된 어댑터 등을 계속 울타리로 묶어야 한다는 것을 알게 됩니다. 이제 작고 멋진 솔루션은 더 이상 유용하지 않습니다.게다가 서버에 전송하면 정기적으로 지속적으로 자동으로 촬영할 수 있습니다. 아무도 이런 종류의 목발과 통합 기능을 테스트한 적이 없기 때문입니다.그리고 아무리 노력해도 조만간 이 라이브러리의 한계에 부딪히게 될 것입니다.그리고 새로운 것을 찾아야 합니다.따라서 이메일을 사용할 때는 C++용 Aspose.Email을 고려해 보는 것이 좋습니다!

SMTP 작업을 위한 클라이언트만 제공하는 것이 아닙니다.첫째, C++로 이메일을 보내기 위한 유일한 프로토콜은 아닙니다.저희 제품을 사용하면 Exchange EWS와 Microsoft Graph를 사용하여 이메일을 보낼 수 있습니다!

이 기사에서는 MailMessage의 가능성에 대해 이미 설명했습니다.그러나 이것은 보낼 편지를 준비하는 유일한 도구는 아닙니다.다음과 같은 작업을 수행할 수 있습니다.

  • 템플릿 엔진을 사용하여 템플릿에서 문자를 생성합니다.
  • OST, PST 및 MBOX 형식의 지원 덕분에 문자로 컨테이너의 압축을 풀 수 있습니다.
  • IMAP, POP3, Exchange EWS 및 WebDAV 프로토콜과 마이크로 소프트 그래프의 지원을 사용하여 사서함에서 편지를 다운로드하십시오.
  • 이메일을 한 형식에서 다른 형식으로 변환합니다.

Exchange Ews 프로토콜을 사용하여 쉽게 편지를 받을 수 있습니다.MAPI 형식으로 제공됩니다.하지만 EML 형식으로 쉽게 변환할 수 있습니다. 그러면 나중에 SMTP 프로토콜을 통해 전송할 수 있습니다.동시에 수신자 목록이나 편지 발신자를 언제든지 변경할 수 있습니다.

C++ 및 SMTP를 사용하여 이메일을 보내는 것은 어떻게 작동합니까?

SMTP 컨피그레이션

SmtpClient 클래스의 인스턴스를 만드는 순간 특별한 일은 발생하지 않습니다.나중에 SMTP 서버에 연결하여 메시지를 보낼 수 있는 설정의 수를 지정하기만 하면 됩니다.모든 마술은 첫 번째 호출에서 일어납니다. send 방법.지금 무슨 일이 벌어지고 있는 걸까요?

사실, 모든 것은 지정한 설정에 따라 다릅니다.몇 가지 옵션을 고려해 보겠습니다.서버 호스트는 지정했지만 포트와 암호화 유형은 지정하지 않았다고 가정해 보겠습니다.이 경우 설정 자동 선택 메커니즘이 시작됩니다.이 메커니즘은 표준 포트와 해당 암호화 알고리즘을 사용하여 SMTP 서버에 연속적으로 연결을 시도하는 것으로 구성됩니다.먼저 암호화된 채널을 통해 서버에 연결을 시도합니다.하지만 실패할 경우 메커니즘은 암호화되지 않은 연결을 설정하려고 시도합니다.암호화되지 않은 프로토콜 버전을 사용하지 않으려면 다음을 지정하십시오. SecurityOptions.SSL_AUTO 설정.또한 이 설정을 통해 서버 설정을 선택할 수 있지만 암호화된 채널만 검사합니다.

서버와의 연결을 설정할 수 있는 경우 권한 부여가 시도됩니다.인증에 실패하면 나중에 사용할 수 있도록 오류 코드가 저장됩니다.매처는 다른 방법으로 연결을 시도합니다.연결하고 로그인할 수 있으면 메시지가 전송됩니다.연결에 실패하면 사용자는 인증 오류 코드 (선택 중에 인증 오류 코드를 저장한 경우) 를 받게 됩니다.따라서 사용자는 자신이 암호를 잘못 입력했거나 다른 실수를 저질렀음을 이해할 수 있습니다.포트 및 암호화 유형 옵션이 하나도 맞지 않고 인증을 시도하지도 않은 경우 사용자는 잘못된 서버 설정을 알리는 오류 메시지를 받게 됩니다.

참고로 SMTPClient (라이브러리의 다른 모든 클라이언트와 마찬가지로) 는 프록시를 통해 SMTP 서버에 연결할 수 있습니다.초기화 중에 프록시 서버 설정을 지정할 수도 있습니다.

SMTP 클라이언트 인증

SmtpClient는 다양한 연결 방법 이상을 지원합니다.또한 다양한 인증 방법을 지원합니다.예를 들어 OAuth 메커니즘을 사용할 수 있습니다.이를 위해 여러 도구를 한 번에 제공합니다.

우선, 토큰 프로바이더입니다.이 클래스는 OAuth 토큰을 저장하고 새로 고치는 데 필요한 모든 데이터를 포함하는 클래스입니다.이 경우 OAuth 인증을 직접 수행하고 OAuth 서버에서 받은 모든 필수 정보를 저장해야 합니다.여기서 RefreshToken은 중요한 역할을 합니다.이는 권한 부여 서버에서 AccessToken과 함께 발행하는 추가 토큰입니다.차이점은 AccessToken은 일반적으로 특정 기간 동안만 유효하다는 것입니다.반면 RefreshToken은 훨씬 더 오래 또는 무기한으로 (사용자가 취소할 때까지) 유효합니다.RefreshToken 덕분에 TokenProvider 클래스는 액세스 토큰이 더 이상 유효하지 않을 경우 언제든지 액세스 토큰을 새로 고칠 수 있습니다.

또 다른 옵션은 iTokenProvider 인터페이스입니다.이 경우 OAuth 메커니즘을 직접 구현할 수 있을 뿐만 아니라 SMTPClient에 전달하여 필요에 따라 자체적으로 사용하도록 할 수도 있습니다.

OAuth 메커니즘이 항상 필요한 것은 아니라는 점에 유의해야 합니다.사용자 이름과 비밀번호로 로그인하는 것이 훨씬 쉬운 경우도 있습니다.이를 위해서는 이메일 계정을 재구성하거나 이중 인증을 거부하는 등의 작업을 전혀 할 필요가 없습니다. 더 안전한 해결책이 있습니다. 이것은 응용 프로그램에 대한 별도의 암호입니다.이 기능을 활용하려면 이메일 계정 설정을 살펴봐야 합니다.대부분의 경우 애플리케이션용 비밀번호는 계정에서 설정할 때 자동으로 생성됩니다.잊지 말고 어딘가에 저장하세요.또한 구성 중에 애플리케이션의 권한을 최대한 제한하는 것이 좋습니다.물론 공격자가 이 암호에 대한 액세스 권한을 얻으면 사용자 계정을 도용할 수는 없지만 여전히 불쾌한 일을 많이 할 수 있습니다.여기서는 아무것도 할 수 없습니다. 암호가 침입자로부터 데이터를 보호하는 유일한 방법이기 때문입니다.일반적으로 이 도구는 매우 편리하지만 계정 보안이 취약하므로 사용에 따른 위험은 사용자 본인이 감수해야 합니다.

C++를 사용하여 SMTP를 통해 이메일 보내기

따라서 서버 연결이 설정되고 인증이 성공적으로 완료되었습니다.이제 편지를 보낼 차례입니다.전송에는 MailMessage 클래스의 객체가 사용됩니다.엄밀히 말하면 send 메서드에 필요한 모든 데이터를 전달하기만 하면 됩니다.하지만 실제로는 여전히 MailMessage 객체에 수집됩니다.또한 MailMessage 클래스를 EML 형식으로 직렬화하는 기능 덕분에 SMTP 서버로 전달할 수 있는 필수 데이터 스트림을 얻을 수 있습니다.따라서 서버에 편지를 보내고 편지의 모든 내용을 텍스트 데이터 형식으로 전송하라는 명령을 내립니다.예를 들어 이진 데이터가 첨부 파일 형태로 편지로 전송되는 경우 이 데이터는 Base64 형식으로 인코딩되며 문자의 메타데이터를 보면 수신자가 이를 다시 디코딩해야 한다는 것을 알 수 있습니다.SMTP 서버는 수신한 메시지의 정확성을 검사 (예: 서버의 발신자 계정으로 FROM 필드 확인) 할 수 있을 뿐만 아니라 자체 판단에 따라 메시지의 메타데이터를 보완할 수 있습니다.그런 다음 서버는 수신자에게 이메일을 보내고 이메일의 메타데이터에서 이 목록의 목록도 가져옵니다.