未捕获 不支持的操作:套接字构造函数



我正在使用依赖 https://pub.dev/packages/mailer 通过颤振 Web 应用程序发送自动消息,对于这部分,我使用以下代码。

String username="************";
String password = "*******";
var smtpServer = gmail(username,password);
final message = Message()
..from = Address(username, 'Truck App')
..recipients.add('******')
..subject = 'Testing'
..text = msg.text
..html = "<h1>Test</h1>n<p> Hey! Here's some text</p>";
try{
final sendReport =  await send(message, smtpServer);
print('Message sent:'+sendReport.toString());
} on MailerException catch (e){
print('Message not sent.');
for(var p in e.problems){
print('Problem: ${p.code}: ${p.msg}');
}
}
final equivalentMessage = Message()
..from = Address(username, 'Your name   ')
..recipients.add(Address('******'))
..ccRecipients.addAll([Address('******')])
..bccRecipients.add('*********')
..subject = 'Test Dart Mailer library ::    ::'
..text = 'This is the plain text.nThis is line 2 of the text part.'
..html = '<h1>Test</h1>n<p>Hey! Here is some HTML content</p>';
final sendReport2 = await send(equivalentMessage, smtpServer);
var connection = PersistentConnection(smtpServer);
await connection.send(message);
await connection.send(equivalentMessage);
await connection.close();

但是我收到这样的错误:

js_helper.dart:1130 Uncaught Unsupported operation: Socket constructor
at Object.b (http://localhost:52881/main.dart.js:4220:3)
at Object.aVb (http://localhost:52881/main.dart.js:8007:31)
at Object.aVc (http://localhost:52881/main.dart.js:8034:5)
at http://localhost:52881/main.dart.js:79815:14
at awO.a (http://localhost:52881/main.dart.js:5925:71)
at awO.$2 (http://localhost:52881/main.dart.js:38402:23)
at Object.W (http://localhost:52881/main.dart.js:5911:19)
at Ku.yv (http://localhost:52881/main.dart.js:79822:10)
at http://localhost:52881/main.dart.js:25197:14
at awO.a (http://localhost:52881/main.dart.js:5925:71)

Socket对象不能在Web上构造,因为它们来自编译为JS时不可用dart:io

在 pub.dev 上查看软件包时,您将能够看到支持的平台。如果你去 https://pub.dev/packages/mailer,你会发现它只支持Dart原生,而支持的Flutter平台中缺少web

所以在这里我得到了这个问题的答案,正如Cameron1024在前面的answe中提到的,这段代码是可压缩的,适用于Android平台(经过测试),但是当您尝试将其集成到Web平台上时会抛出相同的错误。

因此,要通过网络平台发送邮件,您可以使用 pub.dev 上提供的sendgrid_mailer软件包

要使用Sendgrid_mailer您需要拥有API密钥,该密钥可以从Sendgrid官方网站获得。

谢谢

相关内容

  • 没有找到相关文章

最新更新