将 Bot 框架附件转换为 SMTP 附件
Convert Bot framework attachment to SMTP attachment
我需要发送一个附件,用户正在通过 smtp 服务器从 bot 框架模拟器发送到邮件 ID。我成功地从用户那里检索了附件,但是没有通过 smtp 邮件传输相同的附件。
从机器人收到的附件时间类型为 Microsoft.Bot。 Connector.Attachments 但 smtp 附件必须是 System.Net.Mail.Attachment 类型。
我已经尝试了这个 link 的答案:- 。
但这并没有完全解决我的问题。
我已经尝试使用 Bot 附件的名称值进行转换。
MailMessage message = new MailMessage(EntityValues.FromEmail, To, Subject, MessageBody);
if (attachment != null)
{
System.Net.Mail.Attachment data = new System.Net.Mail.Attachment(attachment.Name);
message.Attachments.Add(data);
public virtual async Task SaveAttachment(IDialogContext context, IAwaitable<IMessageActivity> result)
{
var message = await result;
if (message.Attachments != null && message.Attachments.Any())
{
var attachment = message.Attachments.First();
string sendresult = SendEmail(EntityValues.ToEmail, EntityValues.ProblemHeader, EntityValues.problemStatement,attachment);
我传递了附件,然后尝试在邮件中添加附件名称,如下所示:
public string SendEmail(string To, string Subject, string MessageBody, Microsoft.Bot.Connector.Attachment attachment)
{
try
{
MailMessage message = new MailMessage(EntityValues.FromEmail, To, Subject, MessageBody);
message.IsBodyHtml = true;
message.BodyEncoding = Encoding.Default;
if (attachment != null)
{
System.Net.Mail.Attachment data = new System.Net.Mail.Attachment(attachment.Name);
message.Attachments.Add(data);
但我收到以下错误消息:
System.IO.FileNotFoundException: Could not find file ‘C:\Program Files (x86)\IIS Express\colorado-sunrise.jpg’ jpg’. File name: ‘C:\Program Files (x86)\IIS Express\colorado-sunrise.jpg’ at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.Net.Mail.AttachmentBase.SetContentFromFile(String fileName, String mediaType) at System.Net.Mail.AttachmentBase..ctor(String fileName) at System.Net.Mail.Attachment..ctor(String fileName) at MyBotApp.StateDialogTest.SendEmail(String To, String Subject, String MessageBody, Attachment attachment) in ..
请帮忙。
在'C:\Program Files (x86)\IIS Express\'位置搜索到smtp邮件形式的附件,但没有找到文件,估计附件没有永久保存。为此,我首先使用 WebClient Class 从 bot 连接下载附件,如下所示:
string ContentURL = attachment.ContentUrl;
string name = attachment.Name;
using (var client = new WebClient())
{
client.DownloadFile(ContentURL, name); }
然后我在创建新的 SMTP 邮件附件实例时传递了附件的名称。
public string SendEmail(string To, string Subject, string MessageBody, Microsoft.Bot.Connector.Attachment attachment)
{
try
{HttpClient httpClient = new HttpClient();
MailMessage message = new MailMessage(EntityValues.FromEmail, To, Subject, MessageBody);
if (attachment != null)
{ System.Net.Mail.Attachment data = new System.Net.Mail.Attachment(attachment.Name);
message.Attachments.Add(data);
}
还有宾果游戏!带附件的邮件发送成功。
我需要发送一个附件,用户正在通过 smtp 服务器从 bot 框架模拟器发送到邮件 ID。我成功地从用户那里检索了附件,但是没有通过 smtp 邮件传输相同的附件。
从机器人收到的附件时间类型为 Microsoft.Bot。 Connector.Attachments 但 smtp 附件必须是 System.Net.Mail.Attachment 类型。
我已经尝试了这个 link 的答案:-
但这并没有完全解决我的问题。
我已经尝试使用 Bot 附件的名称值进行转换。
MailMessage message = new MailMessage(EntityValues.FromEmail, To, Subject, MessageBody);
if (attachment != null)
{
System.Net.Mail.Attachment data = new System.Net.Mail.Attachment(attachment.Name);
message.Attachments.Add(data);
public virtual async Task SaveAttachment(IDialogContext context, IAwaitable<IMessageActivity> result)
{
var message = await result;
if (message.Attachments != null && message.Attachments.Any())
{
var attachment = message.Attachments.First();
string sendresult = SendEmail(EntityValues.ToEmail, EntityValues.ProblemHeader, EntityValues.problemStatement,attachment);
我传递了附件,然后尝试在邮件中添加附件名称,如下所示:
public string SendEmail(string To, string Subject, string MessageBody, Microsoft.Bot.Connector.Attachment attachment)
{
try
{
MailMessage message = new MailMessage(EntityValues.FromEmail, To, Subject, MessageBody);
message.IsBodyHtml = true;
message.BodyEncoding = Encoding.Default;
if (attachment != null)
{
System.Net.Mail.Attachment data = new System.Net.Mail.Attachment(attachment.Name);
message.Attachments.Add(data);
但我收到以下错误消息:
System.IO.FileNotFoundException: Could not find file ‘C:\Program Files (x86)\IIS Express\colorado-sunrise.jpg’ jpg’. File name: ‘C:\Program Files (x86)\IIS Express\colorado-sunrise.jpg’ at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.Net.Mail.AttachmentBase.SetContentFromFile(String fileName, String mediaType) at System.Net.Mail.AttachmentBase..ctor(String fileName) at System.Net.Mail.Attachment..ctor(String fileName) at MyBotApp.StateDialogTest.SendEmail(String To, String Subject, String MessageBody, Attachment attachment) in ..
请帮忙。
在'C:\Program Files (x86)\IIS Express\'位置搜索到smtp邮件形式的附件,但没有找到文件,估计附件没有永久保存。为此,我首先使用 WebClient Class 从 bot 连接下载附件,如下所示:
string ContentURL = attachment.ContentUrl;
string name = attachment.Name;
using (var client = new WebClient())
{
client.DownloadFile(ContentURL, name); }
然后我在创建新的 SMTP 邮件附件实例时传递了附件的名称。
public string SendEmail(string To, string Subject, string MessageBody, Microsoft.Bot.Connector.Attachment attachment)
{
try
{HttpClient httpClient = new HttpClient();
MailMessage message = new MailMessage(EntityValues.FromEmail, To, Subject, MessageBody);
if (attachment != null)
{ System.Net.Mail.Attachment data = new System.Net.Mail.Attachment(attachment.Name);
message.Attachments.Add(data);
}
还有宾果游戏!带附件的邮件发送成功。