ホーム > デベロッパ > SophiaFramework > BREW C++ 逆引きコード集

BREW C++ プログラミング : SophiaFramework 逆引き FAQ・コード集

SSL メール送信をする

SFXSMTPSender クラスの SFXSMTPSender::SetSSLModeSFXSMTPSender::SetTrustModeSFXSMTPSender::SetAuthorization を使って、SSL メール送信を行います。

class MyClass {
private:
    SFXSMTPSender _sender;
    CALLBACK_DECLARE_SFXSMTPSENDER(SMTPCallback)
public:
    Void Start(Void);
};

// 太字の部分を追加
Void MyClass::Start(Void)
{
    SFCError error;
    SFXMailMessage message;

    // メール ヘッダーに From フィールドを設定する
    message.SetFromField("fromaddress@example.com");

    // メール ヘッダーに To フィールドを追加する
    message.AddToField("toaddress1@example.com");
    message.AddToField("toaddress2@example.com");

    // メール ヘッダーに Subject フィールドを設定する
    message.SetSubjectField("Mail Subject");

    // メール メッセージの本文を設定する
    message.SetBody("Mail test\r\nThis mail is sent by SFXSMTPSender.\r\n");

    // SMTP サーバーの IP アドレスとポート番号を指定する
    //  ( ドメインは自動解決される )
    _sender.SetServer(SFXSocketAddress("smtpserver.example.com:465"));

    // SSL メール送信の設定
    _sender.SetSSLMode(true);         // SSL 接続モードの設定
    // 証明書の検証モードの設定
    _sender.SetTrustMode(SSL_TRUST_MODE_FAIL);  
    // SMTP 認証モードの設定 
    _sender.SetAuthorization(AUTH_CRAM_MD5,"username","password");  

    // メールを送信する。送信が完了すると SMTPCallback 関数が呼び出される
    if ((error = _sender.SendMessage(&message,
        CALLBACK_FUNCTION(SMTPCallback))) != SFERR_NO_ERROR) {
        // error が SFERR_NO_ERROR でない場合はコールバックが戻らないので、
        // ここでエラー処理をする
    }
}

// メール送信が完了したときに呼び出されるコールバック関数
CALLBACK_IMPLEMENT_SFXSMTPSENDER(MyClass, SMTPCallback, error)
{
    if (error == SFERR_NO_ERROR) {
        TRACE("メールを送信しました。");
    }
    else {
        TRACE("メール送信に失敗しました。 %d", error);
    }
}