使用Poco库在邮件中发送HTML代码 [英] Sending HTML code in a mail using Poco library

查看:780
本文介绍了使用Poco库在邮件中发送HTML代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用C ++(1.5.2)中的POCO库,我想知道是否可以在邮件中发送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; (poco :: Net :: MailRecipient :: PRIMARY_RECIPIENT,user1@gmail.com,user1)); b $ b $

mailMessage.setSubject(test);
mailMessage.setSender(myemail@gmail.com);
mailMessage.setContent(Hello,world!\r\\\
);

Poco :: Net :: SecureSMTPClientSession会话(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,myemail@gmail.com,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();
}

系统(暂停);
return 0;
}

有没有解决方案可以在我的邮件中发送图片?



谢谢!!

解决方案

在电子邮件内容中:

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

...

Poco :: Net :: MailMessage mailMessage; (poco :: Net :: MailRecipient :: PRIMARY_RECIPIENT,user1@gmail.com,user1)); b $ b $

mailMessage.setSubject(test);
mailMessage.setSender(myemail@gmail.com);

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\>< /体>< / HTML>中;
mailMessage.addPart(,新的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);


I'm using the POCO library in C++ (1.5.2) , and i wonder if it is possible to send HTML code in a mail.

This is the code I'm using for sending email (via my 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, "user1@gmail.com", "user1"));

    mailMessage.setSubject("test");
    mailMessage.setSender("myemail@gmail.com");
    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, "myemail@gmail.com", "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;
}

Is there any solution for sending an image in my message for example ?

Thank you !!

解决方案

Try something like this when filling in the email content:

#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, "user1@gmail.com", "user1"));

mailMessage.setSubject("test");
mailMessage.setSender("myemail@gmail.com");

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);

这篇关于使用Poco库在邮件中发送HTML代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆