Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpMlAtt 275 of 299 menu
◀ ▶

Вложение в Kotlin

Письмо с текстом и файлом собирают как MimeMultipart: первая MimeBodyPart - обычный текст, вторая - вложение с именем файла и данными из ByteArrayDataSource.

Байты создают в программе, без чтения с диска. После отправки проверяют, что принято одно составное сообщение:

import com.icegreen.greenmail.util.GreenMail import com.icegreen.greenmail.util.ServerSetupTest import jakarta.activation.DataHandler import jakarta.mail.Message import jakarta.mail.Session import jakarta.mail.Transport import jakarta.mail.internet.InternetAddress import jakarta.mail.internet.MimeBodyPart import jakarta.mail.internet.MimeMessage import jakarta.mail.internet.MimeMultipart import jakarta.mail.util.ByteArrayDataSource import java.util.Properties fun main() { val server = GreenMail(ServerSetupTest.SMTP) server.start() server.setUser("reader@local.test", "reader", "pass") val props = Properties() props["mail.smtp.host"] = "127.0.0.1" props["mail.smtp.port"] = server.smtp.port.toString() props["mail.smtp.auth"] = "false" val session = Session.getInstance(props) val textPart = MimeBodyPart() textPart.setText("See the attached note.") val fileBytes = "price=19".toByteArray(Charsets.UTF_8) val filePart = MimeBodyPart() filePart.fileName = "quote.txt" filePart.dataHandler = DataHandler( ByteArrayDataSource(fileBytes, "text/plain"), ) val parts = MimeMultipart() parts.addBodyPart(textPart) parts.addBodyPart(filePart) val letter = MimeMessage(session) letter.setFrom(InternetAddress("writer@local.test")) letter.setRecipient( Message.RecipientType.TO, InternetAddress("reader@local.test"), ) letter.subject = "With attachment" letter.setContent(parts) Transport.send(letter) val saved = server.receivedMessages[0] val multipart = saved.content as MimeMultipart println(multipart.count) server.stop() }

Число 2 означает две части: текст и вложение. Имя quote.txt попадает в заголовок части с файлом.

Добавьте вложение data.bin из четырех байт 1, 2, 3 и 4. Выведите число частей принятого письма.

Оставьте текстовую часть с фразой "Attached." и вторую часть с байтами строки "ok". Имя файла задайте "flag.txt". Выведите count у MimeMultipart из ящика.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить