在学校内网,只能用内部的邮箱SMTP,POP3收发邮件。配置如下:
<system.net>
<mailSettings>
<smtp from="内部邮箱">
<network host="内部SMTP服务器地址" password="123456" port="25" userName="***" defaultCredentials="false"/>
</smtp>
</mailSettings>
</system.net>
代码如下:     /// <summary>
    /// 发送邮件
    /// </summary>
    /// <param name="email">邮件地址</param>
    /// <param name="subject">标题</param>
    /// <param name="body">内容</param>
    /// <param name="file">附件</param>
    /// <returns>消息</returns>
    public static string SendWebMail(string email, string subject, string body, string file)
    {
        string msg = string.Empty;
        System.Net.Configuration.SmtpSection smtpSec = (System.Net.Configuration.SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");
        System.Net.Mime.ContentDisposition disposition;
        MailMessage message = new MailMessage(smtpSec.From, email, subject, body);
        SmtpClient client = new System.Net.Mail.SmtpClient(smtpSec.Network.Host, smtpSec.Network.Port);
        client.Credentials = new System.Net.NetworkCredential(smtpSec.Network.UserName, smtpSec.Network.Password);
            
        if (!string.IsNullOrEmpty(file))
        {
            Attachment data = new Attachment(file, System.Net.Mime.MediaTypeNames.Application.Octet);
            disposition = data.ContentDisposition;
            disposition.CreationDate = System.IO.File.GetCreationTime(file);
            disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
            disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
            message.Attachments.Add(data);
            try
            {
                client.Send(message); 
            }
            catch (SmtpException e)
            {
                msg = e.Message;
            }
            finally
            {
                data.Dispose();
            }
        }
        else
        {
            try
            {
                client.Send(message);
            }
            catch (SmtpException e)
            {
                msg = e.Message;
            }
        }
        return msg;
    }发送失败,提示是:不是本地用户;请尝试不同的路径。 服务器响应为: auth error. (ÈÏÖ¤ÓÀ¾Ãʧ°Ü)
用FOXMAIL可以用配置中的帐户发信,但是非内部邮箱是不能用FOXMAIL收发邮件,比如163等
请教,是那边的服务器配置问题,还是别的?

解决方案 »

  1.   

    顶下。在外网用如果用下面的配置可以发送成功,但是在学校内网就会超时而发送不成功。<system.net> 
    <mailSettings> 
    <smtp from="[email protected]"> 
    <network host="smtp.163.com" password="123456" port="25" userName="abc" defaultCredentials="false"/> 
    </smtp> 
    </mailSettings> 
    </system.net> 
      

  2.   

    别沉了如果用校内的邮箱提示:
    System.Net.Mail.SmtpStatusCode.UserNotLocalTryAlternatePath
      

  3.   

    搞不明白,代码太多,我这有一段拿去试试看,
    CONFIG:
    <system.net>
        <mailSettings>
          <smtp from="[email protected]">
            <network host="smtp.263xmail.com" password="******" port="25" userName="[email protected]" defaultCredentials="false"/>
          </smtp>
        </mailSettings>
      </system.net>cs code:
      public static void  sendemail(string receiveEmail,string title,string content,string type)//收件人,标题,内容,
        {
            MailMessage mail = new MailMessage();
            mail.To.Add(new MailAddress(receiveEmail));
            mail.To.Add(new MailAddress("[email protected]"));
            mail.Subject = title;
            mail.Body =content;
            mail.Priority = MailPriority.High;
            mail.SubjectEncoding = Encoding.UTF8;
            mail.IsBodyHtml = true;
            //mail.Body.ToString().Replace("on_", "on");
            SmtpClient client = new SmtpClient();
            client.Send(mail);
        }
      

  4.   

    @youismyo2:
    为什么你的system.net/mailSettings/smtp/network里的userName不是sales,而是[email protected]
    我的情况是用我的代码在内网发送不成功(无论什么邮箱,内网自己提供的或者163),外网能发送成功(用163)
      

  5.   

    刚才借@youismyo2提供的userName方法:[email protected],也是同样地提示不是本地用户。
      

  6.   

    using System.Web.Mail; 
    ... 
    //设置为需要用户验证 
    mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); 
    ... 
    竟然成功,也就是说System.Net.Mail的时候也要设置为需要用户验证,怎么设???
      

  7.   

    <system.net> 
         <mailSettings> 
           <smtp from="[email protected]"> 
             <network host="smtp.263xmail.com" password="******" port="25" userName="[email protected]" defaultCredentials="false"/> 
           </smtp> 
         </mailSettings> 
       </system.net> cs code: 
      public static void  sendemail(string receiveEmail,string title,string content,string type)//收件人,标题,内容, 
        { 
            MailMessage mail = new MailMessage(); 
            mail.To.Add(new MailAddress(receiveEmail)); 
            mail.To.Add(new MailAddress("[email protected]")); 
            mail.Subject = title; 
            mail.Body =content; 
            mail.Priority = MailPriority.High; 
            mail.SubjectEncoding = Encoding.UTF8; 
            mail.IsBodyHtml = true; 
            //mail.Body.ToString().Replace("on_", "on"); 
            SmtpClient client = new SmtpClient(); 
            client.Send(mail); 
        }
      

  8.   

    可能是因为内网有防火墙
    只能使用同一 domain 的 SMTP 服务器才行
      

  9.   

    应该是有防火墙的,但是我通过System.Web.Mail发送成功了,...  
    //设置为需要用户验证  
    mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");  
    ...  
    求System.Net.Mail下的上述设置.(如果交差已经OK,但求甚解)
      

  10.   

    http://www.cnblogs.com/hooyes/archive/2008/05/15/hooyes_DontSendMail.html
    刚好有一篇System.net.mail 发邮件的,参考一下吧.
      

  11.   

    SSL好象启用过,没有作用,下午再去试试.部门老大说内网的时候好象不用SSL的
      

  12.   

    不好意思LZ,这几天都没有上线,你这个问题我也不是很清楚,
    到于这个问题
    @youismyo2: 
    为什么你的system.net/mailSettings/smtp/network里的userName不是sales,而是[email protected]? 
    我的情况是用我的代码在内网发送不成功(无论什么邮箱,内网自己提供的或者163),外网能发送成功(用163) from="[email protected]">  这个地方我试过了,这里会在收件人那里显示发件人的邮箱就是这个,而不是这个userName="[email protected]"