2017-02-01 10 views
0

添付ファイルのユーザーがボットフレームワークエミュレータからsmtpサーバー経由でメールIDに送信する必要があります。私はユーザーから添付ファイルを取得するのに成功していますが、同じ添付ファイルがsmtpメール経由で転送されていません。 ボットから受信した添付ファイルの時刻は、Microsoft.Botタイプです。 Connector.Attachmentsではなくsmtp添付ファイルがSystem.Net.Mail.Attachment型である必要があります。 私はこのリンクから答えを試しました: - Ability to receive files with the MS bot framework
しかし、これは私の問題を完全には解決しませんでした。 私はボットの添付ファイルの名前の値を使用して変換を試みました。ボットフレームワークの添付ファイルをSMTPの添付ファイルに変換する

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 ..

を助けてください。

+1

'C:\ Program Files(x86)\ IIS Express \ colorado-sunrise.jpg 'というファイルは見つかりませんでした。 – bashis

+0

C:¥Program Files(x86)¥IIS Expressに添付ファイルをコピーする必要がありますか?はいの場合、どのように私はボットの添付ファイルから特定の場所にコピーするのですか? –

+0

解決策が見つかりました。私は実際にファイルをダウンロードしなければなりませんでした。 @stuartd、私は答えを提供できるように重複として質問を削除してください。 –

答えて

0

'C:¥Program Files(x86)¥IIS Express¥'の場所でsmtpメールフォームの添付ファイルが検索されましたが、そのファイルが見つかりませんでした。添付ファイルが永久に保存されなかったと思います。このために、私が最初に以下のようにWebClientクラスを使用してボット接続から添付ファイルをダウンロード:

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); 
     } 

ビンゴ!メールは添付ファイルとともに正常に送信されます。

関連する問題