-1

我正在使用 pythonIMAP4_SSL阅读如下电子邮件,但最后,我收到了警告。我该如何摆脱它?

我不想让警告静音,因为我想知道它为什么给我一个 SSL Socket 警告。我是否忘记关闭套接字,如果是,我该如何关闭它?

    mail = imaplib.IMAP4_SSL('imap.gmail.com')
    username = self.Dict["emailUsername"]
    password = self.Dict["emailPassword"]
    print(username, password)
    mail.login(username, password)
    mail.list()
    mail.select("inbox")
     result, data = mail.search(None, "ALL")
    and so on I do my thing 

如何关闭 SSL 套接字,以免收到警告?


我的代码的确切替换是:

main.dart

import 'package:flutter/material.dart';
import 'BabyCard.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override Widget build(BuildContext context) => BabyPage();
}

class BabyPage extends StatefulWidget {
  @override State<StatefulWidget> createState() => BabyCardState();
}

BabyCard.dart

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'BabyModel.dart';

class BabyCardState extends State {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Baby Name Votes')),
      body: _buildBody(context),
    );
  }

  Widget _buildBody(BuildContext context) {
    return StreamBuilder<QuerySnapshot>(
      stream: Firestore.instance.collection('baby').snapshots(),
      builder: (context, snapshot) {
        if (!snapshot.hasData) return LinearProgressIndicator();

        return _buildList(context, snapshot.data.documents);
      },
    );
  }

  Widget _buildList(BuildContext context, List<DocumentSnapshot> snapshot) {
    return ListView(
      padding: const EdgeInsets.only(top: 20.0),
      children: snapshot.map((data) => _buildListItem(context, data)).toList(),
    );
  }

  Widget _buildListItem(BuildContext context, DocumentSnapshot data) {
    final baby = BabyData.fromSnapshot(data);

    return Padding(
      key: ValueKey(baby.name),
      padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0),
      child: Container(
        decoration: BoxDecoration(
          border: Border.all(color: Colors.grey),
          borderRadius: BorderRadius.circular(5.0),
        ),

        child: Column(
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              ListTile(
                  leading: const Icon(Icons.album),
                  title: Text('The ${baby.name} is having:'),
                  subtitle: Text('${baby.votes} Votes.'),
                  trailing: Text(baby.votes.toString())
              ),

              new ButtonTheme.bar(
                  child: new ButtonBar(

                      children: <Widget>[
                        FlatButton(
                          child: const Icon(Icons.thumb_up),
                          onPressed: () =>
                              Firestore.instance.runTransaction((
                                  transaction) async {
                                final freshSnapshot = await transaction.get(
                                    baby.reference);
                                final fresh = BabyData.fromSnapshot(
                                    freshSnapshot);

                                await transaction
                                    .update(
                                    baby.reference, {'votes': fresh.votes + 1});
                              }),
                        ),
                        FlatButton(
                          child: const Icon(Icons.thumbs_up_down),
                          onPressed: () {
                            print(baby);
                          },
                        ),
                        FlatButton(
                          child: const Icon(Icons.thumb_down),
                          onPressed: () {
                            Firestore.instance.runTransaction((
                                transaction) async {
                              final freshSnapshot = await transaction.get(
                                  baby.reference);
                              final fresh = BabyData.fromSnapshot(
                                  freshSnapshot);

                              await transaction
                                  .update(
                                  baby.reference, {'votes': fresh.votes - 1});
                            });
                          },
                        )
                      ])
              )
            ]),
      ),
    );
  }
}

BabyModel.dart

import 'package:cloud_firestore/cloud_firestore.dart';

class BabyData {
  final String name;
  final int votes;
  final DocumentReference reference;

  BabyData.fromMap(Map<String, dynamic> map, {this.reference}) :
          name = (map['name'] ?? 'Frank'),
          votes = (map['votes'] ?? 7);

  BabyData.fromSnapshot(DocumentSnapshot snapshot)
      : this.fromMap(snapshot.data, reference: snapshot.reference);

  // if want to use: onTap: () => print(baby),
  @override String toString() => "Record<$name:$votes>";
}

android/app/src/gradle.build添加multiDexEnabled为:

android {
  defaultConfig {
    multiDexEnabled true
    }
}

笔记

对于 Android,确保出现相同的包名称是:-manifiest-build.gradle-.kt/.java 文件

4

1 回答 1

1

我的问题是我没有关闭邮件我应该在最后这样做

    mail.close()
    mail.logout()
于 2018-12-21T00:00:57.830 回答