【问题标题】:How to make my bot send an e-mail to a given email address?如何让我的机器人向给定的电子邮件地址发送电子邮件?
【发布时间】:2018-12-19 20:04:09
【问题描述】:

我正在使用 Microsoft Bot Framework (.NET) 构建一个机器人,我想要一个联系人对话框,用户可以在其中编写主题、电子邮件正文以及他想要向其发送电子邮件的用户。

例如,假设机器人用户正在提问,如果机器人无法正确回答问题,我想抛出一个联系对话框,用户可以在其中联系管理人员通过电子邮件询问他/她的问题。

据我所知,我可以将电子邮件渠道与 Office 365 电子邮件集成,以便我的机器人可以回复电子邮件。但是有没有办法发送电子邮件?我正在使用 Direct Line API 通道。

谢谢你!

【问题讨论】:

  • 您使用的是 Node.js 还是 .NET?
  • 我正在使用 .NET,我将编辑我的问题。

标签: .net email botframework contact-form


【解决方案1】:

例如,使用SmptClientSendGrid 发送您的电子邮件。 StackOverflow 上有很多示例,如下所示:Send e-mail via SMTP using C#

在这种情况下使用Email 通道不是一个好主意:它不会像您想要的那样管理流量,并且是对通道的滥用。电子邮件通道和其他通道一样,必须用于对话,而不是出于特殊需要立即发送消息。

【讨论】:

  • 所以我应该在我的机器人中实现这个功能,以使用 Direct Line API 通道发送电子邮件/消息,而不是创建电子邮件通道,对吗?
  • 是的。在您的机器人代码中,只需添加代码以将电子邮件发送到您需要的地方(所以在您的联系对话框中),这就是您所需要的
  • 好的。如果我不想发送电子邮件,而是想向托管直线 api 的应用程序发送消息,该怎么办?相同或类似的东西可以工作吗?
  • 在不了解更多细节的情况下,我无法回答这个问题。你在说什么样的“应用”,如何向这个应用发送消息等等。
【解决方案2】:

您的机器人可以通过一种方式发送电子邮件。您应该首先使用电子邮件服务。在我的情况下,我使用 SendGrid。代码如下:

             System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
             SmtpClient SmtpServer = new SmtpClient("smtp.sendgrid.net");

             mail.From = new MailAddress("youremailaddress@gmail.com");
             mail.To.Add(useremail);
             mail.Subject = "";
             mail.Body ="";

             SmtpServer.Port = 587;
             SmtpServer.Credentials = new System.Net.NetworkCredential("apikey", "");
             SmtpServer.EnableSsl = true;

             SmtpServer.Send(mail);

【讨论】:

  • 如何获取apikey?
  • 您应该先订阅 SendGrid 服务以获取 Azure 中的 Api 密钥。
猜你喜欢
  • 2014-07-20
  • 2012-06-24
  • 2016-01-21
  • 2017-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
相关资源
最近更新 更多