none
有關無法透過Net.Mail發信的問題 RRS feed

  • 問題

  • 請問以下程式在建置都OK,也確認過MAIL SERVER是OK的,但是就是沒辦法收到信件,是我程式哪裡有問題嗎?

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.Net.Mail;
    using System.Net;
    
    namespace WinFromDriveInfo
    {
        class Program
        {
            static void Main(string[] args)
            {
                decimal diskFreeSpace;
                string deiveName;
                DriveInfo[] allDrives = DriveInfo.GetDrives();
                foreach (DriveInfo d in allDrives)
                {
                    if (d.DriveType.ToString() == "Fixed")
                    {
                        if (d.IsReady == true)
                        {
                            diskFreeSpace = Math.Round((decimal)d.TotalFreeSpace / d.TotalSize * 100, 2);
                            deiveName = d.Name;
                            Console.WriteLine(diskFreeSpace);
                            if (diskFreeSpace > 80)
                            {
                                SendMailtoPing(deiveName);
                            }
                            //Console.WriteLine("Drive {0}", d.Name);
                            //Console.WriteLine("  File type: {0}", d.DriveType);
                            //Console.WriteLine("  Volume label: {0}", d.VolumeLabel);
                            //Console.WriteLine("  File system: {0}", d.DriveFormat);
                            //Console.WriteLine("  Available space to current user:{0, 15} bytes", d.AvailableFreeSpace);
                            //Console.WriteLine("  Total available space:          {0, 15} bytes", d.TotalFreeSpace);
                            //Console.WriteLine("  Total size of drive:            {0, 15} bytes ", d.TotalSize);
                        }
                    }
                }
            }
            
            public static void SendMailtoPing(string ip)
            {
                System.Net.Mail.MailMessage msgPing = new System.Net.Mail.MailMessage();
                msgPing.To.Add("test@www.com.tw");
                msgPing.From = new MailAddress("test@www.com.tw", "FTP機器人", System.Text.Encoding.UTF8);
                msgPing.Subject = "[警告]FTP主機 " + ip + " 連線異常";
                msgPing.SubjectEncoding = System.Text.Encoding.UTF8;
                msgPing.Body = "[警告]FTP主機 " + ip + " 連線異常,請盡速處理以免影響檔案傳送。";
                msgPing.BodyEncoding = System.Text.Encoding.UTF8;
                msgPing.IsBodyHtml = false;
                msgPing.Priority = MailPriority.High;
                SmtpClient client = new SmtpClient();
                client.Host = "webmail.aaa.com.tw";
                client.Port = 25;
                object userState = msgPing;
                try
                {
                    client.SendAsync(msgPing, userState);
                }
                catch (System.Net.Mail.SmtpException ex)
                {
                    return;
                }
            }
    
            
        }
    }


    • 已編輯 小苦工 2012年8月9日 上午 08:47
    2012年8月9日 上午 08:14

解答

所有回覆

  •   catch (System.Net.Mail.SmtpException ex)
                {
                    return;
                }

    發生例外你就直接 return , 這樣你有辦法確定是不是有例外發生過嗎 ?


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2012年8月9日 上午 08:36
    版主
  • SORRY 我有試過如下的但是也是沒有出現錯誤訊息~~

    catch (System.Net.Mail.SmtpException ex)
                {
                    Console.WriteLine(ex);
                    //return;
                }

    2012年8月9日 上午 08:48
  • 你有用 SmtpClient.SendCompleted 事件 檢查一下是否有完成嗎 ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2012年8月9日 上午 08:54
    版主
  • 信寄出去但沒有收到,除了程式的問題外,像信箱給錯,中轉伺服器沒寄,或是被 SMTP Server queue 住的狀況,都有可能讓你收不到信...

    學習不是查個 Google 套個書上的範例就算了,而是去熟悉了解每個程式碼背後的意義,否則就算學個幾百年,它也不會是你的。
    =================================
    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/studyazure

    2012年8月9日 上午 09:21
    版主
  • 你 .Net 是用哪一版的?

    因為你寄件者為中文,在 .Net 2.0 是已知的問題:

    [VBNET] 繞路解決 MailMessage 在 Header 亂編碼的 bug


    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    2012年8月9日 下午 01:03