none
您好,我使用asp.net发送邮件很慢是怎么回事? RRS feed

  • 问题

  •          

     SmtpSection cfg = NetSectionGroup.GetSectionGroup(WebConfigurationManager.OpenWebConfiguration("~/web.config")).MailSettings.Smtp;//从web.config配置文件加载smtp信息
                        System.Net.Mail.MailMessage email1 = new System.Net.Mail.MailMessage(cfg.From, Page.User.Identity.Name);
                        email1.IsBodyHtml = true;
                        email1.Body = bodyContent;
                        email1.Subject = title;
                        email1.BodyEncoding = System.Text.Encoding.UTF8;
                        email1.SubjectEncoding = System.Text.Encoding.UTF8;
                        email1.Priority = System.Net.Mail.MailPriority.High;
                        System.Net.Mail.SmtpClient stmp = new SmtpClient(cfg.Network.Host);
                        stmp.UseDefaultCredentials = true;
                        stmp.EnableSsl = true;
                        stmp.DeliveryMethod = SmtpDeliveryMethod.Network;
                        stmp.Credentials = new System.Net.NetworkCredential(cfg.Network.UserName, cfg.Network.Password);
                        stmp.Send(email1);
    大概的代码是这样的 很多变量是我自己设置的就不全部写出来了。

    这样发送email 页面花费要4秒到5秒的时间,我使用的是谷歌的smtp服务器 web.config配置大概如下

      <mailSettings>
          <smtp from="mymail@gmail.com">
            <network host="smtp.gmail.com" port="25" userName="mymail@gmail.com" password="#####"/>
          </smtp>
        </mailSettings>

    我使用异步方法SendAsync还是一样  请问要怎么解决呢,

    我使用php发送,一秒不到就发送好了

    2012年8月31日 7:27

答案

  • 你好,

    试下下面代码:

     SmtpClient client = new SmtpClient();
    
            client.Host = "smtp.live.com";
            client.Port = 25;
    
            client.Credentials = new NetworkCredential(
                @"email_account",
                @"email_password");
    
    
            client.EnableSsl = true;
    
            // create message
            MailMessage message = new MailMessage("eamil", "email");
            message.Body = "Hello email.<b>This is bold</b>";
            message.BodyEncoding = System.Text.Encoding.UTF8;
            message.IsBodyHtml = true;
            message.Subject = "subject";
            message.SubjectEncoding = System.Text.Encoding.UTF8;
    
    
            // send message
            try
            {
                client.Send(message);
    
    
            }
            catch (SmtpException ex)
            {
    
                Response.Write(ex.Message);
            }
            finally
            {
                // Clean up.
                message.Dispose();
            }


    Please mark the replies as answers if they help or unmark if not.
    If you have any feedback about my replies, please contact msdnmg@microsoft.com
    Microsoft One Code Framework

    2012年9月3日 7:23
    版主

全部回复

  • 你好,

    试下下面代码:

     SmtpClient client = new SmtpClient();
    
            client.Host = "smtp.live.com";
            client.Port = 25;
    
            client.Credentials = new NetworkCredential(
                @"email_account",
                @"email_password");
    
    
            client.EnableSsl = true;
    
            // create message
            MailMessage message = new MailMessage("eamil", "email");
            message.Body = "Hello email.<b>This is bold</b>";
            message.BodyEncoding = System.Text.Encoding.UTF8;
            message.IsBodyHtml = true;
            message.Subject = "subject";
            message.SubjectEncoding = System.Text.Encoding.UTF8;
    
    
            // send message
            try
            {
                client.Send(message);
    
    
            }
            catch (SmtpException ex)
            {
    
                Response.Write(ex.Message);
            }
            finally
            {
                // Clean up.
                message.Dispose();
            }


    Please mark the replies as answers if they help or unmark if not.
    If you have any feedback about my replies, please contact msdnmg@microsoft.com
    Microsoft One Code Framework

    2012年9月3日 7:23
    版主
  • 我已经参考你的方法进行改了,而且我还输出当前时间了 这样

     try
            {

                   这里用代码输出当前时间   时间1

                   client.Send(message);
                    这里用代码输出当前时间  时间2

            }

    时间1和时间2 差了5秒以上, 是不是因为。net 调用谷歌的就很慢 还是什么原因。谢谢

    2012年9月4日 8:08
  • 你好,

    这里就是邮件发送所花费的时间,代码没办法去优化。


    Please mark the replies as answers if they help or unmark if not.
    If you have any feedback about my replies, please contact msdnmg@microsoft.com
    Microsoft One Code Framework

    2012年9月4日 8:11
    版主