1

[WebMethod] Sendemail があります。これは正常に動作しますが、添付ファイルを送信するためにアップグレードする必要があります。ファイルアップロードを使用しています。これが私のメソッド Call です。

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

私の Call ステートメントは青で下線が引かれ、与えられた 2 つのエラーは次のようになります。

* 1) * 'WebTestServiceApp.localhost.Service1.Sendemail(string, string, string, string, WebTestServiceApp.localhost.Stream)' に一致する最適なオーバーロードされたメソッドには、いくつかの無効な引数があります

* 2) *引数 5: 'System.IO.Stream' から 'WebTestServiceApp.localhost.Stream' に変換できません

FileUpload1.PostedFile.FileName は文字列として渡されます FileUpload1.FileContent はストリームとして渡されます

これは私の [WebMethod] です。これで、私が見ることができるすべてのものを見ることができます。間違ったことを見つけることはできません。しかし、FileUpload1.FileContent をストリームとして渡す必要があるかどうかはわかりません。

[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("shaunmossop@mweb.co.za");
        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" ;

    }
}
4

1 に答える 1

0

2番目のエラーは頭に釘を打ちます。はい、文字列文字列文字列を渡しますが、対話するために間違ったタイプのストリームを渡します。この種類のWebTestServiceApp.localhost.Streamyoureがこの種類のシステムを提供する必要があります。 IO.Stream

ストリームを使用するときは、最初に作成するときにWebTestServiceApp.localhost.Streamとして明示的に宣言してみてください。そうすれば、適切なタイプのストリームを渡すことができ、問題は停止します。

表示されるストリームには2つのタイプがあります。1つはWebアプリに使用され、もう1つはデスクトップアプリに使用されます。

于 2012-07-19T14:10:10.260 に答える