C++에서 이메일 메시지를 만드는 방법
Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code 사용하기 mapi_message::create().주제, 평면 텍스트 및 HTML 몸을 설정할 수 있습니다., 신분을 보내고, 수신자와 결과를 MSG 또는 EML에 단일 전화로 저장합니다. - Outlook 설치가 필요하지 않습니다.
단계 1 - 프로젝트 설정
git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.gitadd_subdirectory(Aspose.Email-FOSS-for-Cpp)
target_link_libraries(your_target PRIVATE AsposeEmailFoss::AsposeEmailFoss)단계 2 - 메시지를 만들고 주제와 몸을 설정합니다.
mapi_message::create() 주제와 플라인 텍스트 몸을 건축가로 받아들이는 것입니다. 주장에 대하여 :
#include "aspose/email/foss/msg/mapi_message.hpp"
auto message = aspose::email::foss::msg::mapi_message::create(
"Quarterly Status Update",
"Hello team,\n\nPlease find the summary below.\n\nRegards,\nEngineering");창조 후에 당신은 또한 주제 또는 몸을 업데이트 할 수 있습니다. set_subject() 그리고 set_body():
message.set_subject("Revised: Quarterly Status Update");
message.set_body("Updated body text.");단계 3 - 배송자 속성을 설정합니다.
사용하기 set_sender_name() 그리고 set_sender_email_address() 탐색을 하기 위해서, 그들은 주소 유형은 SMTP 을 빼고, 그를 위하여 set_sender_address_type() 만약 필요한 것 :
message.set_sender_name("Build Agent");
message.set_sender_email_address("build.agent@example.com");단계 4 - 수용체를 추가하십시오.
add_recipient() 메시지에 수신자를 추가합니다.수신자 당 한 번 전화하십시오 :
message.add_recipient("alice@example.com", "Alice Example");
message.add_recipient("bob@example.com", "Bob Example");단계 5 - HTML 몸을 설정합니다.
사용하기 set_html_body() 메시지 몸의 HTML 버전을 저장합니다. 둘 다 깔끔한 텍스트 그리고 HTML 몸은 동존할 수 있습니다; 이메일 클라이언트는 더 풍부한 형식을 선택합니다 :
message.set_html_body(
"<html><body>"
"<p>Hello team,</p>"
"<p>Please find the <b>quarterly summary</b> below.</p>"
"<p>Regards,<br>Engineering</p>"
"</body></html>");단계 6 - MSG에 저장하기
save() 메시지를 Outlook MSG 형식으로 시리즈화합니다. std::filesystem::path 디스크에 직접 쓰기 위해서, 하나의 std::ostream 전송 출력 또는 전화로 전화를 받지 않음 A를 받아들이는 이유가 있다. std::vector<std::uint8_t>:
#include <filesystem>
#include <fstream>
#include "aspose/email/foss/msg/mapi_message.hpp"
int main()
{
auto message = aspose::email::foss::msg::mapi_message::create(
"Meeting Notes", "Details inside.");
message.set_sender_name("Alice");
message.set_sender_email_address("alice@example.com");
message.add_recipient("bob@example.com", "Bob");
// Save to file path
message.save(std::filesystem::path("meeting_notes.msg"));
// Save to stream
std::ofstream out_stream("meeting_notes_stream.msg", std::ios::binary);
message.save(out_stream);
// Save to bytes in memory
auto bytes = message.save();
}단계 7 - EML에 저장하기
사용하기 save_to_eml() MSG 대신 RFC 5322 / MIME 파일을 생성합니다. 과도한 충전 (도로, 스트림 또는 바이트)은 다음과 같습니다 :
#include <filesystem>
#include "aspose/email/foss/msg/mapi_message.hpp"
int main()
{
auto message = aspose::email::foss::msg::mapi_message::create(
"Hello", "World");
message.set_sender_name("Alice");
message.set_sender_email_address("alice@example.com");
message.add_recipient("bob@example.com", "Bob");
message.save_to_eml(std::filesystem::path("hello.eml"));
}일반적인 문제와 해결책
메시지가 저장되었지만 Outlook에서는 녹음된 텍스트가 표시됩니다. 메시지가 만들어진다는 것을 확신합니다. 유니코드 스트리트 지원. mapi_message::create() Unicode 스트립을 기본적으로 사용할 수 있습니다. ANSI 암호화를 강요해야하는 경우 (희귀하게 필요), 통과 false 세 번째로 논쟁 : mapi_message::create(subject, body, false).
save() 흐름 출력은 비어 있거나 부패합니다. 항상 열려 있는 출력 스트림과 함께 std::ios::binary.텍스트 모드 스트림은 Windows에서 뉴스를 번역하여 CFB의 바이너리 구조.
Outlook에서 To/Cc 필드에 나타나지 않는 수신기. 는add_recipient() 추가 MAPI 수신자 테이블에 접수자를 입력합니다. 추가로 설정 display_to MAPI 재산을 통해서 set_property() 와 함께 common_message_property_id::display_to 그리고 property_type_code::ptyp_string 그래서 Outlook은 헤더에 이름을 표시합니다.
HTML 시체는 정리되지 않습니다. HTML 스트립이 열기와 함께 잘 형성되었음을 확인하고, 닫기 <html><body> 또한 수신 고객이 HTML 이메일을 지원하는지 확인; 일부 최소 고객은 단순한 텍스트만 제공합니다.
set_internet_message_id() 효과가 없어. 는set_internet_message_id() 세트를 설정합니다 MAPI 인터넷 메시지 ID는 탐색에 사용됩니다.이 속성은 선택적이며 필요하지 않습니다. 유효한 MSG 파일을 사용합니다.
자주 묻는 질문들
MSG 파일을 만드는 가장 간단한 방법은 무엇입니까?
#include <fstream>
#include "aspose/email/foss/msg/mapi_message.hpp"
int main()
{
auto message = aspose::email::foss::msg::mapi_message::create("Hello", "Body");
message.set_sender_name("Alice");
message.set_sender_email_address("alice@example.com");
std::ofstream out("hello.msg", std::ios::binary);
message.save(out);
}단지 HTML 몸과 직선 텍스트 몸이 없는 메시지를 만들 수 있습니까?
예요, 전화 mapi_message::create(subject, "") 빈 글자로 몸을 텅 비어 놓고, 전화기 set_html_body() HTML 콘텐츠를 설정합니다.
메시지 클래스를 어떻게 설정할 수 있나요?
사용하기 set_message_class() MAPI 메시지 클래스 스트립, 예를 들어 "IPM.Note" 표준 이메일 메시지:
message.set_message_class("IPM.Note");인터넷 메시지 ID를 트랜딩을 위해 설정할 수 있습니까?
예요, 전화 set_internet_message_id() RFC 2822 형식의 메시지 ID 스트립을 사용하여:
message.set_internet_message_id("<msg-001@example.com>");Unicode는 기본적으로 활성화되나요?
2가지 논쟁의 형태를 말한다. mapi_message::create(subject, body) Unicode를 사용하는 방법 링크. 유산 ANSI 메시지를 만들려면, 통과 false 세 번째 논쟁으로서.