Source:
private void sendMessageTo(List<String> addresses, Message message) throws MessagingException { close(); open(); if (!m8bitEncodingAllowed) { Log.d(LOG_TAG, "Server does not support 8bit transfer encoding"); } if (mLargestAcceptableMessage > 0 && message.hasAttachments()) { if (message.calculateSize() > mLargestAcceptableMessage) { throw new MessagingException("Message too large for server", true); } } boolean entireMessageSent = false; Address[] from = message.getFrom(); try { String fromAddress = from[0].getAddress(); if (pipeliningSupported) { pipelinedCommand = new LinkedList<>(); if (m8bitEncodingAllowed) { executeCommandPipelined("MAIL FROM:<%s> BODY=8BITMIME", fromAddress); } else { executeCommandPipelined("MAIL FROM:<%s>", fromAddress); } for (String address : addresses) { executeCommandPipelined("RCPT TO:<%s>", address); } executeCommandPipelined("DATA"); CommandResponse commandResponse = readPipelinedResponse(); if (commandResponse.replyCode != 354) { String replyText = TextUtils.join(" ", commandResponse.results); throw new NegativeSmtpReplyException(commandResponse.replyCode, replyText); } } else { if (m8bitEncodingAllowed) { executeCommand("MAIL FROM:<%s> BODY=8BITMIME", fromAddress); } else { executeCommand("MAIL FROM:<%s>", fromAddress); } for (String address : addresses) { executeCommand("RCPT TO:<%s>", address); } executeCommand("DATA"); } EOLConvertingOutputStream msgOut = new EOLConvertingOutputStream( new LineWrapOutputStream(new SmtpDataStuffing(mOut), 1000)); message.writeTo(msgOut); msgOut.endWithCrLfAndFlush(); entireMessageSent = true; executeCommand("."); } catch (NegativeSmtpReplyException e) { throw e; } catch (Exception e) { MessagingException me = new MessagingException("Unable to send message", e); me.setPermanentFailure(entireMessageSent); throw me; } finally { close(); } }

Target:
private void sendMessageTo(List<String> addresses, Message message) throws MessagingException { close(); open(); if (!is8bitEncodingAllowed) { Timber.d("Server does not support 8bit transfer encoding"); } if (largestAcceptableMessage > 0 && message.hasAttachments()) { if (message.calculateSize() > largestAcceptableMessage) { throw new MessagingException("Message too large for server", true); } } boolean entireMessageSent = false; Address[] from = message.getFrom(); try { String fromAddress = from[0].getAddress(); if (pipeliningSupported) { Queue<String> pipelinedCommands = new LinkedList<>(); if (is8bitEncodingAllowed) { pipelinedCommands.add(String.format("MAIL FROM:<%s> BODY=8BITMIME", fromAddress)); } else { pipelinedCommands.add(String.format("MAIL FROM:<%s>", fromAddress)); } for (String address : addresses) { pipelinedCommands.add(String.format("RCPT TO:<%s>", address)); } pipelinedCommands.add("DATA"); executePipelinedCommands(pipelinedCommands); readPipelinedResponse(pipelinedCommands); } else { if (is8bitEncodingAllowed) { executeCommand("MAIL FROM:<%s> BODY=8BITMIME", fromAddress); } else { executeCommand("MAIL FROM:<%s>", fromAddress); } for (String address : addresses) { executeCommand("RCPT TO:<%s>", address); } executeCommand("DATA"); } EOLConvertingOutputStream msgOut = new EOLConvertingOutputStream( new LineWrapOutputStream(new SmtpDataStuffing(outputStream), 1000)); message.writeTo(msgOut); msgOut.endWithCrLfAndFlush(); entireMessageSent = true; executeCommand("."); } catch (NegativeSmtpReplyException e) { throw e; } catch (Exception e) { MessagingException me = new MessagingException("Unable to send message", e); me.setPermanentFailure(entireMessageSent); throw me; } finally { close(); } }