请问在winform里面怎样直接发送邮件?
我试过http://topic.csdn.net/t/20020807/12/928108.html这种方法,没有什么反应,有人成功的吗?

解决方案 »

  1.   

    现在一般都是用smtpClient
    参考:
    http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx不过你需要指定一个smtp server.
      

  2.   

    谢谢楼上的。我忘了说,我使用的是VS2003,里面根本就找不到using System.Net.Mail命名空间。请问还有没有其他的思路?谢谢!
      

  3.   

    2003你可以使用smtpmail。不过你依然需要一个smtpserver
    http://msdn.microsoft.com/en-us/library/system.web.mail.smtpmail.aspx
      

  4.   

    我觉得其实smtpmail和SmtpClient就是对CDO.Message的封装。
    有的时候出错的异常中会有CDO.Message的字样。
      

  5.   


     #region 發送郵件
            /// <summary>
            /// 發送郵件
            /// </summary>
            /// <param name="hostName">SMTP服務器地址</param>
            /// <param name="userName">用戶名</param>
            /// <param name="password">密碼</param>
            /// <param name="title">郵件標題</param>
            /// <param name="content">內容</param>
            /// <param name="from">發件人地址</param>
            /// <param name="to">收件人地址</param>
            /// <returns>是否成功</returns>
            private static bool SendMail(string hostName, string userName, string password, string title, string content, string from, string to)
            {
                SmtpClient smtp = new SmtpClient();
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.EnableSsl = true;
                smtp.Host = hostName;
                smtp.Credentials = new System.Net.NetworkCredential(userName, password);            MailMessage message = new MailMessage(from, to);
                message.Subject = title;
                message.Body = content;
                message.BodyEncoding = Encoding.UTF8;
                message.IsBodyHtml = true;
                message.Priority = MailPriority.High;            try
                {
                    smtp.Send(message);
                    return true;
                }
                catch
                {
                    return false;
                }
            }
            public static bool SendMail(string title, string content, string to)
            {
                return SendMail(mailHost, mailUserName, mailPassword, title, content, mailUrl, to);
            }
            #endregion--  Web.Config <!-- 郵件發送配置 -->
            <add key="MailHost" value="122728DC5B40A2ABF8951A4D700C1313"/>
            <add key="MailUserName" value="17C26FCE794860A1ED982DF24F98F0CA"/>
            <add key="MailPassword" value="63FB98EA280285721CF5D5D56184BAF0"/>
            <add key="MailUrl" value="17C26FCE794860A1E4B5124D481DD4CF0C71CA0EFD31E11AD50FCC820109F143"/>
      

  6.   

    非常谢谢楼上各位的热心和耐心。不过我想再强调一下我的问题“请问在winform里面怎样直接发送邮件? ”。楼上的都是在web中发送邮件。
      

  7.   

    我给你的连接里面的sample code可不是web 程序。是一个Console application.
    smtpmail和SmtpClient都可以再Winform中使用。
      

  8.   

    装个.net 2.0以上或者改用System.web.mail
      

  9.   

    谢谢findcaiyzh。我使用VS2003时没有找到“using System.Web.Mail;”命名空间,在VS2005中可以找到。但以前的系统是在VS2003中做的,只能在这个版本里面改进。
      

  10.   


    不好意思,看错了。你要添加引用System.Web
      

  11.   

    不好意思,不明白。没有using System.Web.Mail命名空间,就没有MailMessage类,所有的操作都没法做啊。
      

  12.   

    在项目的右键菜单中点击 Add Reference
    .net页下选择System.Web点击Ok
    这样你才可以using System.Web.Mail
      

  13.   


    我发的是一个通用的方法啊,WEBFORM和WINFORM都可以用的....
      

  14.   


    {
    MailMessage Message = new MailMessage();
            Message.From = "[email protected]";
    Message.To = "[email protected]";

    Message.Subject = "Kevin Email Subject";
    Message.Body = "Kevin Email Body";
    Message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); 
    Message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", @"XXX"); 
    Message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "XXX");
    try
    {
    SmtpMail.SmtpServer = "XXX.XXX.com.cn";
    SmtpMail.Send(Message);
    }
    catch(System.Web.HttpException ehttp)
    {
    Console.WriteLine("{0}", ehttp.Message);
    Console.WriteLine("Here is the full error message output");
    Console.Write("{0}", ehttp.ToString());
    }
    }
    catch(IndexOutOfRangeException)
    {
    Console.WriteLine("Send Mail error");
    } Console.ReadLine();尴尬结贴。感谢findcaiyzh,给分先。
     使用http://msdn.microsoft.com/en-us/library/system.web.mail.smtpmail.aspx 代码并不能完全解决问题,需要在中间添加3行验证身份的代码。使用163作服务器并不能发送成功,使用公司服务器才可以,为什么这样继续研究中......希望高手也可以继续指点。