请高手帮我看看这个邮件代码哪里有问题,为什么发不出邮件?如果高手有代码请发给我一下(我的E_MAIL:[email protected]).我来参加学习一下.致谢!前台代码:
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
        <br />
        <asp:TextBox ID="tbTag" runat="server"></asp:TextBox><br />
        <br />
        <asp:TextBox ID="tbAdv" runat="server" Height="72px" TextMode="MultiLine" Width="206px"></asp:TextBox><br />
        <br />
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="发送" />&nbsp;</div>
    </form>
</body>
</html>后台代码:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net;
using System.Net.Mail;
using System.Net.NetworkInformation;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        MailMessage mailMessage = new MailMessage();
        string strBody;        mailMessage.From = new MailAddress("[email protected]");
        mailMessage.To.Add("[email protected]");
        mailMessage.Subject = "mail.tontel.com.cn";        strBody = "<h2>" + 1 + "</h2><br>";
        strBody += "<h4>" + tbTag.Text + "</h4><br><hr><br>";
        strBody += "·" + tbAdv.Text;        sendMail(mailMessage);
    }    //SendMail
    private void sendMail(MailMessage mail)
    {
        SmtpClient smtpClient = new SmtpClient();
        smtpClient.EnableSsl = true;
        smtpClient.Host = "mail.tontel.com.cn";
        smtpClient.Port = 25;
        smtpClient.Credentials = new NetworkCredential("[email protected]", "29127463");
        try
        {
            smtpClient.Send(mail);
            Label1.Text = "ok";
        }
        catch
        {
            Label1.Text = "false";
        }
    }
}

解决方案 »

  1.   

     smtpClient.Credentials = new NetworkCredential("yaoshun", "29127463"); 
    改为这个试试,asp.net发送邮件,需要验证时,只能用Email地址@以前的帐号,不能用全Email地址.
    如果你的邮件一定要以整个email来做验证的话,只有建议用其他邮箱了,如sina等邮箱.
      

  2.   

    1. 
    smtpClient.Credentials = new NetworkCredential("[email protected]", "29127463"); 
    --------------------------------------
    對於郵箱而言,yaoshun是帳號,而不是[email protected].
    發送郵件之前,加一行代碼mailMessage.HtmlBody=strBody;
      

  3.   

    更正一下
    2. 
    發送郵件之前,加如下代碼:
    mailMessage.Body=strBody;
    mailMessage.IsBodyHtml=true;
      

  4.   

    两位老大:
        我按你们上面的说的方法修改了一下.但邮件还是发送不成功.高手再帮我看看,这个代码是什么问题.
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Net;
    using System.Net.Mail;
    using System.Net.NetworkInformation;
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {
            MailMessage mailMessage = new MailMessage();
            string strBody;        mailMessage.From = new MailAddress("[email protected]");
            mailMessage.To.Add("[email protected]");
            mailMessage.Subject = "mail.tontel.com.cn";        strBody = "<h2>" + 1 + "</h2><br>";
            strBody += "<h4>" + tbTag.Text + "</h4><br><hr><br>";
            strBody += "·" + tbAdv.Text;        mailMessage.Body = strBody;
            sendMail(mailMessage);
        }    //SendMail
        private void sendMail(MailMessage mail)
        {
            SmtpClient smtpClient = new SmtpClient();
            smtpClient.EnableSsl = true;
            smtpClient.Host = "mail.tontel.com.cn";
            smtpClient.Port = 25;
            smtpClient.Credentials = new NetworkCredential("yaoshun", "29127463");
            try
            {            
                smtpClient.Send(mail);
                Label1.Text = "ok";
            }
            catch
            {
                Label1.Text = "false";
            }
        }
    }
      

  5.   

    这句你加了吗?
    mailMessage.IsBodyHtml=true;
    我看不到哦````````````
      

  6.   

    异常详细信息: System.Net.Mail.SmtpException: 服务器不支持安全连接。源错误: 
    行 45:         try
    行 46:         {            
    行 47:             smtpClient.Send(mail);
    行 48:             Label1.Text = "ok";
    行 49:         }
     
    源文件: e:\ls\mail1\Default.aspx.cs    行: 47谢谢黑马王子
      

  7.   

    以下代码测试成功。需要SMTP支持,你的163帐号开通了SMTP功能
    using System;
    using System.Net;namespace mail {
    class app {
    static void Main()
    {
    System.Net.Mail.SmtpClient client = new SmtpClient("smtp.163.com");
    client.UseDefaultCredentials = false;
    client.Credentials = new System.Net.NetworkCredential("[email protected]", "密码");
    client.DeliveryMethod = SmtpDeliveryMethod.Network;

    System.Net.Mail.MailMessage message = new MailMessage("[email protected]","[email protected]", "test","<strong>test</strong>");
    message.BodyEncoding = System.Text.Encoding.Default;
    message.IsBodyHtml = true;
    client.Send(message);
    }
    }
    }
      

  8.   

    把你代碼中的smtpClient.EnableSsl = true; 這一句刪除就好了。
      

  9.   

    服務器不支持SSL,但你代碼中設置EnableSsl為true,所以出錯
      

  10.   

    ///   <summary> 
                    ///   发送邮件 
                    ///   </summary> 
                    ///   <param   name= "strSmtpServer "> smtp地址 </param> 
                    ///   <param   name= "UserName "> 用户名 </param> 
                    ///   <param   name= "Password "> 密码 </param> 
                    ///   <param   name= "strFrom "> 发信人地址 </param> 
                    ///   <param   name= "strto "> 收信人地址 </param> 
                    ///   <param   name= "strSubject "> 邮件标题 </param> 
                    ///   <param   name= "strBody "> 邮件正文 </param> 
                    public   static   void   SendMail(string   strSmtpServer,   string   UserName,   string   Password,   string   strFrom,   string   strto,   string   strSubject,   string   strBody,   string   strFileName) 
                    { 
                            //生成一个   使用SMTP发送邮件的客户端对象 
                            System.Net.Mail.SmtpClient   client   =   new   System.Net.Mail.SmtpClient(strSmtpServer);                         //表示以当前登录用户的默认凭据进行身份验证 
                            client.UseDefaultCredentials   =   true;                                   //包含用户名和密码 
                            client.Credentials   =   new   System.Net.NetworkCredential(UserName,   Password);                           //指定如何发送电子邮件。 
                              //Network                                             电子邮件通过网络发送到   SMTP   服务器。     
                              //PickupDirectoryFromIis               将电子邮件复制到挑选目录,然后通过本地   Internet   信息服务   (IIS)   传送。     
                              //SpecifiedPickupDirectory           将电子邮件复制到   SmtpClient.PickupDirectoryLocation   属性指定的目录,然后由外部应用程序传送。                             client.DeliveryMethod   =   System.Net.Mail.SmtpDeliveryMethod.Network;                         //建立邮件对象   
                            System.Net.Mail.MailMessage   message   =   new   System.Net.Mail.MailMessage(strFrom,   strto,   strSubject,strBody); 
                            
                            //定义邮件正文,主题的编码方式 
                            message.BodyEncoding   =   System.Text.Encoding.GetEncoding( "gb2312 "); 
                            message.SubjectEncoding   =   System.Text.Encoding.GetEncoding( "gb2312 "); 
                          
                            //获取或设置一个值,该值指示电子邮件正文是否为   HTML。   
                            message.IsBodyHtml   =   false; 
                            
                            //指定邮件优先级 
              
                            message.Priority   =   System.Net.Mail.MailPriority.Normal;                         //添加附件 
                            //System.Web.Mail.MailAttachment   mailAttachment=new   System.Web.Mail.MailAttachment(@ "f:/baihe.txt ");   
                            if   (strFileName   !=   " "   &&   strFileName   !=   null) 
                            { 
                                    Attachment   data   =   new   Attachment(strFileName); 
                                    message.Attachments.Add(data); 
                            } 
                        
                            
                            //发件人身份验证,否则163   发不了 
                            client.Credentials   =     new   System.Net.NetworkCredential(strFrom,   Password);                         //发送 
                            client.Send(message); 
                    } 
            }2.0版本的  你看看是不是你的防火墙之类给挡住了  
    今后建议楼主发帖前,先搜索csdn一下。你这样问题,一搜一大把 
    下面是1。1 的 #region 发送邮件        /// <summary>
            /// 发送邮件
            /// </summary>
            /// <param name="_UserName">用户名</param>
            /// <param name="_Mail">用户注册的电子邮件</param>
            /// <param name="_Pwd">用户登录密码</param>
            /// <returns>是否发送成功</returns>
            public static bool SendMail (string _UserName,string _Mail,string _Pwd)
            {
                string _adminMail = System.Configuration.ConfigurationSettings.AppSettings["AdminMail"].ToString();
                string _adminMailPwd = System.Configuration.ConfigurationSettings.AppSettings["AdminMailPwd"].ToString();
                string _adminMailSmtp = System.Configuration.ConfigurationSettings.AppSettings["AdminMailSMTP"].ToString();
                string _subject = System.Configuration.ConfigurationSettings.AppSettings["MailSubject"].ToString();
                string _body = System.Configuration.ConfigurationSettings.AppSettings["MailBody"].ToString();            MailMessage mailObj = new MailMessage();
                mailObj.To = _Mail;
                mailObj.From = _adminMail;
            
                mailObj.Subject = _subject;//"您在投资基金网的注册信息";
                mailObj.Body = _body.Replace("[UserName]",_UserName).Replace("[Pwd]",_Pwd).Replace("[Br]","<br/>").Replace("[Nbsp]","&nbsp;");//"尊敬的用户:<br/>&nbsp;&nbsp;&nbsp;&nbsp;您好,您的注册信息如下<br/>用户名:" + _UserName + " 密码:" + _Pwd;
            
                mailObj.BodyFormat = MailFormat.Html;
     
                mailObj.Priority = MailPriority.High;            SmtpMail.SmtpServer = _adminMailSmtp;
                //mailObj.Attachments.Add(new MailAttachment("c:\\swf\\000.bmp"));
                            //string[] adminName = _adminMail.Split('@');
                ///////////////////////////////////FrameWork1.1
                mailObj.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
                ////设置验证用户名 
                //mailObj.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", adminName[0].ToString());
                mailObj.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", _adminMail);
                ////设置验证密码 
                mailObj.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", _adminMailPwd);
                //////////////////////////////////////////////            SmtpMail.Send(mailObj);
                return true;
            }
            #endregion
    或者参见 http://www.luckyegg.cn 
      

  11.   

    我把smtpClient.EnableSsl = true删除了.但错误还在发生.错误如下:邮箱不可用。 服务器响应为: Local user only or Authentication mechanism 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Net.Mail.SmtpFailedRecipientException: 邮箱不可用。 服务器响应为: Local user only or Authentication mechanism源错误: 
    行 46:         try
    行 47:         {            
    行 48:             smtpClient.Send(mail);
    行 49:             Label1.Text = "ok";
    行 50:         }请高手帮忙解决,我需要你们指导。
     
      

  12.   

    服务器需要身份验证
    1.1  ///////////////////////////////////FrameWork1.1
                mailObj.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
                ////设置验证用户名 
                //mailObj.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", adminName[0].ToString());
                mailObj.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", _adminMail);
                ////设置验证密码 
                mailObj.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", _adminMailPwd);
                //////////////////////////////////////////////2.0 client.Credentials   =     new   System.Net.NetworkCredential(strFrom,   Password); 
      

  13.   

    参考下面的url,在.net1.X和.net2.0的版本:http://www.blueshop.com.tw/board/show.asp?subcde=BRD200609100158553X4&fumcde=
      

  14.   

    可惜是是VB.NET的代码.我现在需要C#版本的代码啊.
      

  15.   

    用这个转转(正确率99.8%):
    http://labs.developerfusion.co.uk/convert/vb-to-csharp.aspx
      

  16.   

    搞了一两天就一个Asp.net(C#)发送邮件的代码也没搞好.
    我在反思我自己,同时也在对CSDN进行反思了(为什么这个大个论坛就没有发一个能发邮件的代码呢?)
    ... ...
      

  17.   

    不要怨天尢人,在你上論壇發貼求助的同時就應該做好得不到完美解答的準備。不是你發貼,別人就有義務幫你。更何況幫你的人不少。談下你的主題,就代碼而言,其實發送郵件無非就這樣,到後來基本是OK的。但郵件發不出去的可能性很多,別光把目光局限在代碼上。
    我現在懷疑兩點:
    1. 確認郵箱確實在Mail Server上?
    2. 你斷定mail.tontel.com.cn這臺mail server沒把你屏蔽掉?你是否發郵件過多,人家把你屏蔽了?
      

  18.   

    兄弟,用1.1版的吧。
    呵呵。
    我有帖子 才发的。你去看看 上以后调试好的。2.0版的有问题。
     用web.mail这个 namespace。
    http://topic.csdn.net/u/20080321/09/91b4cf12-3ec1-4fd3-92ed-7c74375da80c.html
      

  19.   

    非常感谢各位高手、朋友的指点帮助,我用的就是junzhang4008 大侠的代码。我的技术太菜需要学习,但现在确实要解决掉这个问题:
    对路径“c:\windows\system32\inetsrv\tempFile”的访问被拒绝。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.UnauthorizedAccessException: 对路径“c:\windows\system32\inetsrv\tempFile”的访问被拒绝。 ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。 要将 ASP.NET 访问权限授予某个文件,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。源错误: 
    行 66:         if (strFileName != " " && strFileName != null)
    行 67:         {
    行 68:             Attachment data = new Attachment(strFileName);
    行 69:             message.Attachments.Add(data);
    行 70:         }
     源文件: e:\wwwroot\3CMarket\mail.aspx.cs    行: 68 
    请各位朋友再帮帮忙。
      

  20.   

    junzhang4008的代码好。
    参考
    http://topic.csdn.net/u/20080319/23/a6eb012e-bba8-45f7-b43b-a1d14a8e624d.html