Πώς να δημιουργήσετε ένα μήνυμα ηλεκτρονικού ταχυδρομείου στο C++

Πώς να δημιουργήσετε ένα μήνυμα ηλεκτρονικού ταχυδρομείου στο 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.git
add_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() Εισάγετε το μήνυμα σε μορφή MSG του Outlook. Pass a std::filesystem::path να γράψει απευθείας στο δίσκο, ένα std::ostream για την παραγωγή ροής, ή καλέστε με μη Τα επιχειρήματα για να λάβει μια 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() να παράγει ένα αρχείο RFC 5322 / MIME αντί για MSG. Υπερφόρτωση (δρόμος, ρεύμα ή bytes) είναι διαθέσιμες:

#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 εμφανίζει κείμενο που έχει σκουπίσει. Να διασφαλιστεί ότι το μήνυμα δημιουργείται με Υποστήριξη Unicode String. mapi_message::create() Ενεργοποιεί Unicode γραμμές κατά προεπιλογή. Εάν χρειάζεται να αναγκάσετε την κωδικοποίηση ANSI (συνήθως απαραίτητο), περάστε false ως τρίτος Το επιχειρηματικό: mapi_message::create(subject, body, false).

save() Η παραγωγή του ρεύματος είναι κενή ή διαφθορά. Πάντα ανοιχτό ρεύμα με std::ios::binary.Tex-mode ροές μεταφράζουν τα νέα στα Windows, διαφθορά το Δυαδική δομή CFB.

Αποδέκτες που δεν εμφανίζονται στο πεδίο To/Cc στο Outlook. ΟΙ ΠΡΟΣΟΧΕΣadd_recipient() AddS Εισαγωγή στο 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 Internet Message 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");

Μπορώ να ρυθμίσω το Internet Message-ID για την απειλή;?

Ναι, καλέστε set_internet_message_id() Με το RFC 2822 μορφή αναφοράς:

message.set_internet_message_id("<msg-001@example.com>");

Είναι ενδεχόμενο να ενεργοποιηθεί ο Unicode με προεπιλογή;?

Η διπλή μορφή του mapi_message::create(subject, body) Ενεργοποιήστε το Unicode Για να δημιουργήσετε ένα κληρονομικό μήνυμα ANSI, περάστε false ως τρίτο επιχείρημα.

Δείτε επίσης

 Ελληνικά