Добавление новой строки в строку base64url

У меня есть программа, которая отправляет строку в кодировке base64url, но я читал в некоторых местах, что символ '\' не поддерживается base64. Моя цель — отправлять электронные письма с API Gmail в Go. Корпусная часть состоит из:

"Name: \n\nThis is the body of the email\n\nSincerely,\nSenderName"

Когда я отправлять электронные письма через Gmail API, мне нужно передать строку base64url. У меня есть следующая функция, чтобы справиться с этим:

func encodeWeb64String(b []byte) string {

    s := base64.URLEncoding.EncodeToString(b)

    var i = len(s) - 1
    for s[i] == '=' {
        i--
    }

    return s[0 : i+1]
}

Я уже добавил информацию заголовка в msg после этого сообщение и установил тип содержимого text/html; charset=\"utf-8\". Затем я создаю сообщение Gmail, используя это:

gmsg := gmail.Message{
    Raw: encodeWeb64String([]byte(msg)),
}

Когда письмо приходит, оно выглядит так:

Name: This is the body of the email Sincerely, SenderName

Но я хочу, чтобы каждый '\n' помещал настоящую новую строку. Спасибо за любую помощь, я новичок в Gmail API для Go.

Кодировщик base64 обрабатывает все значения байтов, включая новую строку. Используйте «Показать оригинал» в Gmail, чтобы просмотреть полученные необработанные байты сообщения. Возможно, новые строки были отправлены так, как вы ожидаете, но сообщение отображается как HTML.

Bayta Darell 27.07.2019 03:04

Не имеет отношения к вашей проблеме, но я почти уверен, что вы хотите использовать base64.RawURLEncoding, если вам не нужны отступы (ваша функция использует дополненную версию, а затем, кажется, вручную удаляет отступы).

Dave C 27.07.2019 17:24

@CeriseLimón, где в Gmail есть опция «Показать оригинал» и как мне это сделать?

Gabe 27.07.2019 23:53

@DaveC, можете ли вы включить пример кода, как использовать base64.RawURLEncoding

Gabe 28.07.2019 00:14

«Показать оригинал» находится в меню «Дополнительно» (три вертикальные точки) в представлении сообщений. Покажите код, который устанавливает заголовки сообщений. Подозреваю, что приложение не устанавливает или неправильно устанавливает тип контента.

Bayta Darell 28.07.2019 00:48
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
0
5
294
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я наконец исправил это. Мне пришлось изменить тип контента с text/html на text/plain, и теперь новые строки правильно отображаются в почтовом клиенте.

Другие вопросы по теме