从 Flutter/dart 发送 html 格式的文本
Send html formatted text from Flutter/dart
我成功地从 Flutter 发送了一封电子邮件,但电子邮件消息中只允许 <br>
。
如果我尝试使用 <b>
标记,它会以状态代码 400 进行响应。
Future<Null> testingEmail(String userId, Map header) async {
header['Accept'] = 'application/json';
header['Content-type'] = 'application/json';
var from = userId;
var to = userId;
var subject = 'test send email';
var message = "Hi<br/>Html <b>Email</b><br><br>gfdgdfgdfg";
var content = '''
Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
to: ${to}
from: ${from}
subject: ${subject}
${message}''';
var bytes = utf8.encode(content);
var base64 = base64Encode(bytes);
var body = json.encode({'raw': base64});
String url =
'https://www.googleapis.com/gmail/v1/users/' + userId + '/messages/send';
final http.Response response =
await http.post(url, headers: header, body: body);
}
最简单的解决方案可能就是使用 https://pub.dev/packages/mailer
构建字符串时,请注意换行符。最好使用 \n
来避免问题,而不是使用 base64Encode
,而是使用 base64Url
。这是一个显示编码主体的小示例:
import 'dart:convert';
void main() {
var content = '''Content-Type: text/html; charset=utf-8\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\nto: user2@domain\nsender: user@domain\nsubject: API test Dart\n\nHi<br/>Html <b>Email</b><br><br>gfdgdfgdfg''';
String encoded = base64Url.encode(utf8.encode(content));
print(encoded);
}
此外,我建议您查看 Google API Client Libraries with Dart,这是 Google 提供的官方 Dart 库,用于使用其 API。
我成功地从 Flutter 发送了一封电子邮件,但电子邮件消息中只允许 <br>
。
如果我尝试使用 <b>
标记,它会以状态代码 400 进行响应。
Future<Null> testingEmail(String userId, Map header) async {
header['Accept'] = 'application/json';
header['Content-type'] = 'application/json';
var from = userId;
var to = userId;
var subject = 'test send email';
var message = "Hi<br/>Html <b>Email</b><br><br>gfdgdfgdfg";
var content = '''
Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
to: ${to}
from: ${from}
subject: ${subject}
${message}''';
var bytes = utf8.encode(content);
var base64 = base64Encode(bytes);
var body = json.encode({'raw': base64});
String url =
'https://www.googleapis.com/gmail/v1/users/' + userId + '/messages/send';
final http.Response response =
await http.post(url, headers: header, body: body);
}
最简单的解决方案可能就是使用 https://pub.dev/packages/mailer
构建字符串时,请注意换行符。最好使用 \n
来避免问题,而不是使用 base64Encode
,而是使用 base64Url
。这是一个显示编码主体的小示例:
import 'dart:convert';
void main() {
var content = '''Content-Type: text/html; charset=utf-8\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\nto: user2@domain\nsender: user@domain\nsubject: API test Dart\n\nHi<br/>Html <b>Email</b><br><br>gfdgdfgdfg''';
String encoded = base64Url.encode(utf8.encode(content));
print(encoded);
}
此外,我建议您查看 Google API Client Libraries with Dart,这是 Google 提供的官方 Dart 库,用于使用其 API。