C#利用CDOSYS组件发邮件的一些小结

建立 ASP.NET WEB项目。

None.gif using  System.Web.Mail;


首先看看利用Inter网上的SMTP服务器来发邮件,现在普遍是登陆SMTP需要验证的。这里我们使用的是网易的邮件服务器。

None.gif private   void  SendMailBySMTP()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif 
// 使用一个SMTP的服务器,并且通过验证
InBlock.gif
 MailMessage mailobj = new MailMessage();
InBlock.gif mailobj.From 
= "username@126.com";
InBlock.gif mailobj.To 
= "aim@eyou.com";
InBlock.gif mailobj.Subject 
= "测试";
InBlock.gif mailobj.BodyFormat 
= MailFormat.Text;
InBlock.gif mailobj.Body 
= "看到了么?";
InBlock.gif 
// 通过SMTP服务器验证
InBlock.gif
 mailobj.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate""1");
InBlock.gif mailobj.Fields.Add(
"http://schemas.microsoft.com/cdo/configuration/sendusername""username");
InBlock.gif mailobj.Fields.Add(
"http://schemas.microsoft.com/cdo/configuration/sendpassword""userpassword");
InBlock.gif SmtpMail.SmtpServer 
= "smtp.126.com";
InBlock.gif SmtpMail.Send(mailobj);
ExpandedBlockEnd.gif}

 

注意:如果使用需要验证的SMTP服务器来发送信件,那么要确保你在这个邮件服务上有合法的注册用户。而且mailobj.From必须也是你自己。也就是说,全部是真实的信息。当然,我发现如果你可以改发件人的名称。比如,我们这样写

None.gif mailobj.From  =   " 干部<username@126.com> " ;

这样在SMTP服务商同样能验证通过,对于收件人来说在收到邮件时会看到比较个性的发件人名称(eyou会显示为“干部<username@126.com>”而网易会显示为“干部”)。当然不论怎么显示,你发信时的EMail地址肯定对方是能知道的,可以给你回复。再有,我想可能有些邮件服务器对一些敏感字符作了过滤,我遇上一次,记不得是哪家了。

接下来是用自己的服务器发信了,这个比较爽,也比较狠。
首先要保证你的服务器上有IIS,并运行和配置好“SMTP虚拟服务器”。
先来说说如何搞定SMTP吧[以WindowsXP IIS5 为例]:
1.开启IIS-SMTP服务
2.SMTP的右键菜单-属性-访问-中继
两种方法:选择“仅以下列表”添加“127.0.0.1”或者选择“仅以下列表除以”不添加任何IP[这样是允许全部用户,不建议这样,否则你的机器在网上运行一阵就让垃圾邮件给玩死了]。
邮件在发送、失败、等待队列……都在"C:\Inetpub\mailroot\"下的对应文件夹里。
好了,看代码:

None.gif private   void  SendMailByLocalhost()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif 
// 使用自己的虚拟邮件服务器
InBlock.gif
 MailMessage mailobj = new MailMessage();
InBlock.gif mailobj.From 
= "只要不空的就可以"// 只是说程序本身不会出错
InBlock.gif
 mailobj.To = "aim@eyou.com";
InBlock.gif mailobj.Subject 
= "测试";
InBlock.gif mailobj.BodyFormat 
= MailFormat.Text;
InBlock.gif mailobj.Body 
= "看到了么?";
InBlock.gif SmtpMail.SmtpServer 
= "localhost";
InBlock.gif SmtpMail.Send(mailobj);
ExpandedBlockEnd.gif}


代码很少,而且“发信的速度”明显比上一种方法要快,当然了,其实是提交到本机虚拟邮件服务发送队列而已。
这里要说的是,这种方法真的比较狠:
有的邮件系统根本不校验发送方的EMail是不是合法,mailobj.From填什么它都照单全收给自己的用户。
有的邮件系统则要看看发送方的EMail是不是合法,如果不合法有的会做垃圾邮件处理,有的会“消失”了(真的不知道去哪里了),有的会在本机的C:\Inetpub\mailroot\的子文件夹下滞留。sina的邮箱最怪,用这种方式不过From写的是真是假一概发不出,而且一直在Queue里挂着。比较郁闷……暂时还不明白为什么,也许别人看看是不是能试验成功。或是有什么解决办法记得告诉我。
是不是比较狠?我本人最烦的垃圾邮件就这样肆虐了!

转载于:https://www.cnblogs.com/dsclub/archive/2005/02/04/102082.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值