2012-05-03 11 views
1

私は[WebMethod] Sendemailを持っています。これはうまく動作しますが、今は添付ファイルを送信するためにアップグレードするものです。私はファイルアップロードを使用しています。これは私のメソッドコールです。 「WebTestServiceApp.localhost.Service1.Sendemail(文字列のための最良のオーバーロードされたメソッドの試合*FileUploadコンテンツを[WebMethod]に渡す正しい方法は?

* 1):私のCALL文は青などの2つのエラー与えられた表情に下線が引かれている

lblEmailSent.Text = Send.Sendemail(txtTo.Text, txtSubject.Text, txtbody.Text, FileUpload1.PostedFile.FileName, FileUpload1.FileContent); 

、文字列、 文字列、文字列、WebTestServiceApp.localhost.Streamは) ':から変換できません

* 2) *引数5いくつかの無効な 引数があります' WebTestServiceApp.localhost.Stream '

FileUpload1.PostedFile.FileNameがString FileUpload1.FileContentとして渡される」から' System.IO.Streamをストリームとして渡され

これが今、私の[WebMethod属性]ですあなたは私が見ることができるすべてを見ることができます、私は何か間違っていることはできませんが、FileUpload1.FileContentがStreamとして渡されるべきかどうかはわかりません。

[WebMethod] 
public string Sendemail(String inValueTo, String inValueSub, String inValueBody, String inValueAttachmentPostedfile, Stream inValueAttachemtnFileContent) //, String inValueAttachmentPostedfile, Stream inValueAttachemtnFileContent 
{ 
    try 
    { 
     String valueTo = inValueTo; 
     String valueSub = inValueSub; 
     String valueBody = inValueBody; 
     String valueAttachmentPostedfile = inValueAttachmentPostedfile; //FileUpload1.PostedFile.FileName 
     Stream valueAttachmentFileContent = inValueAttachemtnFileContent; //FileUpload1.FileContent.fileName 

     System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); // Creating new message. 

     message.To.Add(valueTo); 
     message.Subject = valueSub; 
     message.From = new System.Net.Mail.MailAddress("[email protected]"); 
     message.Body = valueBody; 
     message.IsBodyHtml = true; 

      string fileName = Path.GetFileName(valueAttachmentPostedfile); // Get attachment file 
     Attachment myAttachment = 
         new Attachment(valueAttachmentFileContent, fileName); 
      if (fileName != "") 
      { 
       message.Attachments.Add(myAttachment); // Send attachment 
      } 

     System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com"); //Properties.Settings.Default.MailSMTPServer 

     smtp.Port = 587; 
     smtp.EnableSsl = true; 
     smtp.UseDefaultCredentials = false; 

     NetworkCredential netC = new NetworkCredential(Properties.Settings.Default.username, Properties.Settings.Default.password); // Useing Projects defult settings. 
     smtp.Credentials = netC; 
     smtp.Send(message); 

     return "Message has been sent"; 
    } 
    catch (Exception) 
    { 
     return "Message faild to send" ; 

    } 
} 

答えて

0

それはあなたが頭の上に釘を打つ与え、2番目のエラーは、youreの文字列文字列の文字列を渡すが、youreのは、それはと対話するためのストリームの間違った種類を渡して、はい、それはこの種のWebTestServiceApp.localhost.Streamを望んでいます youreのあなたは、あなたが最初にそれを作るときストリームはWebTestServiceApp.localhost.Streamとしてそれを宣言明示的にしようと使用した場合、そのように、この種の System.IO.Stream

を与えてyoureのは、ストリームとあなたの右の種類を渡します問題は止まるはずです!

あなたが見る2種類のストリーム、1つはWebアプリケーション用、もう1つはデスクトップアプリケーション用です。

関連する問題