您的位置:首页 > 编程语言 > PHP开发

用vs .net 2005 beta2开发简单smtp邮件程序有感

2005-09-24 21:37 519 查看
最近工作上需要给大量邮箱发email,每封信内容还不完全一样.为了偷懒,研究了一下.net2.0的System.Net.Mail ,发现跟.net1.0版本有不同.
要实现smtp发信太简单了,这里不再班门弄斧,只是现在的smtp服务器本来就少,还基本都需要登陆认证,太麻烦,看了一些文章用MailMessage.Field.Add方法实现登录认证,找了半天.net2.0中没有该方法.
(注:"大文"兄对登录认证的问题作了更正,为了大家阅读方便,这里直接给出正确的方法:应该用:
SmtpClient smtpClient = new SmtpClient("xxx.xxx.xxx.xxx");
smtpClient.Credentials = new NetworkCredential("account", "password");
smtpClient.Timeout = 100;
smtpClient.EnableSsl = false;
)
要通过网上的公开smtp服务器发邮件是不可能了.(其实是可以的,只是较慢)
于是考虑通过本地smtp服务器来群发,还是想偷懒,找了几个免费的smtp本地服务器软件.其中magic winmail4.2和musemail server2.0两个软件顺利通过测试,前者不需要作任何配置,安装完毕就可以用SmtpClient.Send方法发送邮件,记住要把Host设成本地主机127.0.0.1 .美中不足是只能30天试用期,后者需要简单的配置(勾掉"强制进行SMTP发信认证",并将SMTP绑定到127.0.0.1),但是没有时间限制.
以下提供了关键代码.
private bool sendMail(string add, string from,string subject,string content, string attachmentadd)
{
try
{
MailMessage message = new MailMessage(from,add);
if (attachmentadd != "")
{
Attachment attachment = new Attachment(attachmentadd);
message.Attachments.Add(attachment);
}
if (content != "")
{
message.BodyEncoding = Encoding.GetEncoding("GBK");
message.Body = content;
}
if (subject != "")
{
message.Subject = subject;
}
SmtpClient sc = new SmtpClient("127.0.0.1",25);
sc.Send(message);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return false;
}
return true;

}

软件编出来后遇到了一个问题,就是中文主题再一些邮箱(如eyou)中显示为乱码,且无法通过设置Encoding来解决.还有一些邮箱发送后无法收到(qianlong,tom)各位大侠帮帮忙



,看看有没有办法解决.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: