2009-08-02 5 views
-1

私はwirthに必要なsmtpを必要とするメールを(ユーザの電子メールサーバ/サービスと共に)送るために私のアプリケーションに能力を追加する必要がありますC++のlibまたはコード どこに私が見つけるべきか分からない。どこで無料のlibやソースコードを見つけることができますか?
あなたはGPLライセンスを気にしない場合は、VMime私はsmtpクライアントをC++(クロスプラットフォーム)で書く必要があるオプションは何ですか

を試すことができますし、Windows用のライブラリをしたい場合は、CPJNSMTPConnection

答えて

0

私を助けてくださいすることができますUnixでは、プログラムからメールを送信する通常の方法は、その内容を(popenを使って)/ usr/lib/sendmailにパイプしています。他のMTA(postfixなど)は、そのインターフェイスと互換性のあるプログラムを提供します。

利点は、エイリアスを使用することができ、あなたは彼らが正しいゲートウェイを使用しているように、メールを送信する各プログラムを設定する必要がないことです...

0

の下を試すことができ、このテーマに おかげ

1

使用は::後押しASIOおよびプロトコルの仕様に従ってくださいシンプルなクライアントを書く。

+0

のために多くの時間にそれは.. 私はリレーがクロスプラットフォームのlibを必要とします。ちょうどそのプロトコルではないので、コードはOSごとに1つにすることができます。 – user63898

5

私はpoco C++ライブラリを使用することをお勧めします。これらはBoost Software License(最も限定的ではないオープンソースライセンスの1つ)の下で再販されており、その一部としてMail-libが含まれています。

電子メール添付ファイルをサポートするSMTP(Simple Mail Transfer Protocol、RFC 2821)サーバーと電子メールメッセージをダウンロードするクラスを使用して電子メールメッセージを送信するためのクラスPOP3(ポストオフィスプロトコルバージョン3、RFC 1939)サーバーから。

Poco Website

よろしく、
Ovanes

P.S. Poco C++ Libsは、マルチプラットフォームのフレームワークです。

0

ご要望に応じて、ACEがオプションになります。 これは、多くのオペレーティングシステムで利用できる無料のオープンソースフレームワークです。

smtpの具体的な実装があるかどうかはわかりませんが、少なくとも接続部分のC++抽象化を提供しています。したがって、プロトコルの実装のみがあなた次第です。添付ファイル付きhttps://github.com/breakermind/SslSMTPClientとautomaticaly受信者の電子メールドメインからのMXホストを取得し、あなたは自分のSMTPサーバを必要としないことができ:ここで

0

は私のC++ SMTPクライアントの一例である

// main - create SSL context and connect 
int main(int count, char *strings[]) 
{ 
    cout << "C++ ssl smtp send email with STARTTLS\r\n";  

    // Add attachments to message if you want 
    vector<string> files; 
    // files.push_back("file9.jpg"); 
    // files.push_back("filek.pdf"); 

    // Initialize 
    sslsmtpEx sm; 
    sm.sslsmtpExSet("localhost", 25); 

    // EHLO hostname 
    sm.heloHostname("domain.pl"); 

    // Display logs 
    // sm.showLogs(); 

    // get MX records from dns for recipient 
    vector<string> mx = sm.getMX("[email protected]",0,0); 

    // Send email to each mx host from recipient domain DNS (You need send only to one server !!!) 
    for (int i = 0; i < mx.size(); i++){ 

     // Set hostname from mx dns 
     sm.sslsmtpExSet(mx.at(i), 25); 
     cout << "Mx host: " << mx.at(i) << endl;  

     // send email 
     int ok = sm.Send("[email protected]", "[email protected]", "[email protected]", "Smtp client test", "<h1>Smtp test</h1>", "<h1>Smtp test</h1>", files); 

     cout << "Email has been sent : " << ok << endl; 

     if(ok){ 
      // if email has been sent, end loop with next mxhost 
      break; 
     }    
    } 
    sleep(10); 

return 0;  
} 

よろしく

関連する問題