Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中使用JavaMail API发送电子邮件而不使用邮件应用程序_Android_Email - Fatal编程技术网

在Android中使用JavaMail API发送电子邮件而不使用邮件应用程序

在Android中使用JavaMail API发送电子邮件而不使用邮件应用程序,android,email,Android,Email,使用本教程,我将代码加载到一个示例android项目中,并导入了库。更改了行中的参数: send.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub try { GMailSender sender = new GMailSend

使用本教程,我将代码加载到一个示例android项目中,并导入了库。更改了行中的参数:

send.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // TODO Auto-generated method stub
            try {
                GMailSender sender = new GMailSender("sender@gmail.com", "sender_password");
                sender.sendMail("This is Subject", "This is Body", "sender@gmail.com", "recipient@gmail.com");
            } catch (Exception e) {
                Log.e("SendMail", e.getMessage(), e);
            }

        }
    });
想要测试它,在这段代码中,当我按下按钮时,try代码块成功执行,但我没有收到邮件,也没有收到任何错误。由于没有自述文件或任何关于如何使用此代码的指导原则,我别无选择,只能问我做错了什么

为了澄清这一混乱,我把发件人的电子邮件改为sender@gmail.com,密码和密码也是如此recipient@gmail.com.


我还将INTERNET权限添加到清单中。

如果您想改用mailgun,可以这样做:

public void sendEmailInBackground(final String subject, final String body, final String... toAddress) {

    AsyncTask task = new AsyncTask() {
        @Override
        protected Object doInBackground(Object[] objects) {

            String hostname = "smpt.mailgun.org";
            int port = 25;
            String login = "login";
            String password = "password";
            String from = "from@example.com";
            AuthenticatingSMTPClient client = null;

            try {
                client = new AuthenticatingSMTPClient();
                // optionally set a timeout to have a faster feedback on errors
                client.setDefaultTimeout(10 * 1000);
                // you connect to the SMTP server
                client.connect(hostname, port);
                // you say helo  and you specify the host you are connecting from, could be anything
                client.ehlo("localhost");
                // if your host accepts STARTTLS, we're good everything will be encrypted, otherwise we're done here
                if (client.execTLS()) {

                    client.auth(AuthenticatingSMTPClient.AUTH_METHOD.LOGIN, login, password);
                    checkReply(client);

                    client.setSender(from);
                    checkReply(client);

                    String address = "";
                    if (toAddress != null) {
                        for (String to : toAddress) {
                            if(to != null && to.length() > 0) {
                                client.addRecipient(to);
                                if (address.length() == 0) {
                                    address += ",";
                                }
                                address += to;
                            }
                        }
                    }

                    if(address.length() == 0){
                        logger.warning("No address specified for mail message");
                        return null;
                    }

                    checkReply(client);

                    Writer writer = client.sendMessageData();

                    if (writer != null) {

                        SimpleSMTPHeader header = new SimpleSMTPHeader(from, address, subject);
                        writer.write(header.toString());
                        writer.write(body);
                        writer.close();
                        if (!client.completePendingCommand()) {// failure
                            throw new IOException("Failure to send the email " + client.getReply() + client.getReplyString());
                        }
                    } else {
                        throw new IOException("Failure to send the email " + client.getReply() + client.getReplyString());
                    }
                } else {
                    throw new IOException("STARTTLS was not accepted " + client.getReply() + client.getReplyString());
                }
            } catch (IOException | NoSuchAlgorithmException | InvalidKeyException | InvalidKeySpecException e) {
                logger.severe("Error sending email",e);
            } finally {
                if (client != null) {
                    try {
                        client.logout();
                        client.disconnect();
                    } catch (Exception e) {
                        logger.warning("Error closing email client: " + e.getMessage());
                    }
                }
            }
            return null;
        }
    };

    task.execute();
}

private static void checkReply(SMTPClient sc) throws IOException {

    if (SMTPReply.isNegativeTransient(sc.getReplyCode())) {
        throw new IOException("Transient SMTP error " + sc.getReplyString());
    } else if (SMTPReply.isNegativePermanent(sc.getReplyCode())) {
        throw new IOException("Permanent SMTP error " + sc.getReplyString());
    }
}

如果你想改用邮枪,你可以这样做:

public void sendEmailInBackground(final String subject, final String body, final String... toAddress) {

    AsyncTask task = new AsyncTask() {
        @Override
        protected Object doInBackground(Object[] objects) {

            String hostname = "smpt.mailgun.org";
            int port = 25;
            String login = "login";
            String password = "password";
            String from = "from@example.com";
            AuthenticatingSMTPClient client = null;

            try {
                client = new AuthenticatingSMTPClient();
                // optionally set a timeout to have a faster feedback on errors
                client.setDefaultTimeout(10 * 1000);
                // you connect to the SMTP server
                client.connect(hostname, port);
                // you say helo  and you specify the host you are connecting from, could be anything
                client.ehlo("localhost");
                // if your host accepts STARTTLS, we're good everything will be encrypted, otherwise we're done here
                if (client.execTLS()) {

                    client.auth(AuthenticatingSMTPClient.AUTH_METHOD.LOGIN, login, password);
                    checkReply(client);

                    client.setSender(from);
                    checkReply(client);

                    String address = "";
                    if (toAddress != null) {
                        for (String to : toAddress) {
                            if(to != null && to.length() > 0) {
                                client.addRecipient(to);
                                if (address.length() == 0) {
                                    address += ",";
                                }
                                address += to;
                            }
                        }
                    }

                    if(address.length() == 0){
                        logger.warning("No address specified for mail message");
                        return null;
                    }

                    checkReply(client);

                    Writer writer = client.sendMessageData();

                    if (writer != null) {

                        SimpleSMTPHeader header = new SimpleSMTPHeader(from, address, subject);
                        writer.write(header.toString());
                        writer.write(body);
                        writer.close();
                        if (!client.completePendingCommand()) {// failure
                            throw new IOException("Failure to send the email " + client.getReply() + client.getReplyString());
                        }
                    } else {
                        throw new IOException("Failure to send the email " + client.getReply() + client.getReplyString());
                    }
                } else {
                    throw new IOException("STARTTLS was not accepted " + client.getReply() + client.getReplyString());
                }
            } catch (IOException | NoSuchAlgorithmException | InvalidKeyException | InvalidKeySpecException e) {
                logger.severe("Error sending email",e);
            } finally {
                if (client != null) {
                    try {
                        client.logout();
                        client.disconnect();
                    } catch (Exception e) {
                        logger.warning("Error closing email client: " + e.getMessage());
                    }
                }
            }
            return null;
        }
    };

    task.execute();
}

private static void checkReply(SMTPClient sc) throws IOException {

    if (SMTPReply.isNegativeTransient(sc.getReplyCode())) {
        throw new IOException("Transient SMTP error " + sc.getReplyString());
    } else if (SMTPReply.isNegativePermanent(sc.getReplyCode())) {
        throw new IOException("Permanent SMTP error " + sc.getReplyString());
    }
}

任何受过培训的人都可以从你的APK获得硬编码密码。我知道,我会及时处理。任何受过培训的人都可以从你的APK获得硬编码密码。我知道,我会及时处理。