none
C# attachments功能只能附圖片檔案問題? RRS feed

  • 問題

  • 我寫了e mail功能的程式,但是在附檔時卻只能附圖片檔,附音樂檔或是TXT檔等,都會跳到例外處理(電子郵件傳送失敗)。

    但我不知道問題在哪。

            private void btnSend_Click(object sender, EventArgs e)
            {
                try
                {
                    MailMessage sendMail1 = new MailMessage();
                    sendMail1.From = new MailAddress(Host.Text);
                    sendMail1.To.Add(new MailAddress(txtTo.Text));
                    sendMail1.Subject = txtSubject.Text;
                    sendMail1.Body = txtBody.Text;
                    if (radText.Checked)
                    {
                        sendMail1.IsBodyHtml = false;
                    }
                    else if (radHTML.Checked)
                    {
                        sendMail1.IsBodyHtml = true;
                    }

                    if (lblFile.Text != "無上傳檔案")
                    {
                        Attachment sendFile1 = new Attachment(lblFile.Text);
                        sendMail1.Attachments.Add(sendFile1);
                    }
                    SmtpClient smtpServer = new SmtpClient();
                    smtpServer.Host = "ms21.hinet.net";
                    smtpServer.Send(sendMail1);
                    MessageBox.Show("電子郵件傳送成功!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("電子郵件傳送失敗");
                }
            }

    謝謝

    2011年10月11日 上午 09:38

解答

  • 您好

    請把你的

                catch (Exception ex)
                {
                    MessageBox.Show("電子郵件傳送失敗");
                }

    改成

                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);

                }

    看一下錯誤訊息是什麼

    附註 : 你的程式好像都沒看到 smtp 服務的登入使用者與密碼

                try
                {
                    MailMessage sendMail1 = new MailMessage();
                    sendMail1.From = new MailAddress("xxx@hotmail.com");
                    sendMail1.To.Add(new MailAddress("xxx@hotmail.com"));
                    sendMail1.Subject = "測試";
                    sendMail1.Body = "測試";
                    Attachment sendFile1 = new Attachment("d:\\test.txt");
                    sendMail1.Attachments.Add(sendFile1);
                    SmtpClient smtpServer = new SmtpClient();
                    smtpServer.Host = "smtp.live.com";
                    NetworkCredential info = new NetworkCredential("xxx@hotmail.com", "密碼");
                    smtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
                    smtpServer.Credentials = info;
                    smtpServer.Port = 587;
                    smtpServer.EnableSsl = true;

                    smtpServer.Send(sendMail1);
                    MessageBox.Show("電子郵件傳送成功!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }


    歡迎參觀我的Blog.NET菜鳥自救會

    2011年10月11日 上午 11:55
    版主

所有回覆

  • 您好

    請把你的

                catch (Exception ex)
                {
                    MessageBox.Show("電子郵件傳送失敗");
                }

    改成

                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);

                }

    看一下錯誤訊息是什麼

    附註 : 你的程式好像都沒看到 smtp 服務的登入使用者與密碼

                try
                {
                    MailMessage sendMail1 = new MailMessage();
                    sendMail1.From = new MailAddress("xxx@hotmail.com");
                    sendMail1.To.Add(new MailAddress("xxx@hotmail.com"));
                    sendMail1.Subject = "測試";
                    sendMail1.Body = "測試";
                    Attachment sendFile1 = new Attachment("d:\\test.txt");
                    sendMail1.Attachments.Add(sendFile1);
                    SmtpClient smtpServer = new SmtpClient();
                    smtpServer.Host = "smtp.live.com";
                    NetworkCredential info = new NetworkCredential("xxx@hotmail.com", "密碼");
                    smtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
                    smtpServer.Credentials = info;
                    smtpServer.Port = 587;
                    smtpServer.EnableSsl = true;

                    smtpServer.Send(sendMail1);
                    MessageBox.Show("電子郵件傳送成功!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }


    歡迎參觀我的Blog.NET菜鳥自救會

    2011年10月11日 上午 11:55
    版主
  • [VBNET] 在 HTML 郵件內加入樣式庫
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年10月11日 下午 12:38
  • 感謝,已經解決我的問題了!!

    看著書上寫的,但不知為何書上沒提到NetworkCredential,也不知為什麼沒有設定密碼還是能透過我輸入的帳號寄信。

    Host的內容是要輸入使用信箱的smpt吧? 但是Port不知道要設定多少?

    2011年10月11日 下午 03:36
  • 在 HiNet 網域,使用 HiNet SMTP Server 不須認證。

    不在 HiNet 網域,使用 HiNet SMTP Server 不被接受。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年10月11日 下午 03:41