BB 10 Cascades qml发送简单的电子邮件

use*_*745 5 qml blackberry-10 blackberry-cascades

我在BB 10的git hub中发现了一个用于发送电子邮件的示例,但它看起来非常复杂并且很多用C语言完成.

有没有人有一个如何使用QML发送快速电子邮件的例子.我不需要任何按钮或文本字段,只需要硬编码值.

我找到了这个简单的剪辑,但不知道如何整合它.

https://developer.blackberry.com/cascades/documentation/device_platform/pim/messages.html

任何帮助,将不胜感激.

Sun*_*ker 7

以下代码将打开一个包含电子邮件编辑器的工作表,其中包含所有指定的电子邮件字段:

import bb.cascades 1.0

Page {
    Container {
        horizontalAlignment: HorizontalAlignment.Fill
        layout: DockLayout {
        }

        Container {
            horizontalAlignment: HorizontalAlignment.Center
            verticalAlignment: VerticalAlignment.Center
            TextArea {
                id: emailBody
            }
            Button {
                text: "Send email"
                onClicked: {
                    emailInvocation.query.uri = "mailto:someemailadress@cookbook.xyz?subject=Test&body=" + emailBody.text
                    emailInvocation.query.updateQuery();
                }
            }
        }
    }

    attachedObjects: [
        Invocation {
            id: emailInvocation
            query.mimeType: "text/plain"
            query.invokeTargetId: "sys.pim.uib.email.hybridcomposer"
            query.invokeActionId: "bb.action.SENDEMAIL"
            onArmed: {
                emailInvocation.trigger(emailInvocation.query.invokeActionId);
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)


小智 0

在创建 QmlDocument 后的 main.cpp 中,qml-> setContextProperty ("yourshortcut", object);

void xxx::invokeEmail(){
InvokeManager invokeManager;
InvokeRequest request;
request.setTarget("sys.pim.uib.email.hybridcomposer");
request.setAction("bb.action.COMPOSE");
request.setMimeType("message/rfc822");

InvokeTargetReply *reply = invokeManager.invoke(request);
if(reply) {
    reply->setParent(this);
    QObject::connect(reply, SIGNAL(finished()),this, SLOT(onInvokeResult()));
    _invokeTargetReply = reply;
}
delete reply;
}

void xxx::onInvokeResult()
{
// Check for errors
switch(_invokeTargetReply->error()) {
// Invocation could not find the target
// did we use the right target ID?
case InvokeReplyError::NoTarget: {
    qDebug() << "invokeFinished(): Error: no target" << endl;
    break;
}
// There was a problem with the invoke request
// did we set all the values correctly?
case InvokeReplyError::BadRequest: {
    qDebug() << "invokeFinished(): Error: bad request" << endl;
    break;
}
// Something went completely
// wrong inside the invocation request
// Find an alternate route :(
case InvokeReplyError::Internal: {
    qDebug() << "invokeFinished(): Error: internal" << endl;
    break;
}
//Message received if the invoke request is successful
default:
    qDebug() << "invokeFinished(): Invoke Succeeded" << endl;
    break;
}

// A little house keeping never hurts...
delete _invokeTargetReply;
}
Run Code Online (Sandbox Code Playgroud)

然后在 QML 中使用您通过 context 属性创建的快捷方式调用 C++ 函数 invokeEmail。我用它来调用电子邮件卡