Отправка HTML-кода по почте с использованием библиотеки Poco

Я использую библиотеку POCO на C++ (1.5.2), и мне интересно, можно ли отправить HTML-код по почте.

Это код, который я использую для отправки электронной почты (через мой gmail):

#include <iostream>
#include <string>

#include <Poco\Net\AcceptCertificateHandler.h>
#include <Poco\Net\FilePartSource.h>
#include <Poco\Net\InvalidCertificateHandler.h>
#include <Poco\Net\MailMessage.h>
#include <Poco\Net\NetException.h>
#include <Poco\Net\SecureSMTPClientSession.h>
#include <Poco\Net\SSLManager.h>

int main()
{
    Poco::Net::MailMessage mailMessage;

    mailMessage.addRecipient(Poco::Net::MailRecipient(Poco::Net::MailRecipient::PRIMARY_RECIPIENT, "[email protected]", "user1"));

    mailMessage.setSubject("test");
    mailMessage.setSender("[email protected]");
    mailMessage.setContent("Hello, world!\r\n");

    Poco::Net::SecureSMTPClientSession session("smtp.gmail.com", 587);

    session.open();

    Poco::Net::initializeSSL();

    Poco::SharedPtr<Poco::Net::InvalidCertificateHandler> ptrHandler = new Poco::Net::AcceptCertificateHandler(false);

    Poco::Net::Context::Ptr ptrContext = new Poco::Net::Context(Poco::Net::Context::CLIENT_USE, "", "", "", Poco::Net::Context::VERIFY_RELAXED, 9, true, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");

    Poco::Net::SSLManager::instance().initializeClient(NULL, ptrHandler, ptrContext);

    try
    {
        session.login();
        if(session.startTLS(ptrContext))
        {
            session.login(Poco::Net::SecureSMTPClientSession::AUTH_LOGIN, "[email protected]", "mypassword");
            session.sendMessage(mailMessage);
        }
        session.close();
        Poco::Net::uninitializeSSL();
    }
    catch(Poco::Net::SMTPException &e)
    {
        std::cout << e.message() << std::endl;
        session.close();
        Poco::Net::uninitializeSSL();
    }

    system("pause");
    return 0;
}

Есть ли какое-нибудь решение для отправки изображения, например, в моем сообщении?

Спасибо !!


person Alfred    schedule 16.03.2014    source источник


Ответы (1)


Попробуйте что-то подобное при заполнении содержимого электронной почты:

#include <Poco\Net\StringPartSource.h>
#include <Poco\Net\FilePartSource.h>
#include <Poco\Net\MailMessage.h>

...

Poco::Net::MailMessage mailMessage;

mailMessage.addRecipient(Poco::Net::MailRecipient(Poco::Net::MailRecipient::PRIMARY_RECIPIENT, "[email protected]", "user1"));

mailMessage.setSubject("test");
mailMessage.setSender("[email protected]");

Poco::Net::MediaType mediaType("multipart", "related");
mediaType.setParameter("type", "text/html");
mailMessage.setContentType(mediaType);

std::string html = "<html><body>Hello, world!<br><img src=\"cid:image\"></body></html>";
mailMessage.addPart("", new Poco::Net::StringPartSource(html, "text/html"), CONTENT_INLINE, ENCODING_QUOTED_PRINTABLE);

Poco::Net::FilePartSource *image = new Poco::Net::FilePartSource("image.jpg", "image/jpeg");
image->headers().add("Content-ID", "<image>");
mailMessage.addPart("", image, CONTENT_INLINE, ENCODING_BASE64);
person Remy Lebeau    schedule 05.09.2014