5

I found one example in the the git hub for BB 10 for sending an email, but it looks pretty complicated and alot done in C.

does anyone have an example on how to send a quick email using QML. I don't need any buttons or text fields, just hard coded values.

I found this simple snip, but dont' know how to integrate it.

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

Any help would be appreciated.

4

2 回答 2

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);
            }
        }
    ]
}
于 2013-07-11T05:57:02.933 回答
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;
}

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

于 2013-02-07T19:46:18.170 回答