2013-02-23 10 views
0

Я работаю над проектом, где мне нужно создать собственный почтовый сервер с SMTP. Все материалы SMTP работают нормально, но теперь я работаю над возможностью отправки вложений.Чтение в приложении через SMTP в C#

Что я делаю, я читаю данные, поступающие от клиента для вложения, которое входит в качестве базовой строки 64. Затем я декодирую строку базы 64 и записываю ее в файл, который мой почтовый сервер затем прикрепляет и пересылает получателю.

Это прекрасно работает при отправке txt-файла, но если я попытаюсь отправить что-нибудь еще, например docx, image и т. Д., Когда происходит декодирование, он выдает исключение, указав, что базовая 64-строка является недопустимой длиной.

Когда я копирую и вставляю базовую 64-строчную строку, которую я получаю в онлайн-инструмент преобразования, они не терпят неудачу, я получаю хотя бы часть правильного содержимого, когда смотрю на файл изображения в блокноте ++. Я вижу некоторые xml, который я также вижу в своей расшифрованной строке в онлайн-инструменте конверсии. Однако онлайн-инструмент имеет некоторые другие вещи, которые не совпадают.

Есть ли какая-то разница в том, как кодируется базовая 64-строчная строка при отправке мне или что-то нужно делать по-другому с расшифровкой базовой строки 64 между текстовыми файлами и файлами изображений.

Спасибо за любую помощь, которую вы можете предоставить.

ответ

0

SMTP не знает вложений. Он используется для указания сообщения и набора получателей. Получатели должны быть действительными адресами, но SMTP не заботится о том, как выглядит это сообщение.

Что вы хотите сделать, это исследование MIME. MIME - это особый формат сообщений электронной почты, позволяющий отправлять сообщения с богатым контентом (например, HTML вместо простого текста) или для отправки многочастных сообщений, таких как сообщение, а также прикрепление файла.

Отправка сообщения с приложением включает в себя создание надлежащим образом отформатированного сообщения MIME, а затем использование SMTP таким же образом, как вы сейчас это делаете, рассматривая сообщение как большой текст, как и любой другой. Это только специальное форматирование текста (которое интерпретируется почтовыми клиентами, но игнорируется самим SMTP), что делает разницу.

+0

Ну, сервер SMTP будет принимать многостраничное сообщение, которое будет включать вложения; поэтому, «ничего общего с вложениями» на самом деле не так. –

+0

Что касается «Как сделать X?», SMTP-сервер не имеет ничего общего с вложениями, или, что более важно, он имеет столько же общего с ним, как и тип двигателя автомобиля, связанный с тем, как вы упаковываете свои одежду в багаже, когда вы совершаете поездку. – Jherico

+0

Спасибо за помощь – Boardy

Смежные вопросы