发送电子邮件中的实时组件

时间:2017-12-16 19:56:19

标签: javascript reactjs email

我正在尝试创建一个邮箱组件,以便在我的邮箱组件中显示实时数据我使用trumbowyg来创建WYSIWYG编辑器和引导程序,但我无法设法实时获取

<script type="text/babel">
    var Modal = React.createClass({
        render: function () {
          return (
            <div className="modal fade" tabIndex="-1" role="dialog">
              <div className="modal-dialog">
                <div className="modal-content">
                  <div className="modal-header">
                    <button type="button" className="close" data-dismiss="modal" ><span>&times;</span></button>
                    <h4 className="modal-title">{this.props.title}</h4>
                  </div>
                  <div className="modal-body">
                    {this.props.body}
                  </div>
                  <div className="modal-footer">
                    <div className="btn-toolbar pull-right" role="toolbar">
                      <div className="btn-group" role="group">
                        <button type="button" className="btn btn-danger outline" data-dismiss="modal">Close</button>
                      </div>
                    </div>
                    <div className="clearfix" />
                  </div>
                </div>
              </div>
            </div>
          );s
        }
    });
    var Editor = React.createClass({
      getDefaultProps: function () {
        return {
          body: "",
          placeholder: "Enter your message here..."
        };
      },
      componentWillReceiveProps: function (nextProps) {
        if (nextProps.body == ""){
          $('#editor').trumbowyg('empty');
        }
      },
      componentDidMount: function () {
        var that = this;
        $('#editor').trumbowyg({
          fullscreenable: false
        })
        .on('tbwchange', function (){
          that.props.onChange($('#editor').trumbowyg('html'));
        });
        $('#editor').trumbowyg('html', this.props.body);
      },
      render: function () {
        return <div id="editor" placeholder={this.props.placeholder} ></div>;
      }
    });
    var Mailbox = React.createClass({
      getInitialState: function () {
        return {
          "emailTo": "",
          "emailCC": "",
          "emailBCC": "",
          "emailSubject": "",
          "emailBody": ""
        }
      },
      render: function () {
        return (
          <div className="panel panel-default">
            <div className="panel-heading">
              <div className="row">
                <div className="col-xs-8 center">
                  <div className="inbox-title">
                    <span className="glyphicon glyphicon-envelope center"></span>
                    <h2 className="center">{this.props.title}</h2>
                  </div>
                </div>
                <div className="col-xs-4 center">
                  <div className="inbox-avatar text-right">
                    <img src={this.props.urlImage} />
                    <div className="inbox-avatar-name"><a href={this.props.link}>{this.props.username}</a></div>
                  </div>
                </div>
              </div>
              <hr />
              <div className="row">
                <div className="col-xs-12">
                  <form className="form-horizontal">
                    <div className="form-group">
                      <label htmlFor="email-to" className="col-sm-1 control-label">To</label>
                      <div className="col-sm-11">
                        <input type="email"
                                className="form-control"
                                id="email-to"
                                value={this.state.emailTo}
                                placeholder="Ex: hello@example.com"
                                onChange={this.handleEmailToChange}/>
                      </div>
                    </div>
                    <div className="form-group">
                      <label htmlFor="email-cc" className="col-sm-1 control-label">CC</label>
                      <div className="col-sm-11">
                        <input type="email"
                              className="form-control"
                              id="email-cc"
                              value={this.state.emailCC}
                              onChange={this.handleEmailCCChange}/>
                      </div>
                    </div>
                    <div className="form-group">
                      <label htmlFor="email-bcc" className="col-sm-1 control-label">BCC</label>
                      <div className="col-sm-11">
                        <input type="email"
                               className="form-control"
                               id="email-bcc"
                               value={this.state.emailBCC}
                               onChange={this.handleEmailBCCChange}/>
                      </div>
                    </div>
                    <div className="form-group">
                      <label htmlFor="email-subject" className="col-sm-1 control-label">Subject</label>
                      <div className="col-sm-11">
                        <input type="email"
                               className="form-control"
                               id="email-subject"
                               value={this.state.emailSubject}
                               onChange={this.handleEmailSubjectChange}/>
                      </div>
                    </div>
                  </form>
                </div>
              </div>
            </div>
            <div className="panel-body">
              <Editor onChange={this.handleEditorChange}
                      body={this.state.emailBody} />
            </div>
            <div className="panel-footer">
              <div className="btn-toolbar pull-right" role="toolbar">
                <div className="btn-group" role="group">
                  <button type="button" onClick={this.handleCancelClick} className="btn btn-danger">CANCEL</button>
                  <button type="button" onClick={this.handleSaveClick} className="btn btn-success">SAVE</button>
                </div>
                <div className="btn-group" role="group">
                  <button type="button" onClick={this.handleSendClick} className="btn btn-primary outline">SEND</button>
                </div>
                <Modal ref="modalSend" title="Email sent!" body="Your email has been successfully sent!" />
                <Modal ref="modalSave" title="Email saved!" body="Your email has been successfully saved!" />
              </div>
              <div className="clearfix" />
            </div>
          </div>
        );
      },
      handleEditorChange: function (emailBody) {
        this.setState({ "emailBody": emailBody });
      },
      handleEmailToChange: function (e) {
        this.setState({ "emailTo": e.target.value });
      },
      handleEmailCCChange: function (e) {
        this.setState({ "emailCC": e.target.value });
      },
      handleEmailBCCChange: function (e) {
        this.setState({ "emailBCC": e.target.value });
      },
      handleEmailSubjectChange: function (e) {
        this.setState({ "emailSubject": e.target.value });
      },
      handleCancelClick: function () {
        this.setState({
          "emailTo": "",
          "emailCC": "",
          "emailBCC": "",
          "emailSubject": "",
          "emailBody": ""
        });
      },
      handleSaveClick: function () {
        $(ReactDOM.findDOMNode(this.refs.modalSave)).modal();
      },
      handleSendClick: function () {
        $(ReactDOM.findDOMNode(this.refs.modalSend)).modal();
      }
    });
    var options = {
      username: "Michel lompret",
      link: "https://google.com",
      urlImage: "http://lorempicsum.com/futurama/350/200/1",
      title: "React Mailbox Editor"
    };
    var element = React.createElement(Mailbox, options);
    ReactDOM.render(element, document.querySelector('.container'));
  </script>

有没有办法在我的邮箱组件中取回我的Gmail或Outlook邮件,并像实时应用程序一样从中发送电子邮件?

1 个答案:

答案 0 :(得分:0)

从他们的文档.... https://developers.google.com/gmail/api/guides/push

您需要设置手表,然后在手表更改时回调...

同样来自他们的文档...... https://developers.google.com/gmail/api/guides/sync