我覺得懂得編寫發送郵件客服端豐常重要.這可以把它嵌入到你的軟件里加強與用戶的溝通與可以收集程運行的錯誤信息.以與我編寫一小的發送郵件客服端來與在家交流.
程序如下:
接下來,我來說一下我開發的過程與體會:
創建發送郵件客服端步驟:
1.創建Smtp服務器.
2.創建發件人,與收件人郵箱地址.
3.創建發送信息.
4.建件發送附件.
1.Smtp服務器,可用本地的也可以用其它的可用有Smtp服務器.如。smtp.126.com;smtp163.com.
需要注意的時:
(1)如果用本的的,本地要裝Smtp用服也就是系統組件,默認沒有安裝。
(2)如果用郵件服務商的,你要有其上面的帳號與密碼,即你要申請個郵箱,做為的身份認證。
 (3)smtp類初始化時只能用ip而不能用用務器名稱。因為我個人覺得,一般提供郵件服務都有好幾臺服務器。你在CMD 命令行里,ping smtp.126.com,在不同時候返回不同的IP。這個問題找了很久才發覺。所在在程序里要用先得到,Smtp服務器的IP列表,然后用PING 命令判斷那個可用。然后再用此IP來初始化Smtp服務類。
              取得SMTP服務器列表.
  http://xuanfeng.VEVb.com/archive/2006/05/15/400158.html(此連接是有我一編寫的一個取得網絡信息的解決方案可以查找服務器的IP地址的列表.)
              IPAddress[] IpAddress = Dns.GetHostEntry(ServerName).AddressList;
                Ping ping = new Ping();
                PingReply pingReply = null;
                //取得smt服務器可用的IP
                foreach (IPAddress IP in IpAddress)
                {
                    pingReply = ping.Send(IP);
                    if (pingReply.Status == IPStatus.Success)
                    {
                        ip = IP.ToString();
                        break;
}
}
SmtpClient_my = new SmtpClient(ip, Port);
2.創建發件人,與收件人郵箱地址.
MailAddress_from = new MailAddress(Tb_Email_from.Text, Tb_PRint.Text);
MailAddress_to = new MailAddress(Tb_Email_to.Text);
3.創建發送信息
 MailMessage_my = new MailMessage();
MailMessage_my.Subject = Tb_Content.Text;
                MailMessage_my.ReplyTo = MailAddress_from;
                MailMessage_my.Sender = MailAddress_from;
                MailMessage_my.From = MailAddress_from;
                MailMessage_my.To.Add(MailAddress_to);
4.建件發送附件.
Attachment_my = new Attachment(path, MediaTypeNames.application.Octet);
注意要控制附件的大小,因為很多郵件服務商附件大小都是有限件的。
 FileStream FileStream_my = new FileStream(path, FileMode.Open);
                string name = FileStream_my.Name;
                int size = (int)(FileStream_my.Length / 1024);
                //控制文件大小不大于10M
                if (size > 10240)
                {
                    MessageBox.Show("文件長度不能大于10M!你選擇的文件大小為{0}", size.ToString());
                    return;
                }
FileStream_my.Close();
5。發送后事件處理。
  創建事件
 SmtpClient_my.SendCompleted += new SendCompletedEventHandler(SmtpClient_my_SendCompleted);
 事件處理函數。
void SmtpClient_my_SendCompleted(object sender, AsyncCompletedEventArgs e)
        {
            if (e.Cancelled)
            { MessageBox.Show("發送已取消!"); }
            if (e.Error != null)
            {
MessageBox.Show(e.UserState.ToString() + "發送錯誤:" + e.Error.Message, "發送錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                MessageBox.Show("郵件成功發出!", "恭喜!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        } 
        #endre
結束.
出處:http://xuanfeng.VEVb.com/archive/2006/05/15/400156.html
新聞熱點
疑難解答