各位高手,我想问一下,代码和smtp邮箱设置没有错误的情况下,使用smtpmail发送邮件失败究竟是什么原因呢?我上网查了一下,有人说是虚拟空间的SMTP虚拟服务器没有启用,是这样吗?谢谢。

解决方案 »

  1.   

    我写过smtp的代码!刚开始的时候可以用但是最近不能用了!你试试吧!
    http://download.csdn.net/source/2143915我已经把几分设为了0了!
      

  2.   

    你这个我之前试过了,这个是.net1.1版本的,现在已经不建议用了。不过还是谢谢你了。
    我的smtp代码应该是没有错的,只是想知道是不是SMTP虚拟服务器停用或没有配置好的问题。如果是,要求服务商改他的配置我想不怎么可能了,看看有没有其他解决方法。
      

  3.   

    首先确认SMTP的邮件服务器是否开启,是否杀毒软件禁止了。如果用163之类外网的邮件服务器,确认SMTP的用户名和密码正确。最好能抛出错误代码。贴出来才好分析具体原因。
      

  4.   

    try
                {
                    SiteInfo site = new SiteInfo();
                    site.Load();
                    MailMessage mail = new MailMessage();
                    mail.From = new MailAddress(txtEmail.Text, site.Name);
                    mail.To.Add(mail.From);
                    mail.Subject = "Test mail from" + site.Name;
                    mail.Body = "连接成功";
                    SmtpClient smtp = new SmtpClient(txtSmtpServer.Text);
                    smtp.Credentials = new System.Net.NetworkCredential(txtSmtpUsername.Text, txtSmtpPassword.Text);
                    smtp.EnableSsl = cbEnableSsl.Checked;
                    smtp.Port = int.Parse(txtSmtpServerPort.Text, CultureInfo.InvariantCulture);
                    smtp.Send(mail);
                    lbSmtpStatus.Text = "连接成功。";
                    lbSmtpStatus.Style.Add(HtmlTextWriterStyle.Color, "green");
                }
                catch
                {
                    lbSmtpStatus.Text = "连接失败。";
                    lbSmtpStatus.Style.Add(HtmlTextWriterStyle.Color, "red");
                }这段代码在其他服务商是可以运行的,在商务中国的服务器上就用不了,用的都是相同的邮箱,smtp用户名和密码没有错。而SMTP的邮件服务器是否开启就是不确定,问商务中国的技术人员他们看来好像一知半解。郁闷
      

  5.   

    你所用过的邮箱有没有smtp服务的!用有smtp服务的邮箱不然不行!
      

  6.   

    之前的邮箱都有smtp服务,都可以运行。我测试了,在其他服务商的空间上都可以用,相同的代码和邮箱,就是不同的虚拟空间上运行。大部分都可以运行,就是新申请的空间运行不了。
      

  7.   

    //一:用自己的服务器作为邮件服务器时:
    //如出现:邮箱不可用。 服务器响应为: 5.7.1 Unable to relay for ***@gmail.com
    //解决办法如下:在IIS中,右击“默认SMTP虚拟服务器”,选择“属性”,切换到“访问”页,点击“中继”按钮,在弹出框中选择“仅以下列表除外”,确定。
    //二:用其它的邮件服务器发送,经测试大多数免费邮箱都不提供SMTP服务,用qq邮箱的就可以,方法:进入qq邮箱-->设置-->帐户-->开通POP3/IMAP/SMTP服务,即可用smtp.qq.com作为邮件服务器了,可用它来发送邮件using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    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.Mail;public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }    public void SendSMTPEMail(string strSmtpServer, string strFrom, string strFromPass, string strto, string strSubject, string strBody)
        {
            System.Net.Mail.SmtpClient client = new SmtpClient(strSmtpServer);
            client.UseDefaultCredentials = false;
            client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass);
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            System.Net.Mail.MailMessage message = new MailMessage(strFrom, strto, strSubject, strBody);
            message.BodyEncoding = System.Text.Encoding.UTF8;
            message.IsBodyHtml = true;
            client.Send(message);
        }
        //第一个参数是邮箱服务器
        //第二个参数发件人的帐号
        //第三个参数发件人密码
        //第四个参数收件人帐号
        //第五个参数主题
        //第六个参数内容.
        protected void Button1_Click(object sender, EventArgs e)
        {//发送邮件
            try
            {
                //SendSMTPEMail("nz.oicp.net", "[email protected]", "123", "[email protected]", "123", "用asp.net发送邮件,用自己的邮件服务器,测试成功");
                SendSMTPEMail("smtp.qq.com", "[email protected]", "123xxxxxxx", "[email protected]", "123", "用asp.net发送邮件,用qq的smtp.qq.com服务器,测试成功");        }
            catch (Exception er)
            {
                Label1.Text = er.Message;
            }
        }
    }