13590--北极燕鸥


   博采众长,信誉卓著
posts - 39, comments - 100, trackbacks - 3, articles - 8

通过System.Web.Mail程序发邮件

Posted on 2006-05-25 14:29 北极燕鸥 阅读(1581) 评论(17)  编辑 收藏 网摘 所属分类: C#编程

  在.net 1.1里面,如何用程序控制来发送电子邮件。比如,网站用户注册成功后,给注册用户自动发一封邮件,提示用户的注册信息。再则,有时候需要每天定时的把一个报表发给固定的几个人。综合起来需要解决如下的几个问题:
  1、SMTP服务器身份认证。
  2、收件人为多人时,怎么发送。
  3、发送邮件附件。

实现程序如下:

  为了使用System.Web.Mail,在名字空间里引用:
  using System.Web.Mail;

  定义一个发送邮件的过程

        /// <summary>
        
/// 发送电子邮件邮件
        
/// </summary>
        
/// <param name="to">接收电子邮件地址</param>
        
/// <param name="subject">邮件主题</param>
        
/// <param name="body">邮件正文</param>
        
/// <param name="mailatta">附件</param>

        public void SendMail(string to,string subject,string body,MailAttachment mailatta)
        
{    

            MailMessage m_Mail 
= new MailMessage();
            
//定义SMTP服务器的名称 
            SmtpMail.SmtpServer = "mail.13590.com";

            
//定义SMTP邮件服务器需要身份认证
            m_Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate""1");
            
//认证的用户名
            m_Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername""username");
            
//认证密码
           m_Mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword","password");

            
//定义邮件的发送地址 
            m_Mail.From="\"秋雨\"<username@13590.com>";            

            
//定义邮件的接收地址 
            m_Mail.To = to.ToString();

            
//定义邮件的暗送地址 
             m_Mail.Bcc="bcc@13590.com";
            
//定义邮件的抄送地址 
             m_Mail.Cc = "cc@13590.com";
            
//定义邮件的主题
            m_Mail.Subject = subject;
            
//定义邮件的主体 
            m_Mail.Body = body;
            
//'邮件以 HTML的格式发送 
            m_Mail.BodyFormat = MailFormat.Text;
            
//定义邮件的有限级,在此设定为高
            m_Mail.Priority = MailPriority.High;
            
//  给发送的邮件附加上一个附件 
            if (mailatta!=null)
            
{
                m_Mail.Attachments.Add(mailatta);
            }

            
try 
            
{
                SmtpMail.Send(m_Mail);
            }

            
catch
            
{
                
//邮件发送有错
                Memo1.Text=Memo1.Text + subject;                    
            }
            
        }

注意邮件的地址 
    "\"秋雨\"<username@13590.com>";
    前面是显示的名称,后面是真实的Email地址 ,如果收件人地址为多人,以“;” 隔开,例如:
   "秋雨"<username@13590.com>;"管理员"<sys@13590.com>          注意使用转义字符。

我们使用程序来调用


        
private void button_Click(object sender, System.EventArgs e)
        
{
        
            
string MailAddr="\"秋雨\"<username@13590.com>;\"管理员\"<sys@13590.com> ";
            
string Subject="请查收统计报表";
            
string MailBody="Test";
            
string PathMailAtta=@"C:\统计报表.xls";

            MailAttachment mailatta;
            
try
            
{
                mailatta
= new MailAttachment(PathMailAtta);
    
            }

            
catch
            
{
                Memo1.Text
=Memo1.Text+PathMailAtta+"有异常,检查是否打开";
                
return;                    
            }

            SendMail(MailAddr,Subject,MailBody,mailatta);
        }

以上程序在VS.Net2003,Windows 2003(SP1)平台下测试通过。

Feedback

#1楼   回复  引用    

2006-06-27 22:53 by ZOE[未注册用户]
请问还需要配置webconfig文件吗?为什么我总是提示我与服务器连接不成功呢?

#2楼[楼主]   回复  引用  查看    

2006-06-28 09:38 by 秋雨      
不需要,请确认你的SMTP服务器地址、用户名和密码。

#3楼   回复  引用    

2006-07-04 20:55 by CrazyLong[未注册用户]
我按照你的做了后,为什么提示Memo和SendGroupMail没定义呢?我要怎么定义呢?我是菜鸟,请指教!

#4楼[楼主]   回复  引用  查看    

2006-07-05 09:07 by 秋雨      
memo就是一个textbox控件,你可以把他删除

#5楼   回复  引用    

2006-07-05 16:14 by CrazyLong[未注册用户]
这段代码不需要数据库吗?那SendGroupMail是在哪里定义的呀?

#6楼[楼主]   回复  引用  查看    

2006-07-05 16:31 by 秋雨      
改为SendMail

#7楼   回复  引用    

2006-07-05 20:12 by CrazyLong[未注册用户]
方法和字段有什么区别呀?
系统提示SendMail表示“字段”,此处应表示为方法。我的排错能力很差呀。请多指教。其中我把附件形式在主页和数据库链接中注释掉了。

#8楼   回复  引用  查看    

2006-07-06 14:10 by anchky      
哈哈,谢谢,帮助不小!

#9楼   回复  引用    

2006-07-15 11:41 by crazylong[未注册用户]
已经成功。。。多谢

#10楼   回复  引用    

2007-02-02 09:00 by blue[未注册用户]
@秋雨
SMTP服务器、用户名和密码都正确 ,可是还是连接不上服务器,怎么办。

#11楼   回复  引用    

2007-02-05 20:37 by xxxx[未注册用户]
m_Mail.Fields.Add

这个是什么意思呢?

("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");

#12楼[楼主]   回复  引用  查看    

2007-02-07 11:24 by 秋雨      
@blue

能不能把写的代码传过来看看啊

#13楼[楼主]   回复  引用  查看    

2007-02-07 11:25 by 秋雨      
@xxxx

意思是SMTP服务器需要身份认证

#14楼   回复  引用    

2007-05-13 09:52 by looklike[未注册用户]
用JAVA语言怎么实现呢?

#15楼   回复  引用    

2007-12-05 09:54 by leo_YXC[未注册用户]
ASP的也能行吗?

#16楼[楼主]   回复  引用  查看    

2007-12-07 09:19 by 北极燕鸥      
ASP不行,ASP最好用jmail来发邮件
出售蓝奇高级验证码识别引擎,可准确识别新浪动网淘宝CSDN等多种复杂验证码。

输出为一个标准DLL,可供VB,VC,Delphi,C#.NET,VB.NET,模拟精灵,按键精灵等多平台调用,调用方法简单,几行代码即可完成。独具特色的边缘检测字符分离、旋转倾斜纠正和通用字符匹配算法(无论字体和大小), 使得该引擎对于像新浪、动网、淘宝、CSDN等多种验证码均有不错的识别率,是一款效果较为理想的验证码识别引擎。附详细的调用实例和代码注释等相关技术文档。

官方网站 - http://***/yzm_advocr
识别效果怎么样一试就知道 - DEMO下载 http://***/yzm_advocr/advocr.rar



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 408956 UGMQgo3X1UU=



相关文章:

相关链接: