POCOで簡単SMTPアクセス

はい,POCOキャンペーン第3弾です.

第1弾:
POCOで簡単Webアクセス - なぜか数学者にはワイン好きが多い

第2弾:
POCOで簡単POPアクセス - なぜか数学者にはワイン好きが多い


POCOを使えば,C++でもRuby並に簡単にアプリケーションが作れる例です.

今回は電子メールを送信する例です.POCOのソースリスト一式に入っているサンプルプログラムから,画像ファイル添付を除いた簡単なものに改変しました.

#include <iostream>
#include "Poco/Net/MailMessage.h"
#include "Poco/Net/MailRecipient.h"
#include "Poco/Net/SMTPClientSession.h"
#include "Poco/Net/StringPartSource.h"

using namespace std;
using Poco::Net::MailMessage;
using Poco::Net::MailRecipient;
using Poco::Net::SMTPClientSession;
using Poco::Net::StringPartSource;


int main()
{
  string smtphost = "smtpserver.example.com" ;  // SMTPサーバの名前を指定して下さい
  string from = "admin@example.com";  // 送信者のメールアドレスを.
  string to = "admin@examples.jp";  // 送信先のユーザのメールアドレスを.

  MailMessage message;
  message.setSender(from);
  message.addRecipient(MailRecipient(MailRecipient::PRIMARY_RECIPIENT, to));
  message.setSubject("Hello from the POCO C++ Libraries");
  string content;  // メールの内容作成用のストリングオブジェクト
  content += "Hello ";
  content += to;
  content += ",\r\n\r\n";
  content += "This is a greeting from the POCO C++ Libraries.\r\n\r\n";
  message.addContent(new StringPartSource(content));  // MIME形式でテキスト文書を追加

  SMTPClientSession session(smtphost);
  session.login();
  session.sendMessage(message);
  session.close();

  return(0);
}

マルチパートになるのが気持ち悪ければ,よりシンプルなバージョンを公開しようと思います.

このサンプルも,いつも私に協力してくれる同僚に捧げます.