У меня есть программа, которая отправляет строку в кодировке 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.RawURLEncoding
, если вам не нужны отступы (ваша функция использует дополненную версию, а затем, кажется, вручную удаляет отступы).
@CeriseLimón, где в Gmail есть опция «Показать оригинал» и как мне это сделать?
@DaveC, можете ли вы включить пример кода, как использовать base64.RawURLEncoding
«Показать оригинал» находится в меню «Дополнительно» (три вертикальные точки) в представлении сообщений. Покажите код, который устанавливает заголовки сообщений. Подозреваю, что приложение не устанавливает или неправильно устанавливает тип контента.
Я наконец исправил это. Мне пришлось изменить тип контента с text/html
на text/plain
, и теперь новые строки правильно отображаются в почтовом клиенте.
Кодировщик base64 обрабатывает все значения байтов, включая новую строку. Используйте «Показать оригинал» в Gmail, чтобы просмотреть полученные необработанные байты сообщения. Возможно, новые строки были отправлены так, как вы ожидаете, но сообщение отображается как HTML.